Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
A miniport driver's HwScsiXxx routines can have any name chosen by the driver writer. DriverEntry is a required name.
Every SCSI miniport driver must have at least the following system-defined routines:
| Required Routine | Description |
|---|---|
| DriverEntry | Initializes the miniport driver |
| HwScsiFindAdapter | Determines how (or whether) driver-supported host bus adapter(s) (HBAs) are configured in the machine |
| HwScsiInitialize | Initializes supported HBA(s) |
| HwScsiStartIo | Starts operations on the miniport's HBA(s) for incoming requests |
| HwScsiResetBus | Handles bus reset requests |
Depending on each HBA and the driver designer, SCSI miniport drivers also have some or all of the following system-defined routines:
| Routine | Description |
|---|---|
| HwScsiInterrupt | Handles HBA-generated interrupts, which is optional if and only if the HBA does not generate interrupts so the miniport driver manages all I/O operations on its HBA by polling. However, using polling exclusively has an adverse effect on a miniport driver's performance and on its HBA's I/O throughput. Such a miniport driver should also have an HwScsiTimer routine. |
| HwScsiDisableInterruptsCallback and HwScsiEnableInterruptsCallback | Handle deferred I/O processing if interrupt-driven I/O operations take a long time. |
| HwScsiTimer | Times operations that require long delays on the HBA, or for any other purpose determined by the driver designer. A miniport driver should have a HwScsiTimer routine if it has no HwScsiInterrupt routine so it can use the HwScsiTimer routine for efficient polling of its HBA. |
| HwScsiDmaStarted | Required if the HBA uses a system DMA controller, to set up an HBA transfer after the system DMA controller has been programmed by the port driver. |
| HwScsiAdapterState | Optional if and only if the HBA has no BIOS or x86-real-mode driver and/or will never run in x86-only Microsoft Windows systems. |
| HwScsiAdapterControl | Required if the miniport driver supports Plug and Play. |
| HwScsiWmiExecuteMethod | Executes a method associated with a data block. This routine is optional. |
| HwScsiWmiFunctionControl | Enables or disables notification of events, and also enables or disables data collection for data blocks that the miniport driver designated as expensive to collect. Optional. |
| HwScsiWmiQueryDataBlock | Obtains either a single instance or all instances of a data block. Required. |
| HwScsiWmiQueryReginfo | Obtains information about the data and event blocks to be registered on behalf of the miniport driver by the SCSI port driver. Required. |
| HwScsiWmiSetDataBlock | Changes all data items in a single instance of a data block. Optional. |
| HwScsiWmiSetDataItem | Changes a single data item in an instance of a data block. Optional. |
Each of the preceding miniport driver routines, except DriverEntry, has a name chosen to describe its functionality. Except for DriverEntry, which is a required name for every miniport driver's initial entry point, names for miniport driver routines can be anything the driver writer chooses.
Error Handling in SCSI Miniport Drivers describes error-handling requirements for SCSI miniport drivers.