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:
1.Initialize a HW_INITIALIZATION_DATA structure on the stack with zeros.
2.Set the HwInitializationDataSize member to sizeof(HW_INITIALIZATION_DATA).
3.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)
4.Set up any driver-determined context data that the miniport’s HwScsiFindAdapter routine will use.
5.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.