estructura VIRTUAL_HW_INITIALIZATION_DATA (storport.h)
La estructura de VIRTUAL_HW_INITIALIZATION_DATA contiene información específica para cada controlador de minipuerto virtual.
Sintaxis
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;
Miembros
HwInitializationDataSize
Especifica el tamaño de esta estructura en bytes, tal y como devuelve sizeof(). Este miembro indica la versión de esta estructura que usa el controlador de miniporte virtual. Una rutina driver's DriverEntry del controlador virtual debe establecer el valor de este miembro para el controlador de puerto.
AdapterInterfaceType
En el caso de los controladores de miniport virtual storport, el valor de AdapterInterfaceType casi siempre será interno. Esto se debe a que el controlador storport no admite autobuses heredados.
Tenga en cuenta que, debido a esto, la mayoría de los tipos de interfaz de adaptador que se usan con el controlador de puerto SCSI no son válidos para los controladores storport. En concreto, Storport no admite:
- Isa
- Eisa
- MicroChannel
- TurboChannel
Además, a diferencia del caso del puerto SCSI, no se requiere un controlador de miniport virtual que funcione con el controlador Storport para proporcionar valores para los miembros siguientes:
- VendorIdLength
- VendorId
- DeviceIdLength
- DeviceId
HwInitialize
Puntero a la rutina HwStorInitialize del controlador de miniport virtual, que es un punto de entrada necesario para todos los controladores de minipuerto virtual.
HwStartIo
Puntero a la rutina HwStorStartIo del controlador de miniport virtual, que es un punto de entrada necesario para todos los controladores de minipuerto virtual.
HwInterrupt
No se usa. Los controladores de minipuerto virtual no procesan interrupciones.
HwFindAdapter
Puntero a la rutina VirtualHwStorFindAdapter del controlador de miniporte virtual, que es un punto de entrada necesario para todos los controladores de minipuerto virtual.
HwResetBus
Puntero a la rutina HwStorResetBus del controlador de miniporte virtual, que es un punto de entrada necesario para todos los controladores de minipuerto virtual.
HwDmaStarted
No se usa. Los controladores de minipuerto virtual no realizan DMA.
HwAdapterState
El controlador Storport no admite controladores heredados. Por lo tanto, este miembro debe ser NULL.
DeviceExtensionSize
Especifica el tamaño, en bytes, que requiere el controlador de miniporte virtual para su extensión de dispositivo no paginado por adaptador. Un controlador de miniporte virtual usa su extensión de dispositivo como almacenamiento para la información del adaptador determinado por el controlador. El controlador de puerto específico del sistema operativo inicializa cada extensión de dispositivo que asigna con ceros y pasa un puntero a la extensión de dispositivo específica del adaptador en la mayoría de las llamadas al controlador de miniport virtual. El tamaño especificado no incluye ningún almacenamiento de unidad lógica solicitado por controlador miniport virtual.
SpecificLuExtensionSize
Especifica el tamaño, en bytes, que requiere el controlador de miniporte virtual para su almacenamiento no paginado por unidad lógica, si existe. Un controlador de minipuerto virtual puede usar sus extensiones de unidad lógica (LU) como almacenamiento para la información de LU determinada por el controlador sobre periféricos en el bus virtual. El controlador de puerto específico del sistema operativo inicializa cada extensión de LU que asigna con ceros. Deje este miembro establecido en cero si el controlador de miniporte virtual no mantiene la información por LU para la que requiere almacenamiento.
SrbExtensionSize
Especifica el tamaño, en bytes, que requiere el controlador de miniporte virtual para su almacenamiento no paginado por solicitud, si existe. Dado que los controladores de minipuerto virtual que funcionan con el controlador storport deben admitir listas de dispersión y recopilación, y las listas de dispersión y recopilación por SRB normalmente se asignan en la extensión SRB, este miembro rara vez es cero.
NumberOfAccessRanges
No se usa. Los controladores de minipuerto virtual no admiten hardware.
Reserved
Reservado para uso del sistema.
MapBuffers
Nombre | Descripción |
---|---|
STOR_MAP_NO_BUFFERS | Solo asigna el búfer de SRB_FUNCTION_IO_CONTROL y SRB_FUNCTION_WMI. |
STOR_MAP_ALL_BUFFERS | Obsoleto, mismo comportamiento que STOR_MAP_NON_READ_WRITE_BUFFERS. |
STOR_MAP_NON_READ_WRITE_BUFFERS | Asigna el búfer para las solicitudes de E/S excepto READ y WRITE. |
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE | Asigna el búfer para todas las solicitudes de E/S, incluidas READ y WRITE. Los controladores de minipuerto normalmente usarán esta configuración. |
NeedPhysicalAddresses
No se usa. Los controladores de minipuerto virtual no admiten hardware.
TaggedQueuing
Debe establecerse en TRUE. Un valor de TRUE indica que el controlador de miniport virtual admite la puesta en cola etiquetada.
AutoRequestSense
Debe establecerse en TRUE. Un valor true indica que el HBA puede realizar una operación de detección de solicitudes sin necesidad de que una solicitud explícita lo haga.
MultipleRequestPerLu
Debe establecerse en TRUE. Un valor de TRUE indica que el controlador de minipuerto virtual puede poner en cola varias solicitudes por unidad lógica (LU).
ReceiveEvent
Este valor ya no se usa y se puede establecer en TRUE o FALSE.
VendorIdLength
Longitud, en bytes, del identificador del proveedor.
VendorId
Identificador del proveedor.
ReservedUshort
Reservado.
PortVersionFlags
Mapa de bits de marcas que indican las características que admite el controlador de puerto. Actualmente, la única marca disponible es SP_VER_TRACE_SUPPORT, lo que indica que el controlador de puerto admite el seguimiento.
DeviceIdLength
Longitud, en bytes, del identificador del dispositivo.
DeviceId
Identificador del dispositivo.
HwAdapterControl
Puntero a la rutina HwStorAdapterControl del controlador de miniport virtual.
HwBuildIo
Este miembro no se usa.
HwFreeAdapterResources
Puntero a la rutina HwStorFreeAdapterResources del controlador de miniporte virtual, que es un punto de entrada necesario para todos los controladores de minipuerto virtual.
HwProcessServiceRequest
Puntero a la rutina HwStorProcessServiceRequest del controlador de miniport virtual.
HwCompleteServiceIrp
Puntero a la rutina HwStorCompleteServiceIrp del controlador de miniporte virtual.
HwInitializeTracing
Puntero a la rutina HwStorInitializeTracing del controlador de miniporte virtual.
HwCleanupTracing
Puntero a la rutina HwStorCleanupTracing del controlador de miniporte virtual.
Comentarios
Si un controlador de minipuerto virtual solo se ejecutará en Windows 8 o posterior, el controlador debe usar la estructura HW_INITIALIZATION_DATA en lugar de VIRTUAL_HW_INITIALIZATION_DATA.
Requisitos
Requisito | Valor |
---|---|
Header | storport.h (incluya Storport.h) |