HW_INITIALIZATION_DATA Struktur (storport.h)
Die HW_INITIALIZATION_DATA (Storport) Struktur enthält Informationen speziell für jeden Miniporttreiber und die Hardware, die der Miniporttreiber verwaltet.
Syntax
typedef struct _HW_INITIALIZATION_DATA {
ULONG HwInitializationDataSize;
INTERFACE_TYPE AdapterInterfaceType;
PHW_INITIALIZE HwInitialize;
PHW_STARTIO HwStartIo;
PHW_INTERRUPT HwInterrupt;
PVOID HwFindAdapter;
PHW_RESET_BUS HwResetBus;
PHW_DMA_STARTED HwDmaStarted;
PHW_ADAPTER_STATE HwAdapterState;
ULONG DeviceExtensionSize;
ULONG SpecificLuExtensionSize;
ULONG SrbExtensionSize;
ULONG NumberOfAccessRanges;
PVOID Reserved;
UCHAR MapBuffers;
BOOLEAN NeedPhysicalAddresses;
BOOLEAN TaggedQueuing;
BOOLEAN AutoRequestSense;
BOOLEAN MultipleRequestPerLu;
BOOLEAN ReceiveEvent;
USHORT VendorIdLength;
PVOID VendorId;
union {
USHORT ReservedUshort;
USHORT PortVersionFlags;
};
USHORT DeviceIdLength;
PVOID DeviceId;
PHW_ADAPTER_CONTROL HwAdapterControl;
PHW_BUILDIO HwBuildIo;
PHW_FREE_ADAPTER_RESOURCES HwFreeAdapterResources;
PHW_PROCESS_SERVICE_REQUEST HwProcessServiceRequest;
PHW_COMPLETE_SERVICE_IRP HwCompleteServiceIrp;
PHW_INITIALIZE_TRACING HwInitializeTracing;
PHW_CLEANUP_TRACING HwCleanupTracing;
PHW_TRACING_ENABLED HwTracingEnabled;
ULONG FeatureSupport;
ULONG SrbTypeFlags;
ULONG AddressTypeFlags;
ULONG Reserved1;
PHW_UNIT_CONTROL HwUnitControl;
} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA;
Angehörige
HwInitializationDataSize
Gibt die Größe dieser Struktur in Byte an, wie von Sizeof(HW_INITIALIZATION_DATA) zurückgegeben wird. In Der Tat gibt dieses Element die Version dieser Struktur an, die vom Miniporttreiber verwendet wird. Die DriverEntry-Routine eines Miniporttreibers sollte den Wert dieses Mitglieds für den Porttreiber festlegen.
AdapterInterfaceType
Der Storport-Treiber unterstützt keine älteren Busse. Daher sind die meisten adapterschnittstellentypen, die mit dem SCSI-Porttreiber verwendet werden, für Storport ungültig. Insbesondere werden Isa, Eisa, MicroChannelund TurboChannel- nicht unterstützt. Im Gegensatz zum SCSI-Port-Fall ist ein Miniporttreiber, der mit dem Storport-Treiber arbeitet, nicht erforderlich, um Werte für die VendorIdLength, VendorId, DeviceIdLengthund DeviceId Member zu liefern.
HwInitialize
Zeiger auf die HwStorInitialize Routine des Miniporttreibers, bei der es sich um einen erforderlichen Einstiegspunkt für alle Miniporttreiber handelt.
HwStartIo
Zeiger auf die HwStorStartIo-Routine des Miniporttreibers, die für alle Miniporttreiber ein erforderlicher Einstiegspunkt ist.
HwInterrupt
Zeiger auf die HwStorInterrupt Routine des Miniporttreibers, bei der es sich um einen erforderlichen Einstiegspunkt für alle Miniporttreiber handelt.
HwFindAdapter
Zeiger auf den HwStorFindAdapter Routine des Miniporttreibers, der ein erforderlicher Einstiegspunkt für alle Miniporttreiber ist.
HwResetBus
Zeiger auf den HwStorResetBus Routine des Miniporttreibers, der ein erforderlicher Einstiegspunkt für alle Miniporttreiber ist.
HwDmaStarted
Der Storport-Treiber unterstützt keinen untergeordneten DMA-Modus. Daher muss dieses Element NULL-sein.
HwAdapterState
Der Storport-Treiber unterstützt keine Legacytreiber. Daher muss dieses Element NULL-sein.
DeviceExtensionSize
Gibt die Größe (in Byte) an, die vom Miniporttreiber für die Erweiterung pro Adaptergerät erforderlich ist. Ein Miniporttreiber verwendet seine Geräteerweiterung als Speicher für treiberbestimmte Hostbusadapterinformationen (HBA). Der betriebssystemspezifische Porttreiber initialisiert jede Geräteerweiterung einmal, wenn sie die Erweiterung zuerst zuweist und sie mit Nullen ausfüllt. Er übergibt einen Zeiger auf die HBA-spezifische Geräteerweiterung in jedem Aufruf eines Miniporttreibers. Die angegebene Größe enthält keinen Miniporttreiber, der pro Logischer Einheit angefordert wird. Die Größe des Speichers pro logischer Einheit wird über das feld SpecificLuExtensionSize angegeben, das weiter unten in diesem Thema beschrieben wird.
Obwohl SCSIPort die Geräteerweiterung immer dann neu initialisiert, wenn der Adapter angehalten wird und somit nachfolgende Aufrufe an HwScsiFindAdapter eine Null-Out-Geräteerweiterung erhalten, folgt Storport diesem Modell nicht. Stattdessen setzt Storport die Geräteerweiterung nur bei der ersten Zuordnung auf Null zurück. Daher erhält nur der erste Aufruf von HwStorFindAdapter für einen bestimmten Adapter eine Null-Geräteerweiterung. Nachfolgende Aufrufe an HwStorFindAdapter und andere Miniportfunktionen erhalten die Geräteerweiterung als zuletzt geändert vom Miniport. Auf diese Weise kann der Miniporttreiber wissen, wie der Adapter zwischen Plug- und Play (PnP) angehalten und neu gestartet wird, wodurch der Miniporttreiber möglicherweise das Initialisierungsverfahren optimieren kann.
SpecificLuExtensionSize
Gibt die Größe in Byte an, die der Miniporttreiber für den Speicher pro logischer Einheit benötigt, falls vorhanden. Ein Miniporttreiber kann seine LU-Erweiterungen als Speicher für treiberbestimmte Wahrheitseinheitsinformationen zu Peripheriegeräten auf dem Bus verwenden. Der Storport-Treiber initialisiert jede LU-Erweiterung, die sie mit Nullen zuordnet. Lassen Sie dieses Element auf Null festgelegt, wenn der Miniporttreiber keine Lu-Informationen verwaltet, für die er Speicher benötigt. Dieser Wert basiert auf der Annahme, dass die HBA 32-Bit-Adressen empfangen kann, unabhängig davon, was der Controller tatsächlich unterstützen kann. Wenn in den LUN- oder SRB-Erweiterungen zusätzlichen Speicherplatz benötigt wird, um 64-Bit-Adressen zu verarbeiten, müssen entsprechende Anpassungen an diesen Wert vorgenommen werden, bevor sie mit Routinen wie StorPortGetUncachedExtensionverwendet werden.
SrbExtensionSize
Gibt die Größe (in Byte) an, die der Miniporttreiber für den Speicher pro Anforderung benötigt, falls vorhanden. Ein Miniporttreiber kann SRB-Erweiterungen als Speicher für treiberbestimmte, anforderungsspezifische Informationen verwenden, z. B. Daten, die für die Verarbeitung einer bestimmten Anforderung erforderlich sind. Der Storport-Treiber initialisiert keine SRB-Erweiterungen, legt jedoch einen Zeiger auf diesen Speicher in jedem SRB fest, der an den Miniporttreiber gesendet wird. Auf eine SRB-Erweiterung kann über die HBA-Hardware sicher zugegriffen werden. Da Miniporttreiber, die mit dem Storport-Treiber arbeiten, Punkt-/Sammellisten unterstützen müssen, und die Listen pro SRB punkt/gather in der Regel in der SRB-Erweiterung zugeordnet werden, ist dieses Element selten null. Lassen Sie dieses Element auf Null festgelegt, wenn der Miniporttreiber keine SRB-Informationen pro SRB verwaltet, für die er Speicher benötigt.
Dieser Wert basiert auf der Annahme, dass die HBA 32-Bit-Adressen empfangen kann, unabhängig davon, was der Controller tatsächlich unterstützen kann. Wenn in den LUN- oder SRB-Erweiterungen zusätzlichen Speicherplatz benötigt wird, um 64-Bit-Adressen zu verarbeiten, müssen entsprechende Anpassungen an diesen Wert vorgenommen werden, bevor sie mit Routinen wie StorPortGetUncachedExtensionverwendet werden.
NumberOfAccessRanges
Gibt an, wie viele Zugriffsbereiche der Adapter verwendet. Jede ist ein Bereich von Speicheradressen oder E/A-Portadressen.
Reserved
Reserviert für die Systemverwendung und nicht für die Verwendung durch Miniporttreiber.
MapBuffers
Gibt an, ob der Storport-Treiber SRB-Datenpufferadressen system virtual addresses zuordnet. Der MapBuffers- Member kann einen der folgenden Werte aufweisen.
Wert | Bedeutung |
---|---|
STOR_MAP_NO_BUFFERS (0) | Ordnen Sie keine SRB mit Ausnahme von SRB_FUNCTION_IO_CONTROL und SRB_FUNCTION_WMI zu. |
STOR_MAP_ALL_BUFFERS (1) | Obsolet. Dieser Wert hat dieselbe Auswirkung wie STOR_MAP_NON_READ_WRITE_BUFFERS. |
STOR_MAP_NON_READ_WRITE_BUFFERS (2) | Ordnen Sie den Puffer für alle E/A-Vorgänge zu, mit Ausnahme von Lese- oder Schreibanforderungen. |
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE (3) | Ordnen Sie den Puffer für alle E/A-Vorgänge einschließlich Lese- und Schreibanforderungen zu. Dieser Wert ist gültig, beginnend mit Windows 8. |
NeedPhysicalAddresses
Muss auf TRUE-festgelegt sein. Ein Wert von TRUE gibt an, dass der Miniporttreiber bestimmte Adresstypen in physische Adressen übersetzen muss. Miniport-Treiber, die mit dem Storport-Treiber arbeiten, müssen Busmaster-DMA unterstützen, sodass sie immer für die Adressübersetzung erforderlich sind.
TaggedQueuing
Muss auf TRUE-festgelegt sein. Ein Wert von TRUE gibt an, dass der Miniporttreiber SCSI-markierte Warteschlange unterstützt. Alle Miniporttreiber, die mit dem Storport-Treiber arbeiten, müssen markierte Warteschlangen unterstützen.
AutoRequestSense
Muss TRUEsein. Ein Wert von TRUE gibt an, dass die HBA einen Anforderungsoptimierungsvorgang ausführen kann, ohne dass eine explizite Anforderung erforderlich ist. Alle Miniporttreiber, die mit dem Storport-Treiber arbeiten, müssen SCSI Auto-Request Sense unterstützen.
MultipleRequestPerLu
Muss auf TRUE-festgelegt sein. Ein Wert von TRUE gibt an, dass der Miniporttreiber mehrere Anforderungen pro logische Einheit in die Warteschlange stellen kann. Miniporttreiber, die mit dem Storport-Treiber arbeiten, müssen mehrere Anforderungen pro logische Einheit unterstützen.
ReceiveEvent
Der Storport-Treiber ignoriert dieses Element.
VendorIdLength
Der Storport-Treiber ignoriert dieses Element, da Miniporttreiber, die mit dem Storport-Treiber arbeiten, PnP unterstützen müssen.
VendorId
Der Storport-Treiber ignoriert dieses Element, da Miniporttreiber, die mit dem Storport-Treiber arbeiten, PnP unterstützen müssen.
ReservedUshort
PortVersionFlags
Flags, um unterstützte Features anzugeben.
DeviceIdLength
Der Storport-Treiber ignoriert dieses Element, da Miniporttreiber, die mit dem Storport-Treiber arbeiten, PnP unterstützen müssen.
DeviceId
Der Storport-Treiber ignoriert dieses Element, da Miniporttreiber, die mit dem Storport-Treiber arbeiten, PnP unterstützen müssen.
HwAdapterControl
Zeiger auf die HwStorAdapterControl Routine des Miniporttreibers. Dies ist eine erforderliche Routine, da Miniporttreiber, die mit dem Storport-Treiber arbeiten, PnP-Unterstützung erfordern.
HwBuildIo
Zeiger auf eine optionale HwStorBuildIo Routine, die der Porttreiber aufruft, um die nicht synchronisierte Verarbeitung durchzuführen, bevor die HwStorStartIo Routine des Miniporttreibers aufgerufen wird. Dieser Rückruf ist spezifisch für physische Miniports und sollte von virtuellen Miniports auf NULL festgelegt werden.
HwFreeAdapterResources
Ein Zeiger auf die HwStorFreeAdapterResources-Routine des virtuellen Miniporttreibers, bei dem es sich um einen erforderlichen Einstiegspunkt für alle virtuellen Miniporttreiber handelt. Dieser Rückruf ist spezifisch für virtuelle Miniports und wird für physische Miniports auf NULL- festgelegt.
Dieser Rückruf wird in Windows 8 hinzugefügt. Virtuelle Miniports für frühere Versionen von Windows sollten anstelle dieser Struktur VIRTUAL_HW_INITIALIZATION_DATA verwenden.
HwProcessServiceRequest
Ein Zeiger auf die HwStorProcessServiceRequest-Routine des virtuellen Miniporttreibers. Dieser Rückruf ist spezifisch für virtuelle Miniports und wird für physische Miniports auf NULL- festgelegt.
Dieser Rückruf wird in Windows 8 hinzugefügt. Virtuelle Miniports für frühere Versionen von Windows sollten anstelle dieser Struktur VIRTUAL_HW_INITIALIZATION_DATA verwenden.
HwCompleteServiceIrp
Ein Zeiger auf die HwStorCompleteServiceIrp Routine des virtuellen Miniporttreibers. Dieser Rückruf ist spezifisch für virtuelle Miniports und wird für physische Miniports auf NULL- festgelegt.
Dieser Rückruf wird in Windows 8 hinzugefügt. Virtuelle Miniports für frühere Versionen von Windows sollten anstelle dieser Struktur VIRTUAL_HW_INITIALIZATION_DATA verwenden.
HwInitializeTracing
Ein Zeiger auf die HwStorInitializeTracing-Routine des virtuellen Miniporttreibers. Dieser Rückruf ist spezifisch für virtuelle Miniports und wird für physische Miniports auf NULL- festgelegt.
Dieser Rückruf wird in Windows 8 hinzugefügt. Virtuelle Miniports für frühere Versionen von Windows sollten anstelle dieser Struktur VIRTUAL_HW_INITIALIZATION_DATA verwenden.
HwCleanupTracing
Ein Zeiger auf die HwStorCleanupTracing Routine des virtuellen Miniporttreibers. Dieser Rückruf ist spezifisch für virtuelle Miniports und wird für physische Miniports auf NULL- festgelegt.
Dieser Rückruf wird in Windows 8 hinzugefügt. Virtuelle Miniports für frühere Versionen von Windows sollten anstelle dieser Struktur VIRTUAL_HW_INITIALIZATION_DATA verwenden.
HwTracingEnabled
Ein Zeiger auf eine optionale HwStorTracingEnabled Routine, die der Porttreiber aufruft, um den Miniport darüber zu benachrichtigen, ob die Ablaufverfolgung aktiviert ist oder nicht.
FeatureSupport
Flags, die Features angeben, die vom Miniport unterstützt werden. FeatureSupport- wird auf eine Kombination dieser Werte festgelegt:
Wert | Bedeutung |
---|---|
STOR_FEATURE_VIRTUAL_MINIPORT (0x00000001) | Dies ist ein virtueller Miniporttreiber. |
STOR_FEATURE_ATA_PASS_THROUGH (0x00000002) | Der Miniport unterstützt DEN ATA-Durchlauf. |
STOR_FEATURE_FULL_PNP_DEVICE_CAPABILITIES (0x00000004) | Der Miniport bietet vollständige Einstellungen in der STOR_DEVICE_CAPABILITIES_EX Struktur. |
STOR_FEATURE_DUMP_POINTERS (0x00000008) | Der Miniport unterstützt die Dumppointer-SRBs. |
STOR_FEATURE_DEVICE_NAME_NO_SUFFIX (0x00000010) | Der Miniporttreiber möchte das Suffix "SCSI Typ Device" nicht als Teil des Anzeigenamens des Geräts verwenden. |
STOR_FEATURE_DUMP_RESUME_CAPABLE (0x00000020) | Die Miniport-Speicherabbildfunktion ist für die Fortsetzung aus dem Ruhezustand funktionsfähig. |
STOR_FEATURE_DEVICE_DESCRIPTOR_FROM_ATA_INFO_VPD (0x00000040) | Der Storport-Treiber initialisiert die STORAGE_DEVICE_DESCRIPTOR von der ATA Information VPD-Seite anstelle von UNTERSUCHUNGsdaten. |
STOR_FEATURE_EXTRA_IO_INFORMATION (0x00000080) | Der Miniporttreiber möchte SRBEX_DATA_IO_INFO in einem SRBEX,falls verfügbar. |
STOR_FEATURE_ADAPTER_CONTROL_PRE_FINDADAPTER (0x00000100) | Der Miniporttreiber kann adapterControl-Aufruf von Storport sicher verarbeiten, bevor HwFindAdapter empfangen wird. |
STOR_FEATURE_ADAPTER_NOT_REQUIRE_IO_PORT (0x00000200) | Der Miniporttreiber erfordert keine IO-Portressource für den Adapter. |
STOR_FEATURE_DUMP_16_BYTE_ALIGNMENT (0x00000400) | Der Miniporttreiber möchte, dass die HwDeviceExtension im Dumpmodus 16 Byte ausgerichtet ist. |
STOR_FEATURE_SET_ADAPTER_INTERFACE_TYPE (0x00000800) | Der Miniport möchte, dass Storport den Schnittstellentyp des Adapters festlegen soll. |
STOR_FEATURE_DUMP_INFO (0x00001000) | Der Miniporttreiber unterstützt die Speicherabbildinformationen-SRBs. |
STOR_FEATURE_DMA_ALLOCATION_NO_BOUNDARY (0x00002000) | Der Miniporttreiber unterstützt die Zuweisung von DMA an physischen Arbeitsspeicher ohne Grenzen. |
STOR_FEATURE_SUPPORTS_NVME_ADAPTER (0x00004000) | Der Miniporttreiber unterstützt NVMe-basierte Speicheradapter. |
STOR_FEATURE_REPORT_INTERNAL_DATA (0x00008000) | Der Miniporttreiber unterstützt die Berichterstellung interner Daten. |
STOR_FEATURE_EARLY_DUMP (0x00010000) | Der Miniporttreiber unterstützt die frühe Absturzabbildgenerierung. |
STOR_FEATURE_NVME_ICE (0x00020000) | Der Miniporttreiber unterstützt NVMe ICE. |
SrbTypeFlags
Flags, die die vom Miniport unterstützten SRB-Typen angeben. SrbTypeFlags auf 0 oder eine Kombination der folgenden Werte festgelegt ist:
Wert | Bedeutung |
---|---|
SRB_TYPE_FLAG_SCSI_REQUEST_BLOCK (0x1) | Der Miniport verwendet standard-SRBs. |
SRB_TYPE_FLAG_STORAGE_REQUEST_BLOCK (0x2) | Der Miniport unterstützt erweiterte SRBs. |
AddressTypeFlags
Die vom Miniport unterstützten Adressschemas. Derzeit wird das einzige Adressschema unterstützt, und der Miniport muss dieses Element auf ADDRESS_TYPE_FLAG_BTL8 festlegen.
Wert | Bedeutung |
---|---|
ADDRESS_TYPE_FLAG_BTL8 (0x1) | 8-Bit-Adressierung von Bus, Target und LUN (BTL). |
Reserved1
Reserviert, auf 0 festgelegt.
HwUnitControl
Ein Zeiger der HwStorUnitControl Routine des Miniporttreibers. Der Porttreiber ruft diese Routine mit einer Steuerungsanforderung für ein Speichergerät auf.
Bemerkungen
Jeder Storport Miniport-Treiber DriverEntry Routine muss StorPortInitialize aufrufen, nachdem der Miniporttreiber zuerst null 00 und dann die Member von HW_INITIALIZATION_DATAfestgelegt hat.
Anforderungen
Anforderung | Wert |
---|---|
Header- | storport.h (include Storport.h) |