A.4.3.1 Calling ScsiPortXxx from HwScsiFindAdapter

Certain ScsiPortXxx routines can be called only from the miniport driver's HwScsiFindAdapter routine(s), in particular, the following:

·ScsiPortGetBusData to get BUS_DATA_TYPE-specific configuration information, such as bus-relative device memory (access) ranges, interrupt vector or IRQL, DMA channel or port, etc.

·ScsiPortValidateRange to verify that a miniport-supplied bus-relative access range has not already been claimed in the registry by another driver for its device

·ScsiPortGetDeviceBase to map the (bus-relative) "physical" address range for an HBA to a system-assigned logical address range that the driver can use to communicate with the HBA by calling the ScsiPortReadXxx and ScsiPortWriteXxx routines with the mapped logical range addresses

·ScsiPortFreeDeviceBase to release such a mapped range if HwScsiFindAdapter does not find an HBA it can support on a given I/O bus, as indicated by the PORT_CONFIGURATION_INFORMATION SystemIoBusNumber value

·ScsiPortGetUncachedExtension to allocate a DMA buffer shared between the system and a busmaster HBA

For more information about the PORT_CONFIGURATION_INFORMATION structure and these ScsiPortXxx routines, see also the Kernel-Mode Driver Reference.