HW_INITIALIZATION_DATA


typedef struct _HW_INITIALIZATION_DATA {
    ULONG HwInitializationDataSize;
    INTERFACE_TYPE AdapterInterfaceType;
    PHW_INITIALIZE HwInitialize;
    PHW_STARTIO HwStartIo;
    PHW_INTERRUPT HwInterrupt;
    PHW_FIND_ADAPTER HwFindAdapter;
    PHW_RESET_BUS_BUS HwResetBus;
    PHW_DMA_STARTED HwDmaStarted;
    PHW_ADAPTER_STATE HwAdapterState;
    ULONG DeviceExtensionSize;
    ULONG SpecificLuExtensionSize;
    ULONG SrbExtensionSize;
    ULONG NumberOfAccessRanges;
    PVOID Reserved;
    BOOLEAN MapBuffers;
    BOOLEAN NeedPhysicalAddresses;
    BOOLEAN TaggedQueuing;
    BOOLEAN AutoRequestSense;
    BOOLEAN MultipleRequestPerLu;
    BOOLEAN ReceiveEvent;
} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA;

HW_INITIALIZATION_DATA provides hardware-specific initialization data for DriverEntry.

HwInitializationDataSize

Supplies the size of the structure, in bytes, as reported by the sizeof() function.

AdapterInterfaceType

Indicates the type of bus that the host bus adapter plugs into.

HwInitialize

Points to the HBA miniport driver's adapter initialization routine, which is a required entry point for all miniport drivers.

HwStartIo

Points to the HBA miniport driver's adapter start I/O routine. This is an optional entry point and it can be set to NULL.

HwInterrupt

Points to the HBA miniport driver's adapter interrupt service routine, a required entry point for all miniport drivers. For HBAs that don't use interrupts, this is an optional entry point; the field can be set to NULL.

HwFindAdapter

Points to the HBA miniport driver's find adapter routine, a required entry point for all miniport drivers.

HwResetBus

Points to the HBA miniport driver's reset SCSI bus routine, a required entry point for all miniport drivers.

HwDmaStarted

Points to the HBA miniport driver's DMA started routine. This is an optional entry point and it can be set to NULL for HBAs that are busmasters or that use PIO.

HwAdapterState

Points to the HBA miniport adapter routine. This is an optional entry point; the field can be set to NULL.

DeviceExtensionSize

Supplies the size, in bytes, required by the HBA miniport driver for its device extension. This storage is used by the HBA miniport driver to hold per-adapter information. This size is exclusive of the per-logical-unit data, defined next. A pointer to this storage is supplied with every call to the HBA miniport driver. This data is initialized to zero by the OS-specific port driver.

SpecificLuExtensionSize

Supplies the size, in bytes, of the per-logical-unit storage required by the HBA miniport driver. This data storage is used by the HBA miniport driver to hold per-logical-unit data. This data is initialized to zero by the OS-specific port driver. For some adapters this value can be zero.

SrbExtensionSize

Supplies the size, in bytes, of the per-request storage required by the HBA miniport driver. This data storage is used by the HBA miniport driver to hold data necessary to process the request. A pointer to this storage is in the SCSI_REQUEST_BLOCK. This storage is not initialized by the OS-specific port driver. This data is suitable for access by the host bus adapter hardware. For some adapters this value can be zero.

NumberOfAccessRanges

Supplies the number of access ranges used by the adapter. An access range is a range of either memory addresses or I/O port addresses. A typical card will use two ranges, one for the I/O ports and another for the memory address.

Reserved

Reserved for future use. Use of this member could cause problems in future releases.

MapBuffers

Indicates that all data buffer addresses must be mapped to virtual addresses for access by the HBA miniport driver.

NeedPhysicalAddresses

Indicates that the HBA miniport driver needs to translate extension addresses to physical addresses.

TaggedQueuing

Indicates whether the HBA miniport driver can support SCSI-II tagged queuing when TRUE.

AutoRequestSense

Indicates the host bus adapter can perform a request sense without a separate request. Only intelligent adapters with built-in firmware to perform the request sense should set this field to TRUE.

MultipleRequestPerLu

Indicates that the HBA miniport driver can queue multiple requests per logical unit. In particular, this is used by intelligent adapters that can queue the requests in the adapter. The SRB QueueTag field is used for these type of requests, but the SRB_FLAGS_QUEUE_ACTION_ENABLE is not set in the SrbFlags field. Note that the host bus adapter must support auto request sense to enable this feature.

ReceiveEvent

Indicates the adapter supports the receive event SRB for SCSI-II asynchronous events.

The miniport driver must initialize the HW_INITIALIZATION_DATA buffer with zeros before it sets the value of each field.

See also ACCESS_RANGE, DriverEntry, HwInitialize, SCSI_REQUEST_BLOCK, ScsiPortInitialize, ScsiPortInitialize