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)

Consulte también

HwStorAdapterControl

HwStorCleanupTracing

HwStorCompleteServiceIrp

HwStorFreeAdapterResources

HwStorInitialize

HwStorInitializeTracing

HwStorProcessServiceRequest

HwStorResetBus

HwStorStartIo

VirtualHwStorFindAdapter