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.