estrutura HW_INITIALIZATION_DATA (storport.h)
A estrutura
Sintaxe
typedef struct _HW_INITIALIZATION_DATA {
ULONG HwInitializationDataSize;
INTERFACE_TYPE AdapterInterfaceType;
PHW_INITIALIZE HwInitialize;
PHW_STARTIO HwStartIo;
PHW_INTERRUPT HwInterrupt;
PVOID 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;
PHW_TRACING_ENABLED HwTracingEnabled;
ULONG FeatureSupport;
ULONG SrbTypeFlags;
ULONG AddressTypeFlags;
ULONG Reserved1;
PHW_UNIT_CONTROL HwUnitControl;
} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA;
Membros
HwInitializationDataSize
Especifica o tamanho dessa estrutura em bytes, conforme retornado por tamanhos de(HW_INITIALIZATION_DATA). Na verdade, esse membro indica a versão dessa estrutura que está sendo usada pelo driver de miniporto. A rotina DriverEntry de um driver de miniport deve definir o valor desse membro para o driver de porta.
AdapterInterfaceType
O motorista do Storport não dá suporte a ônibus herdados. Portanto, a maioria dos tipos de interface do adaptador usados com o driver de porta SCSI são inválidos para Storport. Em particular, não há suporte para Isa, Eisa, MicroChannele TurboChannel. Além disso, ao contrário do caso da porta SCSI, um driver de miniporto que funciona com o driver Storport não é necessário para fornecer valores para os membros VendorIdLength, VendorId, DeviceIdLengthe deviceId.
HwInitialize
Ponteiro para a rotina de HwStorInitialize do driver de miniporto, que é um ponto de entrada necessário para todos os drivers de miniporto.
HwStartIo
Ponteiro para a rotina
HwInterrupt
Ponteiro para a rotina de do
HwFindAdapter
Ponteiro para a rotina de HwStorFindAdapter do driver de miniporto, que é um ponto de entrada necessário para todos os drivers de miniporto.
HwResetBus
Ponteiro para a rotina de HwStorResetBus do driver de miniporto, que é um ponto de entrada necessário para todos os drivers de miniporto.
HwDmaStarted
O driver Storport não dá suporte ao DMA de modo subordinado. Portanto, esse membro deve ser NULL.
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 para sua extensão de dispositivo por adaptador. Um driver de miniporto usa sua extensão de dispositivo como armazenamento para informações do HBA (adaptador de barramento de host) determinado pelo driver. O driver de porta específico do sistema operacional inicializa cada extensão de dispositivo uma vez, quando aloca a extensão pela primeira vez e a preenche com zeros. Ele passa um ponteiro para a extensão de dispositivo específica do HBA em cada chamada para um driver de miniporto. O tamanho especificado não inclui nenhum armazenamento por unidade lógica solicitado pelo driver de miniport. O tamanho do armazenamento por unidade lógica é especificado por meio do campo SpecificLuExtensionSize, descrito posteriormente neste tópico.
Embora o SCSIPort re-inicialize a extensão do dispositivo sempre que o adaptador for interrompido e, portanto, chamadas subsequentes para HwScsiFindAdapter receber uma extensão de dispositivo zerada, o Storport não segue esse modelo. Em vez disso, o Storport redefine a extensão do dispositivo como zero somente quando ela é alocada pela primeira vez, portanto, somente a primeira chamada para HwStorFindAdapter para um determinado adaptador recebe uma extensão de dispositivo zerada. Chamadas subsequentes para HwStorFindAdapter e outras funções de miniporto recebem a extensão do dispositivo conforme modificado pela última vez pelo miniporto. Isso permite que o driver de miniporte mantenha o conhecimento sobre o estado do adaptador entre paradas e reinicializações do Plug and Play (PnP), possivelmente permitindo que o driver de miniporto otimize seu procedimento de inicialização.
SpecificLuExtensionSize
Especifica o tamanho em bytes exigido pelo driver de miniporto para seu armazenamento por unidade lógica, se houver. Um driver de miniporto pode usar suas extensões LU como armazenamento para informações de unidade lógica determinadas pelo driver sobre periféricos no barramento. O driver Storport inicializa cada extensão LU alocada com zeros. Deixe esse membro definido como zero se o driver de miniporto não mantiver informações por LU para as quais ele requer armazenamento. Esse valor baseia-se na suposição de que o HBA é capaz de receber endereços de 32 bits, independentemente do que o controlador possa realmente dar suporte. Se for necessário espaço adicional nas extensões LUN ou SRB para lidar com endereços de 64 bits, os ajustes apropriados deverão ser feitos nesse valor antes de usá-lo com rotinas como StorPortGetUncachedExtension.
SrbExtensionSize
Especifica o tamanho, em bytes, exigido pelo driver de miniporto para seu armazenamento por solicitação, se houver. Um driver de miniporto pode usar extensões SRB como armazenamento para informações específicas de solicitação determinadas pelo driver, como dados necessários para processar uma solicitação específica. O driver Storport não inicializa extensões SRB, mas define um ponteiro para esse armazenamento em cada SRB que ele envia para o driver de miniporto. Uma extensão SRB pode ser acessada com segurança pelo hardware do HBA. Como os drivers de miniport que trabalham 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. Deixe esse membro definido como zero se o driver de miniporto não mantiver informações por SRB para as quais ele requer armazenamento.
Esse valor baseia-se na suposição de que o HBA é capaz de receber endereços de 32 bits, independentemente do que o controlador possa realmente dar suporte. Se for necessário espaço adicional nas extensões LUN ou SRB para lidar com endereços de 64 bits, os ajustes apropriados deverão ser feitos nesse valor antes de usá-lo com rotinas como StorPortGetUncachedExtension.
NumberOfAccessRanges
Especifica quantos intervalos de acesso o adaptador usa. Cada um é um intervalo de endereços de memória ou endereços de porta de E/S.
Reserved
Reservado para uso do sistema e não disponível para uso por drivers de miniporto.
MapBuffers
Indica se o driver storport mapeia endereços de buffer de dados SRB para endereços virtuais do sistema. O membro
Valor | Significado |
---|---|
STOR_MAP_NO_BUFFERS (0) | Não mapeie para nenhum SRB, exceto SRB_FUNCTION_IO_CONTROL e SRB_FUNCTION_WMI. |
STOR_MAP_ALL_BUFFERS (1) | Obsoleto. Esse valor tem o mesmo efeito que STOR_MAP_NON_READ_WRITE_BUFFERS. |
STOR_MAP_NON_READ_WRITE_BUFFERS (2) | Mapeie o buffer para todas as E/S, exceto para solicitações de leitura ou gravação. |
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE (3) | Mapeie o buffer para todas as E/S, incluindo solicitações de leitura e gravação. Esse valor é válido a partir do Windows 8. |
NeedPhysicalAddresses
Deve ser definido como true. Um valor de verdadeiro indica que o driver de miniporto deve traduzir determinados tipos de endereços para endereços físicos. Os motoristas de miniport que trabalham com o driver Storport devem dar suporte ao DMA mestre do ônibus, portanto, eles sempre serão obrigados a fazer a tradução de endereço.
TaggedQueuing
Deve ser definido como true. Um valor de VERDADEIRO indica que o driver de miniporto dá suporte à fila marcada por SCSI. Todos os drivers de miniport que trabalham com o driver Storport devem dar suporte à fila marcada.
AutoRequestSense
Deve ser VERDADEIRO. Um valor de TRUE indica que o HBA pode executar uma operação de sentido de solicitação sem exigir uma solicitação explícita para fazer isso. Todos os drivers de miniport que trabalham com o driver Storport devem dar suporte ao SCSI Auto-Request Sense.
MultipleRequestPerLu
Deve ser definido como true. Um valor de VERDADEIRO indica que o driver de miniporto pode enfileirar várias solicitações por unidade lógica. Os drivers de miniport que trabalham com o driver Storport devem dar suporte a várias solicitações por unidade lógica.
ReceiveEvent
O driver storport ignora esse membro.
VendorIdLength
O driver storport ignora esse membro, pois os drivers de miniporto que trabalham com o driver Storport devem dar suporte a PnP.
VendorId
O driver storport ignora esse membro, pois os drivers de miniporto que trabalham com o driver Storport devem dar suporte a PnP.
ReservedUshort
PortVersionFlags
Sinalizadores para indicar recursos com suporte.
DeviceIdLength
O driver storport ignora esse membro, pois os drivers de miniporto que trabalham com o driver Storport devem dar suporte a PnP.
DeviceId
O driver storport ignora esse membro, pois os drivers de miniporto que trabalham com o driver Storport devem dar suporte a PnP.
HwAdapterControl
Ponteiro para a rotina de HwStorAdapterControl
HwBuildIo
Ponteiro para um
HwFreeAdapterResources
Um ponteiro para a rotina de
Esse retorno de chamada é adicionado no Windows 8. Os miniportos virtuais para versões anteriores do Windows devem usar VIRTUAL_HW_INITIALIZATION_DATA em vez dessa estrutura.
HwProcessServiceRequest
Um ponteiro para a rotina de
Esse retorno de chamada é adicionado no Windows 8. Os miniportos virtuais para versões anteriores do Windows devem usar VIRTUAL_HW_INITIALIZATION_DATA em vez dessa estrutura.
HwCompleteServiceIrp
Um ponteiro para a rotina de do
Esse retorno de chamada é adicionado no Windows 8. Os miniportos virtuais para versões anteriores do Windows devem usar VIRTUAL_HW_INITIALIZATION_DATA em vez dessa estrutura.
HwInitializeTracing
Um ponteiro para a rotina de
Esse retorno de chamada é adicionado no Windows 8. Os miniportos virtuais para versões anteriores do Windows devem usar VIRTUAL_HW_INITIALIZATION_DATA em vez dessa estrutura.
HwCleanupTracing
Um ponteiro para a rotina de de
Esse retorno de chamada é adicionado no Windows 8. Os miniportos virtuais para versões anteriores do Windows devem usar VIRTUAL_HW_INITIALIZATION_DATA em vez dessa estrutura.
HwTracingEnabled
Um ponteiro para um opcional HwStorTracingEnabled rotina que o driver de porta chama para notificar o miniporto de se o rastreamento está habilitado ou não.
FeatureSupport
Sinalizadores que indicam recursos compatíveis com o miniporto. do FeatureSupport é definido como uma combinação desses valores:
Valor | Significado |
---|---|
STOR_FEATURE_VIRTUAL_MINIPORT (0x00000001) | Este é um driver de miniporto virtual. |
STOR_FEATURE_ATA_PASS_THROUGH (0x00000002) | O miniporto dá suporte à passagem do ATA. |
STOR_FEATURE_FULL_PNP_DEVICE_CAPABILITIES (0x00000004) | O miniporto fornece configurações completas em sua estrutura de STOR_DEVICE_CAPABILITIES_EX. |
STOR_FEATURE_DUMP_POINTERS (0x00000008) | O miniporto dá suporte aos SRBs do ponteiro de despejo. |
STOR_FEATURE_DEVICE_NAME_NO_SUFFIX (0x00000010) | O driver de miniporto não deseja que o sufixo "SCSI tipo Dispositivo" como parte do nome amigável do dispositivo. |
STOR_FEATURE_DUMP_RESUME_CAPABLE (0x00000020) | A funcionalidade de despejo do miniporto é funcional para retomar da hibernação. |
STOR_FEATURE_DEVICE_DESCRIPTOR_FROM_ATA_INFO_VPD (0x00000040) | O driver Storport inicializa o STORAGE_DEVICE_DESCRIPTOR da página VPD de Informações do ATA em vez de dados INQUIRY. |
STOR_FEATURE_EXTRA_IO_INFORMATION (0x00000080) | O driver de miniporto deseja SRBEX_DATA_IO_INFO em um SRBEX, se disponível. |
STOR_FEATURE_ADAPTER_CONTROL_PRE_FINDADAPTER (0x00000100) | O driver de miniporto pode processar com segurança a chamada AdapterControl de Storport antes de receber HwFindAdapter. |
STOR_FEATURE_ADAPTER_NOT_REQUIRE_IO_PORT (0x00000200) | O driver de miniporto não requer recurso de Porta de E/S para seu adaptador. |
STOR_FEATURE_DUMP_16_BYTE_ALIGNMENT (0x00000400) | O driver de miniporto deseja que seu HwDeviceExtension seja alinhado com 16 bytes no modo de despejo. |
STOR_FEATURE_SET_ADAPTER_INTERFACE_TYPE (0x00000800) | O miniporto deseja que o Storport defina o tipo de interface do adaptador. |
STOR_FEATURE_DUMP_INFO (0x00001000) | O driver de miniporto dá suporte aos SRBs de informações de despejo. |
STOR_FEATURE_DMA_ALLOCATION_NO_BOUNDARY (0x00002000) | O driver de miniporto dá suporte para alocar DMA à memória física sem limites. |
STOR_FEATURE_SUPPORTS_NVME_ADAPTER (0x00004000) | O driver de miniporto dá suporte a adaptadores de armazenamento baseados em NVMe. |
STOR_FEATURE_REPORT_INTERNAL_DATA (0x00008000) | O driver de miniporto dá suporte ao relatório de dados internos. |
STOR_FEATURE_EARLY_DUMP (0x00010000) | O driver de miniporto dá suporte à geração inicial de despejo de memória. |
STOR_FEATURE_NVME_ICE (0x00020000) | O driver de miniporto dá suporte ao NVMe ICE. |
SrbTypeFlags
Sinalizadores que indicam os tipos SRB compatíveis com o miniporto. SrbTypeFlags é definido como 0 ou uma combinação dos seguintes valores:
Valor | Significado |
---|---|
SRB_TYPE_FLAG_SCSI_REQUEST_BLOCK (0x1) | O miniporto usa SRBs padrão. |
SRB_TYPE_FLAG_STORAGE_REQUEST_BLOCK (0x2) | O miniporto dá suporte a SRBs estendidos. |
AddressTypeFlags
Os esquemas de endereço compatíveis com o miniporto. Atualmente, há suporte para o único esquema de endereço e o miniporto deve definir esse membro como ADDRESS_TYPE_FLAG_BTL8.
Valor | Significado |
---|---|
ADDRESS_TYPE_FLAG_BTL8 (0x1) | Endereçamento de 8 bits de Barramento, Destino e LUN (BTL). |
Reserved1
Reservado, definido como 0.
HwUnitControl
Um ponteiro da rotina de
Observações
A rotina
Requisitos
Requisito | Valor |
---|---|
cabeçalho | storport.h (inclua Storport.h) |