This tells driver to accept and act upon IOCTL commands or data.

Offset Size Contents
+0      1  bLen         14H (length of this request packet)
+1      1  bUnitNo      (not used)
+2      1  bCmd         0cH (command code)
+3      2  rStatus      OUTPUT: Device Status Word must fill before exit
+5H     8  res          (reserved)
+0dH     1  bRes2        (not used)
+0eH     4  pfBuffer     INPUT: buffer address
+12H     2  wSize        INPUT: size of IOCTL data
OUTPUT: number of bytes actually processed
20               size of this structure

rStatus  On exit, the driver must place a DevStatusWord here.  Always
set the Done bit (bit 8).  On an error, set the Done bit and
the Error bit (bit 15) and put a Device Error Code in the low

pfBuffer  on entry, this is the address of the IOCTL data.  It is the
address passed in DS:DX from DOS fn 4403H or 4405H.

wSize  on entry, this is the size of the IOCTL data being passed from
DOS.  It is the value passed in CX from DOS fn 4403H or 4405H.

On return, if you were unable to process all of the data, you
should indicate an error and set this to amount of data that
was actually processed.

Notes:   This is the device driver "catch point" for:
DOS Fn 4403H (IOCTL send control data to character device) and
DOS Fn 4405H (IOCTL send control data to block device)

  The layout of the data at pfBuffer is device-specific.

  Only drivers capable of IOCTL-processing need support this
request (see Device Attribute).

See Also: Device Requests
- -

Device Request 0cH: IOCTL Output