Device Request 0cH: IOCTL Output

Blk► Chr► IRW► 
 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
          Installable Device Drivers