A.4.2 SCSI Miniport Driver’s DriverEntry Routine
A DriverEntry routine is the initial entry point for most Windows NT
kernel-mode drivers and for every SCSI miniport driver. A miniport’s DriverEntry
routine is called with two input arguments of type PVOID and must do the
following:
-
Initialize a HW_INITIALIZATION_DATA structure on the stack with zeros.
-
Set the HwInitializationDataSize member to sizeof(HW_INITIALIZATION_DATA).
-
Set driver-specific and HBA-specific values in the HW_INITIALIZATION_DATA
members, including the miniport driver’s entry points. The following entry
points must be set:
-
HwScsiFindAdapter
-
HwScsiInitialize
-
HwScsiStartIo
-
HwScsiResetBus
The following entry points can be set to a driver-supplied routine or must be
set to NULL:
-
HwScsiInterrupt (NULL if the miniport uses polling exclusively)
-
HwScsiDmaStarted (NULL if the HBA uses PIO or is a busmaster)
-
HwScsiAdapterState (NULL if the miniport runs only on Windows NT platforms or
if it is designed to also run on x86-only Windows platforms but the HBA has
neither a BIOS nor x86-real-mode driver)
-
Set up any driver-determined context data that the miniport’s
HwScsiFindAdapter routine will use.
-
Call ScsiPortInitialize with the pointers that were input to the DriverEntry
routine, the address of the filled-in HW_INITIALIZATION_DATA, and the address
of the context data, if any.