A.2.1 Supporting I/O Requests

Like any SCSI class driver, an SFD is a standard higher-level driver with the following requirements common to all higher-level kernel-mode drivers:

·It must supply a set of Dispatch routines to which the I/O Manager and/or still higher-level drivers can send IRPs for appropriate I/O operations. An SFD must support the same set of IRP_MJ_XXX as the SCSI class driver for its type of device.

·For IRP_MJ_DEVICE_CONTROL requests, it must support as many of the class-driver-supported I/O control codes as its physical device can handle, and, if possible, emulate support for any remaining I/O control codes in the driver.

·It must have a DriverEntry routine and can have any other standard higher-level driver routine, such as Unload or IoCompletion routines, as necessary.

If its device has special features, an SFD can support a set of driver-defined I/O control codes in addition to the system-required set of device-type-specific I/O control codes for IRP_MJ_DEVICE_CONTROL requests.

For more information about required device-type-specific requests, including the IRP_MJ_DEVICE_CONTROL request, and about defining driver-specific I/O control codes, see the Kernel-Mode Driver Reference.