You need to use the _IO() series of macros and the guidelines which are documented in the official ioctl-number documentation. The _IO macros are declared in ioctl.h. Most take a an 8-bit int to represent the type, an 8-bit int to represent the ioctl number and the data type if the data you intend to pass into the IOCTL call. Ideally, the type is unique que to your driver, however most numbers have already been assigned so this is difficult to do. The ioctl number is just to differentiate it from other numbers and may be assigned sequentially.
You can get more info from Chapter 6 of the LDD3.
Edit: Your comment leads me to believe you need a hard example. You shouldn't refer to an IOCTL number by it's hex value. Instead use the _IO() macros like so:
// The type for all of my IOCTL calls.
// This number is from 0 to 255.
// Does not conflict with any number assignments in ioctl-number.txt.
#define MYIOC_TYPE 0xA4
// This ioctl takes no arguments. It does something in the driver
// without passing data back and forth. The ioctl number is from 0 to 255.
#define MYIOC_DOFOO _IO(MYIOC_TYPE, 0x00)
// This ioctl reads an integer value from the driver.
#define MYIOC_GETFOO _IOR(MYIOC_TYPE, 0x01, int)
// This ioctl writes an integer value from the driver.
#define MYIOC_SETFOO _IOW(MYIOC_TYPE, 0x02, int)
// This ioctl is confusing and is probably to be avoided.
// It writes a value to the driver while at the same time
// retrieves a value in the same pointer.
#define MYIOC_SETANDGETFOO _IOWR(MYIOC_TYPE, 0x03, int)
The macros encode the data in the ioctl number. So instead of referring to a single hex number it is much more appropriate to refer to an ioctl's type and number. These macros have the added benefit that they document what direction data goes to/from and what the type of that data is.
You can get more info from Chapter 6 of the LDD3.