VIRTUAL_HW_INITIALIZATION_DATA-Struktur (storport.h)
Die VIRTUAL_HW_INITIALIZATION_DATA-Struktur enthält Informationen, die speziell für jeden virtuellen Miniporttreiber angegeben sind.
Syntax
typedef struct _VIRTUAL_HW_INITIALIZATION_DATA {
ULONG HwInitializationDataSize;
INTERFACE_TYPE AdapterInterfaceType;
PHW_INITIALIZE HwInitialize;
PHW_STARTIO HwStartIo;
PHW_INTERRUPT HwInterrupt;
PVIRTUAL_HW_FIND_ADAPTER 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;
} VIRTUAL_HW_INITIALIZATION_DATA, *PVIRTUAL_HW_INITIALIZATION_DATA;
Member
HwInitializationDataSize
Gibt die Größe dieser Struktur in Bytes an, wie von sizeof() zurückgegeben. Dieser Member gibt die Version dieser Struktur an, die vom virtuellen Miniporttreiber verwendet wird. Die DriverEntry-Routine eines virtuellen Miniporttreibers sollte den Wert dieses Elements für den Porttreiber festlegen.
AdapterInterfaceType
Bei virtuellen Storport-Miniporttreibern ist der Wert für AdapterInterfaceType fast immer intern. Dies liegt daran, dass der Storport-Treiber legacy-Busse nicht unterstützt.
Beachten Sie, dass aus diesem Grund die meisten Adapterschnittstellentypen, die mit dem SCSI-Porttreiber verwendet werden, für Storport-Treiber ungültig sind. Insbesondere unterstützt Storport folgendes nicht:
- Isa
- Eisa
- MicroChannel
- TurboChannel
Darüber hinaus ist im Gegensatz zum SCSI-Port ein virtueller Miniporttreiber, der mit dem Storport-Treiber arbeitet, nicht erforderlich, um Werte für die folgenden Member anzugeben:
- VendorIdLength
- VendorId
- DeviceIdLength
- DeviceId
HwInitialize
Ein Zeiger auf die HwStorInitialize-Routine des virtuellen Miniporttreibers, die ein erforderlicher Einstiegspunkt für alle virtuellen Miniporttreiber ist.
HwStartIo
Ein Zeiger auf die HwStorStartIo-Routine des virtuellen Miniporttreibers, die ein erforderlicher Einstiegspunkt für alle virtuellen Miniporttreiber ist.
HwInterrupt
Wird nicht verwendet. Virtuelle Miniporttreiber verarbeiten keine Interrupts.
HwFindAdapter
Ein Zeiger auf die VirtualHwStorFindAdapter-Routine des virtuellen Miniporttreibers, die ein erforderlicher Einstiegspunkt für alle virtuellen Miniporttreiber ist.
HwResetBus
Ein Zeiger auf die HwStorResetBus-Routine des virtuellen Miniporttreibers, die ein erforderlicher Einstiegspunkt für alle virtuellen Miniporttreiber ist.
HwDmaStarted
Wird nicht verwendet. Virtuelle Miniporttreiber führen keine DMA aus.
HwAdapterState
Der Storport-Treiber unterstützt keine Legacytreiber. Daher muss dieser Member NULL sein.
DeviceExtensionSize
Gibt die Größe in Byte an, die vom virtuellen Miniporttreiber für seine nicht ausgelagerte Geräteerweiterung pro Adapter benötigt wird. Ein virtueller Miniporttreiber verwendet seine Geräteerweiterung als Speicher für treiberbestimmte Adapterinformationen. Der betriebssystemspezifische Porttreiber initialisiert jede Geräteerweiterung, die er mit Nullen zuordnet, und übergibt bei den meisten Aufrufen des virtuellen Miniporttreibers einen Zeiger auf die adapterspezifische Geräteerweiterung. Die angegebene Größe enthält keinen virtuellen Miniporttreiber, der pro Logischer Einheitsspeicher angefordert wird.
SpecificLuExtensionSize
Gibt die Größe in Byte an, die vom virtuellen Miniporttreiber für den nicht ausgelagerten Speicher pro logischer Einheit (sofern vorhanden) erforderlich ist. Ein virtueller Miniporttreiber kann seine LU-Erweiterungen (Logical Unit) als Speicher für treiberbestimmte LU-Informationen zu Peripheriegeräten im virtuellen Bus verwenden. Der betriebssystemspezifische Porttreiber initialisiert jede LU-Erweiterung, die er ordnet, mit Nullen. Lassen Sie diesen Member auf 0 festgelegt, wenn der virtuelle Miniporttreiber keine Lu-Informationen verwaltet, für die er Speicher benötigt.
SrbExtensionSize
Gibt die Größe in Byte an, die vom virtuellen Miniporttreiber für den nicht ausgelagerten Speicher pro Anforderung erforderlich ist, falls vorhanden. Da virtuelle Miniporttreiber, die mit dem Storport-Treiber arbeiten, Scatter-/Gather-Listen unterstützen müssen und die Punkt-/Sammlungslisten pro SRB in der Regel in der SRB-Erweiterung zugeordnet werden, ist dieser Member selten null.
NumberOfAccessRanges
Wird nicht verwendet. Virtuelle Miniporttreiber unterstützen keine Hardware.
Reserved
Ist für das System reserviert.
MapBuffers
Name | BESCHREIBUNG |
---|---|
STOR_MAP_NO_BUFFERS | Ordnet den Puffer nur für SRB_FUNCTION_IO_CONTROL und SRB_FUNCTION_WMI zu. |
STOR_MAP_ALL_BUFFERS | Veraltet, gleiches Verhalten wie STOR_MAP_NON_READ_WRITE_BUFFERS. |
STOR_MAP_NON_READ_WRITE_BUFFERS | Ordnet den Puffer für E/A-Anforderungen mit Ausnahme von READ und WRITE zu. |
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE | Ordnet den Puffer für alle E/A-Anforderungen zu, einschließlich READ und WRITE. Miniporttreiber verwenden in der Regel diese Einstellung. |
NeedPhysicalAddresses
Wird nicht verwendet. Virtuelle Miniporttreiber unterstützen keine Hardware.
TaggedQueuing
Muss auf TRUE festgelegt werden. Der Wert TRUE gibt an, dass der virtuelle Miniporttreiber markierte Warteschlangen unterstützt.
AutoRequestSense
Muss auf TRUE festgelegt werden. Der Wert TRUE gibt an, dass der HBA einen Anforderungsoptimierungsvorgang ausführen kann, ohne dass hierfür eine explizite Anforderung erforderlich ist.
MultipleRequestPerLu
Muss auf TRUE festgelegt werden. Der Wert TRUE gibt an, dass der virtuelle Miniporttreiber mehrere Anforderungen pro logische Einheit (LU) in die Warteschlange stellen kann.
ReceiveEvent
Dieser Wert wird nicht mehr verwendet und kann entweder auf TRUE oder FALSE festgelegt werden.
VendorIdLength
Die Länge des Anbieterbezeichners in Bytes.
VendorId
Der Anbieterbezeichner.
ReservedUshort
Reserviert.
PortVersionFlags
Eine Bitmap mit Flags, die die Vom Porttreiber unterstützten Features angeben. Derzeit ist das einzige verfügbare Flag SP_VER_TRACE_SUPPORT, was angibt, dass der Porttreiber die Ablaufverfolgung unterstützt.
DeviceIdLength
Die Länge des Gerätebezeichners in Bytes.
DeviceId
Der Gerätebezeichner.
HwAdapterControl
Ein Zeiger auf die HwStorAdapterControl-Routine des virtuellen Miniporttreibers.
HwBuildIo
Dieser Member wird nicht verwendet.
HwFreeAdapterResources
Ein Zeiger auf die HwStorFreeAdapterResources-Routine des virtuellen Miniporttreibers, die ein erforderlicher Einstiegspunkt für alle virtuellen Miniporttreiber ist.
HwProcessServiceRequest
Ein Zeiger auf die HwStorProcessServiceRequest-Routine des virtuellen Miniporttreibers.
HwCompleteServiceIrp
Ein Zeiger auf die HwStorCompleteServiceIrp-Routine des virtuellen Miniporttreibers.
HwInitializeTracing
Ein Zeiger auf die HwStorInitializeTracing-Routine des virtuellen Miniporttreibers.
HwCleanupTracing
Ein Zeiger auf die HwStorCleanupTracing-Routine des virtuellen Miniporttreibers.
Hinweise
Wenn ein virtueller Miniporttreiber nur auf Windows 8 oder höher ausgeführt wird, sollte der Treiber anstelle von VIRTUAL_HW_INITIALIZATION_DATA die HW_INITIALIZATION_DATA-Struktur verwenden.
Anforderungen
Anforderung | Wert |
---|---|
Header | storport.h (Storport.h einschließen) |