VIRTUAL_HW_INITIALIZATION_DATA Struktur (storport.h)
Die VIRTUAL_HW_INITIALIZATION_DATA-Struktur enthält Informationen speziell für jeden virtuellen Miniporttreiber.
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;
Angehörige
HwInitializationDataSize
Gibt die Größe dieser Struktur in Byte an, wie von Sizeof() zurückgegeben. Dieses Element gibt die Version dieser Struktur an, die vom virtuellen Miniporttreiber verwendet wird. Die DriverEntry Routine eines virtuellen Miniporttreibers sollte den Wert dieses Mitglieds für den Porttreiber festlegen.
AdapterInterfaceType
Für storport virtual miniport drivers, the value for AdapterInterfaceType will fast always be internal. Dies liegt daran, dass der Storport-Treiber ältere Busse nicht unterstützt.
Beachten Sie, dass 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
Im Gegensatz zum SCSI-Portfall ist ein virtueller Miniporttreiber, der mit dem Storport-Treiber arbeitet, nicht erforderlich, um Werte für die folgenden Member zu liefern:
- VendorIdLength-
- VendorId-
- DeviceIdLength-
- DeviceId-
HwInitialize
Ein Zeiger auf die HwStorInitialize Routine des virtuellen Miniporttreibers, bei dem es sich um einen erforderlichen Einstiegspunkt für alle virtuellen Miniporttreiber handelt.
HwStartIo
Ein Zeiger auf die HwStorStartIo-Routine des virtuellen Miniporttreibers, der ein erforderlicher Einstiegspunkt für alle virtuellen Miniporttreiber ist.
HwInterrupt
Wird nicht verwendet. Virtuelle Miniporttreiber verarbeiten keine Unterbrechungen.
HwFindAdapter
Ein Zeiger auf die VirtualHwStorFindAdapter Routine des virtuellen Miniporttreibers, bei dem es sich um einen erforderlichen Einstiegspunkt für alle virtuellen Miniporttreiber handelt.
HwResetBus
Ein Zeiger auf die HwStorResetBus Routine des virtuellen Miniporttreibers, bei dem es sich um einen erforderlichen Einstiegspunkt für alle virtuellen Miniporttreiber handelt.
HwDmaStarted
Wird nicht verwendet. Virtuelle Miniporttreiber führen keine DMA aus.
HwAdapterState
Der Storport-Treiber unterstützt keine Legacytreiber. Daher muss dieses Element NULL-sein.
DeviceExtensionSize
Gibt die Größe in Byte an, die vom virtuellen Miniporttreiber für die Erweiterung nicht ausgelagerter Geräte pro Adapter erforderlich ist. 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 einen Zeiger an die adapterspezifische Geräteerweiterung in den meisten Aufrufen des virtuellen Miniporttreibers. Die angegebene Größe enthält keinen virtuellen Miniporttreiber, der pro logischer Einheit angefordert wird.
SpecificLuExtensionSize
Gibt die Größe in Byte an, die vom virtuellen Miniporttreiber für den nicht ausgelagerten Speicher pro logischer Einheit 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 sie mit Nullen zuordnet. Lassen Sie dieses Mitglied auf Null 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 pro Anforderung nicht ausgelagerten Speicher erforderlich ist, falls vorhanden. Da virtuelle Miniporttreiber, die mit dem Storport-Treiber arbeiten, Punkt-/Erfassungslisten 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.
NumberOfAccessRanges
Wird nicht verwendet. Virtuelle Miniporttreiber unterstützen keine Hardware.
Reserved
Reserviert für die Systemverwendung.
MapBuffers
Name | Beschreibung |
---|---|
STOR_MAP_NO_BUFFERS | Ordnet nur Puffer für SRB_FUNCTION_IO_CONTROL und SRB_FUNCTION_WMI zu. |
STOR_MAP_ALL_BUFFERS | Veraltet, dasselbe Verhalten wie STOR_MAP_NON_READ_WRITE_BUFFERS. |
STOR_MAP_NON_READ_WRITE_BUFFERS | Ordnet 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 einschließlich READ und WRITE zu. Miniporttreiber verwenden diese Einstellung in der Regel. |
NeedPhysicalAddresses
Wird nicht verwendet. Virtuelle Miniporttreiber unterstützen keine Hardware.
TaggedQueuing
Muss auf TRUE-festgelegt sein. Ein Wert von TRUE gibt an, dass der virtuelle Miniporttreiber markierte Warteschlangen unterstützt.
AutoRequestSense
Muss auf TRUE-festgelegt sein. Ein Wert von TRUE gibt an, dass die HBA einen Anforderungsoptimierungsvorgang ausführen kann, ohne dass eine explizite Anforderung erforderlich ist.
MultipleRequestPerLu
Muss auf TRUE-festgelegt sein. Ein Wert von 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 auf 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
Dieses Element wird nicht verwendet.
HwFreeAdapterResources
Ein Zeiger auf die HwStorFreeAdapterResources-Routine des virtuellen Miniporttreibers, bei dem es sich um einen erforderlichen Einstiegspunkt für alle virtuellen Miniporttreiber handelt.
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.
Bemerkungen
Wenn ein virtueller Miniporttreiber nur unter Windows 8 oder höher ausgeführt wird, sollte der Treiber die HW_INITIALIZATION_DATA Struktur anstelle von VIRTUAL_HW_INITIALIZATION_DATAverwenden.
Anforderungen
Anforderung | Wert |
---|---|
Header- | storport.h (include Storport.h) |