estrutura VIRTUAL_HW_INITIALIZATION_DATA (storport.h)
A estrutura VIRTUAL_HW_INITIALIZATION_DATA contém informações específicas para cada driver de miniporto virtual.
Sintaxe
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;
Membros
HwInitializationDataSize
Especifica o tamanho dessa estrutura em bytes, conforme retornado por sizeof(). Esse membro indica a versão dessa estrutura usada pelo driver de miniporto virtual. A rotina DriverEntry de um driver de miniporto virtual deve definir o valor desse membro para o driver de porta.
AdapterInterfaceType
Para drivers de miniportos virtuais storport, o valor de AdapterInterfaceType quase sempre será interno. Isso ocorre porque o motorista do Storport não dá suporte a ônibus herdados.
Observe que, devido a isso, a maioria dos tipos de interface do adaptador que são usados com o driver de porta SCSI são inválidos para drivers Storport. Em particular, o Storport não dá suporte a:
- Isa
- Eisa
- MicroChannel
- TurboChannel
Além disso, ao contrário do caso da porta SCSI, um driver de miniporto virtual que funciona com o driver Storport não é necessário para fornecer valores para os seguintes membros:
- VendorIdLength
- Vendorid
- DeviceIdLength
- DeviceId
HwInitialize
Um ponteiro para a rotina HwStorInitialize do driver de miniporto virtual, que é um ponto de entrada necessário para todos os drivers de miniportos virtuais.
HwStartIo
Um ponteiro para a rotina HwStorStartIo do driver de miniporto virtual, que é um ponto de entrada necessário para todos os drivers de miniportos virtuais.
HwInterrupt
Não usado. Os drivers de miniporta virtual não processam interrupções.
HwFindAdapter
Um ponteiro para a rotina VirtualHwStorFindAdapter do driver de miniporto virtual, que é um ponto de entrada necessário para todos os drivers de miniportos virtuais.
HwResetBus
Um ponteiro para a rotina HwStorResetBus do driver de miniporto virtual, que é um ponto de entrada necessário para todos os drivers de miniporte virtuais.
HwDmaStarted
Não usado. Os drivers de miniporta virtual não executam DMA.
HwAdapterState
O driver storport não dá suporte a drivers herdados. Portanto, esse membro deve ser NULL.
DeviceExtensionSize
Especifica o tamanho, em bytes, exigido pelo driver de miniporto virtual para sua extensão de dispositivo não paginado por adaptador. Um driver de miniporta virtual usa sua extensão de dispositivo como armazenamento para informações do adaptador determinadas pelo driver. O driver de porta específico do sistema operacional inicializa cada extensão de dispositivo alocada com zeros e passa um ponteiro para a extensão de dispositivo específica do adaptador na maioria das chamadas para o driver de miniporto virtual. O tamanho especificado não inclui nenhum armazenamento de miniporto virtual solicitado por unidade lógica.
SpecificLuExtensionSize
Especifica o tamanho, em bytes, exigido pelo driver de miniporto virtual para seu armazenamento não paginado por unidade lógica, se houver. Um driver de miniporta virtual pode usar suas extensões lu (unidade lógica) como armazenamento para informações lu determinadas pelo driver sobre periféricos no barramento virtual. O driver de porta específico do sistema operacional inicializa cada extensão LU alocada com zeros. Deixe esse membro definido como zero se o driver de miniporto virtual não mantiver informações por LU para as quais ele requer armazenamento.
SrbExtensionSize
Especifica o tamanho, em bytes, exigido pelo driver de miniporto virtual para o armazenamento não paginado por solicitação, se houver. Como os drivers de miniportos virtuais que funcionam com o driver Storport devem dar suporte a listas de dispersão/coleta e as listas de dispersão/coleta por SRB geralmente são alocadas na extensão SRB, esse membro raramente é zero.
NumberOfAccessRanges
Não usado. Os drivers de miniporta virtual não dão suporte a hardware.
Reserved
Reservado para uso do sistema.
MapBuffers
Nome | Descrição |
---|---|
STOR_MAP_NO_BUFFERS | Mapeia apenas o buffer para SRB_FUNCTION_IO_CONTROL e SRB_FUNCTION_WMI. |
STOR_MAP_ALL_BUFFERS | Obsoleto, mesmo comportamento que STOR_MAP_NON_READ_WRITE_BUFFERS. |
STOR_MAP_NON_READ_WRITE_BUFFERS | Mapeia o buffer para solicitações de E/S, exceto LEITURA e GRAVAÇÃO. |
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE | Mapeia o buffer para todas as solicitações de E/S, incluindo READ e WRITE. Normalmente, os drivers de miniporte usarão essa configuração. |
NeedPhysicalAddresses
Não usado. Os drivers de miniporta virtual não dão suporte a hardware.
TaggedQueuing
Deve ser definido como TRUE. Um valor true indica que o driver de miniporto virtual dá suporte à fila marcada.
AutoRequestSense
Deve ser definido como TRUE. Um valor true indica que o HBA pode executar uma operação de sensor de solicitação sem exigir uma solicitação explícita para fazê-lo.
MultipleRequestPerLu
Deve ser definido como TRUE. Um valor true indica que o driver de miniporto virtual pode enfileirar várias solicitações por LU (unidade lógica).
ReceiveEvent
Esse valor não é mais usado e pode ser definido como TRUE ou FALSE.
VendorIdLength
O comprimento, em bytes, do identificador do fornecedor.
VendorId
O identificador do fornecedor.
ReservedUshort
Reservado.
PortVersionFlags
Um bitmap de sinalizadores que indicam os recursos aos quais o driver de porta dá suporte. Atualmente, o único sinalizador disponível é SP_VER_TRACE_SUPPORT, o que indica que o driver de porta dá suporte ao rastreamento.
DeviceIdLength
O comprimento, em bytes, do identificador do dispositivo.
DeviceId
O identificador do dispositivo.
HwAdapterControl
Um ponteiro para a rotina HwStorAdapterControl do driver de miniporto virtual.
HwBuildIo
Este membro não é usado.
HwFreeAdapterResources
Um ponteiro para a rotina HwStorFreeAdapterResources do driver de miniporto virtual, que é um ponto de entrada necessário para todos os drivers de miniporte virtuais.
HwProcessServiceRequest
Um ponteiro para a rotina HwStorProcessServiceRequest do driver de miniporto virtual.
HwCompleteServiceIrp
Um ponteiro para a rotina HwStorCompleteServiceIrp do driver de miniport virtual.
HwInitializeTracing
Um ponteiro para a rotina HwStorInitializeTracing do driver de miniporto virtual.
HwCleanupTracing
Um ponteiro para a rotina HwStorCleanupTracing do driver de miniport virtual.
Comentários
Se um driver de miniporto virtual for executado somente em Windows 8 ou posterior, o driver deverá usar a estrutura HW_INITIALIZATION_DATA em vez de VIRTUAL_HW_INITIALIZATION_DATA.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | storport.h (inclua Storport.h) |