Compartilhar via


estrutura PORT_CONFIGURATION_INFORMATION (storport.h)

PORT_CONFIGURATION_INFORMATION contém informações de configuração para um HBA (adaptador de barramento de host).

Sintaxe

typedef struct _PORT_CONFIGURATION_INFORMATION {
  ULONG                                  Length;
  ULONG                                  SystemIoBusNumber;
  INTERFACE_TYPE                         AdapterInterfaceType;
  ULONG                                  BusInterruptLevel;
  ULONG                                  BusInterruptVector;
  KINTERRUPT_MODE                        InterruptMode;
  ULONG                                  MaximumTransferLength;
  ULONG                                  NumberOfPhysicalBreaks;
  ULONG                                  DmaChannel;
  ULONG                                  DmaPort;
  DMA_WIDTH                              DmaWidth;
  DMA_SPEED                              DmaSpeed;
  ULONG                                  AlignmentMask;
  ULONG                                  NumberOfAccessRanges;
  ACCESS_RANGE( )                          *AccessRanges[];
  PVOID                                  MiniportDumpData;
  PVOID                                  Reserved;
  UCHAR                                  NumberOfBuses;
  CCHAR                                  InitiatorBusId[8];
  BOOLEAN                                ScatterGather;
  BOOLEAN                                Master;
  BOOLEAN                                CachesData;
  BOOLEAN                                AdapterScansDown;
  BOOLEAN                                AtdiskPrimaryClaimed;
  BOOLEAN                                AtdiskSecondaryClaimed;
  BOOLEAN                                Dma32BitAddresses;
  BOOLEAN                                DemandMode;
  UCHAR                                  MapBuffers;
  BOOLEAN                                NeedPhysicalAddresses;
  BOOLEAN                                TaggedQueuing;
  BOOLEAN                                AutoRequestSense;
  BOOLEAN                                MultipleRequestPerLu;
  BOOLEAN                                ReceiveEvent;
  BOOLEAN                                RealModeInitialized;
  BOOLEAN                                BufferAccessScsiPortControlled;
  UCHAR                                  MaximumNumberOfTargets;
  UCHAR                                  SrbType;
  UCHAR                                  AddressType;
  UCHAR                                  ReservedUchars[2];
  ULONG                                  SlotNumber;
  ULONG                                  BusInterruptLevel2;
  ULONG                                  BusInterruptVector2;
  KINTERRUPT_MODE                        InterruptMode2;
  ULONG                                  DmaChannel2;
  ULONG                                  DmaPort2;
  DMA_WIDTH                              DmaWidth2;
  DMA_SPEED                              DmaSpeed2;
  ULONG                                  DeviceExtensionSize;
  ULONG                                  SpecificLuExtensionSize;
  ULONG                                  SrbExtensionSize;
  UCHAR                                  Dma64BitAddresses;
  BOOLEAN                                ResetTargetSupported;
  UCHAR                                  MaximumNumberOfLogicalUnits;
  BOOLEAN                                WmiDataProvider;
  STOR_SYNCHRONIZATION_MODEL             SynchronizationModel;
  PHW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE HwMSInterruptRoutine;
  INTERRUPT_SYNCHRONIZATION_MODE         InterruptSynchronizationMode;
  MEMORY_REGION                          DumpRegion;
  ULONG                                  RequestedDumpBufferSize;
  BOOLEAN                                VirtualDevice;
  UCHAR                                  DumpMode;
  UCHAR                                  DmaAddressWidth;
  ULONG                                  ExtendedFlags1;
  ULONG                                  MaxNumberOfIO;
  ULONG                                  MaxIOsPerLun;
  ULONG                                  InitialLunQueueDepth;
  ULONG                                  BusResetHoldTime;
  ULONG                                  FeatureSupport;
} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;

Membros

Length

Tamanho, em bytes, da estrutura PORT_CONFIGURATION_INFORMATION . Inicializado pelo driver storport, esse membro também serve como a versão da estrutura.

SystemIoBusNumber

Número atribuído pelo sistema do barramento de E/S ao qual o HBA está conectado. Os drivers de miniporta não devem modificar esse membro. Seu valor é atribuído pelo sistema porque a plataforma pode ter vários barramentos de E/S do AdapterInterfaceType especificado.

AdapterInterfaceType

A interface de barramento de E/S. O Storport inicializa esse membro para o valor especificado pelo driver de miniport no HW_INITIALIZATION_DATA estrutura. Os drivers de miniporta não devem modificar esse membro.

BusInterruptLevel

O nível de solicitação de interrupção relativa ao barramento. O Storport não faz suposições sobre o uso de interrupção do HBA, portanto, o valor padrão é zero. O Storport inicializa esse membro e os drivers de miniporta não devem modificá-lo.

BusInterruptVector

O vetor relativo ao barramento retornado pelo HBA. O Storport não faz suposições sobre o uso de interrupção do HBA, portanto, o valor padrão é zero. Esse membro é irrelevante para os drivers que configuram o membro BusInterruptLevel para seus HBAs. É pertinente para HBAs em tipos de ônibus de E/S que usam vetores de interrupção, como PCIBus. O Storport inicializa esse membro e os drivers de miniporta não devem modificá-lo.

InterruptMode

Especifica se o HBA usa interrupções LevelSensitive ou Latched (às vezes chamadas de "gatilho de borda"). O Storport inicializa esse membro com um valor apropriado para o barramento e o dispositivo , por exemplo, LevelSensitive para PCIBus. O Storport inicializa esse membro e os drivers de miniporta não devem modificá-lo.

MaximumTransferLength

Número máximo de bytes que o HBA pode transferir em uma única operação de transferência. Por padrão, o valor desse membro é SP_UNINITIALIZED_VALUE, o que indica um tamanho de transferência máximo ilimitado. Se o HBA tiver suporte de transferência mais limitado, um driver de miniporto deverá redefinir esse membro de acordo com a capacidade de transferência do HBA. Se a rotina HwStorInterrupt de um driver de miniporta não puder desabilitar interrupções no HBA, esse membro poderá ser ajustado durante o desenvolvimento do driver para garantir que o tempo gasto no ISR do driver de miniporto não degrade o desempenho geral do sistema.

NumberOfPhysicalBreaks

Número máximo de páginas físicas que o adaptador de armazenamento pode gerenciar em uma única transferência (em outras palavras, a extensão de seu suporte de dispersão/coleta). Por padrão, o valor desse membro é 0x11. O driver de miniporta deve redefinir esse membro de acordo com a funcionalidade do adaptador de armazenamento.

DmaChannel

O canal DMA usado por um HBA subordinado. Por padrão, o valor desse membro é SP_UNINITIALIZED_VALUE. O Storport inicializa esse membro e os drivers de miniporta não devem modificá-lo.

DmaPort

A porta DMA usada por um HBA subordinado. Por padrão, o valor desse membro é SP_UNINITIALIZED_VALUE. O Storport inicializa esse membro e os drivers de miniporta não devem modificá-lo.

DmaWidth

A largura das transferências de DMA se o HBA usar DMA. Por padrão, o valor desse membro é zero. O Storport inicializa esse membro e os drivers de miniporta não devem modificá-lo.

DmaSpeed

A velocidade de transferência de dados do AMD para HBAs Eisa . O Storport inicializa esse membro e os drivers de miniporta não devem modificá-lo.

AlignmentMask

Máscara indicando as restrições de alinhamento para buffers exigidos pelo HBA para operações de transferência. Alguns exemplos de valores de máscara válidos são 0 (alinhado a bytes), 1 (alinhado à palavra), 3 (DWORD alinhado) e 7 (DWORD duplo alinhado). O driver de miniporta deve definir essa máscara se o HBA der suporte a dispersão/coleta. Os seguintes valores de máscara de alinhamento permitidos são definidos em wdm.h:

Valor Significado
FILE_BYTE_ALIGNMENT (0x00000000) Os dados são alinhados por bytes (sem requisitos de alinhamento para o dispositivo)
FILE_WORD_ALIGNMENT (0x00000001) Os dados devem ser alinhados em um limite de 2 bytes.
FILE_LONG_ALIGNMENT (0x00000003) Os dados devem ser alinhados em um limite de 4 bytes.
FILE_QUAD_ALIGNMENT (0x00000007) Os dados devem ser alinhados em um limite de 8 bytes.
FILE_OCTA_ALIGNMENT (0x0000000f) Os dados devem ser alinhados em um limite de 16 bytes.
FILE_32_BYTE_ALIGNMENT (0x0000001f) Os dados devem ser alinhados em um limite de 32 bytes.
FILE_64_BYTE_ALIGNMENT (0x0000003f) Os dados devem ser alinhados em um limite de 64 bytes.
FILE_128_BYTE_ALIGNMENT (0x0000007f) Os dados devem ser alinhados em um limite de 128 bytes.
FILE_256_BYTE_ALIGNMENT (0x000000ff) Os dados devem ser alinhados em um limite de 256 bytes.
FILE_512_BYTE_ALIGNMENT (0x000001ff) Os dados devem ser alinhados em um limite de 512 bytes.

NumberOfAccessRanges

Especifica o número de elementos AccessRanges na matriz.

AccessRanges

Ponteiro para uma matriz de elementos do tipo ACCESS_RANGE. O Storport aloca memória para os intervalos de acesso e inicializa esse membro. Os drivers de miniporta não devem modificar esse membro.

MiniportDumpData

Ponteiro para um contexto de despejo usado durante um crashdump ou uma hibernação.

Reserved

Reservado para uso do sistema (pré-Windows 8).

NumberOfBuses

Número de ônibus controlados pelo adaptador. Por padrão, o valor desse membro é zero. Esse membro tem um valor máximo de SCSI_MAXIMUM_BUSES_PER_ADAPTER. Esse membro está disponível a partir de Windows 8.

InitiatorBusId[8]

A ID do barramento iniciador. Se o InitiatorBusId[0] de entrada tiver o valor SP_UNINITIALIZED_VALUE, o driver de miniporto poderá atribuir um valor padrão se o HBA não exigir o uso de valores específicos determinados consultando o HBA. Caso contrário, o driver de miniporta deve usar qualquer valor diferente de zero atribuído pelo driver de porta, se possível. Normalmente, esse valor é limitado pelo valor definido para MaximumNumberOfTargets.

ScatterGather

Quando TRUE, o HBA dá suporte a dispersão/coleta. O Storport inicializa esse membro como TRUE porque seus drivers de miniporto devem dar suporte a dispersão/coleta. Os drivers de miniport que funcionam com o Storport não devem modificar esse valor. (OBSERVAÇÃO: em versões do Windows anteriores ao Windows Server 2008 R2 e Windows 7, esse membro é definido como FALSE. Nesse caso, os drivers de miniporto devem definir esse membro como TRUE. Não definir esse membro como TRUE fará com que o dispositivo HBA falhe ao iniciar.)

Master

Quando TRUE, o HBA é um barramento master. O Storport inicializa esse membro como TRUE porque seus drivers de miniporto devem dar suporte ao DMA de masterização de barramento. Os drivers de miniport que funcionam com o Storport não devem modificar esse valor. (OBSERVAÇÃO: em versões do Windows anteriores ao Windows Server 2008 R2 e Windows 7, esse membro é definido como FALSE. Nesse caso, os drivers de miniporto devem definir esse membro como TRUE. Não definir esse membro como TRUE fará com que o dispositivo HBA falhe ao iniciar.)

CachesData

Quando TRUE, o HBA armazena dados em cache ou mantém o estado armazenado em cache nos periféricos. Quando FALSE, o HBA não armazena dados em cache nem mantém o estado armazenado em cache nos periféricos. Por padrão, o valor desse membro é FALSE. Se isso for redefinido para TRUE, o Storport notificará o driver de miniporto quando determinados eventos do sistema ocorrerem, como liberações de cache do sistema de arquivos.

AdapterScansDown

O Storport ignora esse membro.

AtdiskPrimaryClaimed

O Storport não usa esse membro e seus drivers de miniporto não devem defini-lo.

AtdiskSecondaryClaimed

O Storport não usa esse membro e seus drivers de miniporto não devem defini-lo.

Dma32BitAddresses

Quando TRUE, o HBA tem 32 linhas de endereço e pode acessar a memória com endereços físicos maiores que 0x00FFFFFF. O Storport inicializa esse membro como TRUE, pois seus drivers de miniport devem dar suporte ao DMA de largura do barramento. Os drivers de miniporte não devem modificar esse valor, pois esse é o endereçamento de DMA padrão se um valor para Dma64BitAddresses não estiver definido. OBSERVAÇÃO: se apenas endereços de 32 bits forem compatíveis com o hardware do dispositivo, Dma64BitAddresses deverá ser definido como 0.

DemandMode

Indica se o controlador de DMA do sistema deve ser programado para operações de modo de demanda em vez de de ciclo único. O Storport inicializa esse membro como FALSE, pois ele não dá suporte ao DMA de modo subordinado. Os drivers de miniporte não devem modificar esse valor.

MapBuffers

Indica se o Storport mapeia endereços de buffer de dados SRB para endereços virtuais do sistema. O driver de miniporte define esse membro como um dos seguintes valores para controlar o mapeamento de endereços de buffer de dados SRB.

Valor Significado
STOR_MAP_NO_BUFFERS Mapeia o buffer somente para SRB_FUNCTION_IO_CONTROL e SRB_FUNCTION_WMI.
STOR_MAP_ALL_BUFFERS Obsoleto. Esse valor tem o mesmo efeito que STOR_MAP_NON_READ_WRITE_BUFFERS.
STOR_MAP_NON_READ_WRITE_BUFFERS Mapeia o buffer para toda a E/S, exceto para solicitações de leitura e gravação.
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE Mapeia o buffer para todas as solicitações de E/S, incluindo solicitações de leitura e gravação. Os miniportos que dão suporte à inicialização devem lidar com uma solicitação de leitura ou gravação de PAGE_SIZE de comprimento. Essas solicitações de leitura ou gravação sempre devem ser concluídas com êxito. O Storport pode não mapear o buffer em condições de memória baixa do sistema. Nesse caso, o membro DataBuffer no SRB será NULL.

NeedPhysicalAddresses

Quando TRUE, o driver de miniporto deve traduzir endereços virtuais para endereços físicos, conforme exigido pelo HBA. O Storport inicializa esse membro como TRUE, pois seus drivers de miniporto devem dar suporte a listas de dispersão/coleta. O miniporto não deve modificar esse valor.

TaggedQueuing

Quando TRUE, o HBA dá suporte à fila de várias solicitações com marcas SCSI. O Storport inicializa esse membro como TRUE porque seus drivers de miniporto devem dar suporte à fila marcada. Os drivers de miniporte não devem modificar esse valor.

AutoRequestSense

Quando TRUE, o HBA dá suporte ao sentido de solicitação automática. O Storport inicializa esse membro como TRUE porque seus drivers de miniport devem dar suporte ao sentido de solicitação automática. Os drivers de miniporte não devem modificar esse valor.

MultipleRequestPerLu

Quando TRUE, o HBA dá suporte a várias solicitações por unidade lógica. O Storport inicializa esse membro como TRUE porque seus drivers de miniporto devem dar suporte a várias solicitações emitidas para uma unidade lógica no momento. Os drivers de miniporte não devem modificar esse valor.

ReceiveEvent

O Storport não usa esse membro e seus drivers de miniporte não devem defini-lo.

RealModeInitialized

O Storport não usa esse membro e seus drivers de miniporte não devem defini-lo.

BufferAccessScsiPortControlled

O Storport não usa esse membro e seus drivers de miniporte não devem defini-lo.

MaximumNumberOfTargets

Número de periféricos de destino que o adaptador pode controlar. Por padrão, o valor desse membro é SCSI_MAXIMUM_TARGETS_PER_BUS. Um driver de miniporte pode redefinir esse membro para um valor menor se o HBA tiver recursos mais limitados ou para um valor maior, indicando que o HBA tem recursos de barramento estendidos. O valor máximo para esse membro é 255.

SrbType

Tipo de SRBs a serem enviados para o driver de miniporto. Disponível a partir de Windows 8. Isso é definido como um dos seguintes valores:

Valor Significado
SRB_TYPE_SCSI_REQUEST_BLOCK O driver de miniporto recebe SRBs padrão.
SRB_TYPE_STORAGE_REQUEST_BLOCK O driver de miniporto recebe SRBs estendidos.

AddressType

Tipo de endereço usado entre Storport e o driver de miniport. Disponível a partir de Windows 8. Isso pode ser definido com o seguinte valor:

Valor Significado
STORAGE_ADDRESS_TYPE_BTL8 Endereçamento de 8 bits de Barramento, Destino e LUN (BTL).

ReservedUchars[2]

Reservado para uso do sistema (pré-Windows 8).

SlotNumber

Reservado para uso pelo Storport. Os drivers de miniporte não devem modificar esse membro.

BusInterruptLevel2

Reservado para uso pelo Storport. Os drivers de miniporte não devem modificar esse membro.

BusInterruptVector2

Reservado para uso pelo Storport. Os drivers de miniporte não devem modificar esse membro.

InterruptMode2

Reservado para uso pelo Storport. Os drivers de miniporte não devem modificar esse membro.

DmaChannel2

Reservado para uso pelo Storport. Os drivers de miniporte não devem modificar esse membro.

DmaPort2

Reservado para uso pelo Storport. Os drivers de miniporte não devem modificar esse membro.

DmaWidth2

Reservado para uso pelo Storport. Os drivers de miniporte não devem modificar esse membro.

DmaSpeed2

Reservado para uso pelo Storport. Os drivers de miniporte não devem modificar esse membro.

DeviceExtensionSize

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 de HBA determinadas 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 de miniportor solicitado pelo driver por unidade lógica. O tamanho do armazenamento por unidade lógica é especificado por meio do campo SpecificLuExtensionSize , descrito posteriormente neste tópico.

O Storport não segue o modelo do SCSIPort (que inicializa novamente a extensão do dispositivo sempre que o adaptador é interrompido e, portanto, chamadas subsequentes para HwScsiFindAdapter recebem uma extensão de dispositivo zerada). Em vez disso, o Storport redefine a extensão do dispositivo como zero somente quando ela é alocada pela primeira vez, portanto, apenas 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 driver de miniporto. Isso permite que o driver de miniporte mantenha o conhecimento sobre o estado do adaptador entre paradas e reinicializações de Plug and Play (PnP), possivelmente permitindo que o driver de miniporte otimize seu procedimento de inicialização.

SpecificLuExtensionSize

Tamanho em bytes exigidos pelo driver de miniporto para seu armazenamento por unidade lógica, se houver, para lidar com transferências de dados maiores que 64K. O Storport inicializa esse membro para o valor no mesmo membro da estrutura HW_INITIALIZATION_DATA enviada na rotina StorPortInitialize .

Defina esse membro 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 devem ser feitos nesse valor antes de usá-lo com rotinas como StorPortGetUncachedExtension.

SrbExtensionSize

Tamanho em bytes exigidos pelo driver de miniporto para seu armazenamento por solicitação, se houver, para lidar com transferências de dados maiores que 64K. O Storport inicializa esse membro para o valor no mesmo membro da estrutura HW_INITIALIZATION_DATA enviada na rotina StorPortInitialize .

Defina esse membro antes de chamar StorPortGetUncachedExtension para alterar o tamanho do armazenamento por solicitação com base em NumberOfPhysicalBreaks. Defina esse membro 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 devem ser feitos nesse valor antes de usá-lo com rotinas como ScsiPortGetUncachedExtension.

Dma64BitAddresses

Se o hardware do dispositivo der suporte a apenas endereços de 32 bits, dma64BitAddresses deverá ser definido como 0. Se o dispositivo der suporte a endereços de 64 bits, esse campo indicará se o HBA é capaz de acessar endereços maiores que 4 GB.

Os adaptadores do Storport são necessários para dar suporte ao DMA de largura do barramento. Portanto, em um computador PAE ou de 64 bits, o Storport inicializa Dma64BitAddresses para SCSI_DMA64_SYSTEM_SUPPORTED indicando que o adaptador pode acessar o intervalo completo de endereços. Quando os drivers de miniporto detectam esse valor, eles devem retornar um dos valores na tabela a seguir no mesmo membro para indicar ao driver de porta que o driver de miniporto dá suporte ao DMA de 64 bits. Se o miniporto não fizer isso, isso poderá prejudicar severamente o desempenho do adaptador.

Valor Significado
SCSI_DMA64_MINIPORT_SUPPORTED O driver de miniporto dá suporte a endereços físicos de 64 bits para transferências de E/S.
SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED O driver de miniporte dá suporte ao endereçamento completo de 64 bits. Isso indica que as solicitações de E/S podem ter endereços > físicos de 4 GB. A extensão não em cache, SenseInfo e Extensão Srb podem existir acima de 4 GB. As alocações são restritas ao alinhamento de limites de 4 GB para impedir que cruzem um limite de 4 GB.
SCSI_DMA64_MINIPORT_FULL64BIT_NO_BOUNDARY_REQ_SUPPORTED O driver de miniporte dá suporte ao endereçamento completo de 64 bits. Isso indica que as solicitações de E/S podem ter endereços > físicos de 4 GB. A extensão não em cache, SenseInfo e Extensão Srb podem existir acima de 4 GB. As alocações não têm nenhum requisito de alinhamento de limite.
SCSI_DMA64_MINIPORT_64BIT_ONE_4GB_SUPPORTED O driver de miniporte dá suporte a endereçamento de 64 bits em uma única região de 4 GB. Isso indica que solicitações de E/S, extensão não cache, SenseInfo e Extensão Srb podem ter endereços > físicos de 4 GB em uma única região de 4 GB.

ResetTargetSupported

Obsoleto. Não use esse membro.

MaximumNumberOfLogicalUnits

Número máximo de unidades lógicas por destino que o HBA pode controlar. Por padrão, o valor desse membro é SCSI_MAXIMUM_LOGICAL_UNITS. Um driver de miniporte pode redefinir esse membro para um valor menor se o HBA tiver recursos mais limitados ou para um valor maior, indicando que o HBA tem recursos estendidos. O valor máximo para esse membro é SCSI_MAXIMUM_LUNS_PER_TARGET.

WmiDataProvider

Quando TRUE, o driver de miniporto responde às solicitações WMI (Instrumentação de Gerenciamento do Windows). O Storport inicializa esse membro como TRUE porque seus drivers de miniport devem dar suporte ao WMI. Além disso, espera-se que os miniportores para adaptadores de fibre channel ofereçam suporte à API HBA de Gerenciamento de SAN por meio do WMI, e os drivers de miniport para adaptadores RAID baseados em host são necessários para dar suporte à Interface de Gerenciamento raid.

Os drivers de miniporte não devem modificar esse valor.

SynchronizationModel

O modelo de sincronização de E/S compatível com o driver de miniport. Os valores possíveis são:

Valor Significado
StorSynchronizeFullDuplex O miniporto dá suporte ao modo full-duplex.
StorSynchronizeHalfDuplex O miniporto dá suporte ao modo meio duplex.

HwMSInterruptRoutine

Ponteiro para a rotina HwMSInterruptRoutine do driver de miniport, que é necessária para qualquer driver de miniporto de um HBA que gera MSIs (interrupções sinalizadas por mensagem). Um driver de miniporte define esse membro como NULL se o HBA não gerar MSIs.

InterruptSynchronizationMode

Um valor INTERRUPT_SYNCHRONIZATION_MODE que especifica o modo de sincronização de interrupção. O modo de sincronização de interrupção determina como o driver de porta sincroniza as interrupções sinalizadas pela mensagem.

DumpRegion

Uma estrutura MEMORY_REGION que descreve uma região de memória fisicamente contígua que os drivers de miniporto podem usar durante um despejo de memória ou hibernação.

RequestedDumpBufferSize

Tamanho em bytes da extensão não em cache a ser alocada para uso durante o despejo/hibernação.

VirtualDevice

Quando TRUE, não há hardware real por trás desse dispositivo (por exemplo, nenhum objeto DMA, interrupção, portas de E/S). O Storport se comporta de forma diferente em algumas circunstâncias quando dá suporte a um miniporto "virtual" em vez de um miniporto que está controlando o hardware real.

DumpMode

Indica o uso do miniporto durante o modo de despejo. Ele pode ter um dos valores a seguir.

Valor Significado
DUMP_MODE_CRASH O miniporto no modo de despejo é usado para um crashdump.
DUMP_MODE_HIBER O miniporto no modo de despejo é usado para hibernação.
DUMP_MODE_MARK_MEMORY O miniporto no modo de despejo é usado para marcar a memória necessária.
DUMP_MODE_RESUME O miniporto no modo de despejo é usado para um currículo da hibernação.

DmaAddressWidth

A largura do endereço DMA de um adaptador. Os miniportos devem especificar STOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIED em FeatureSupport ao fornecer esse valor. O valor especificado deve ser (0 <DmaAddressWidth<= 64). Esse campo pode ser usado a partir de Windows 10, versão 2004.

ExtendedFlags1

Reservado para uso do sistema.

MaxNumberOfIO

Número máximo de operações de E/S pendentes compatíveis com o HBA. O padrão é definido como 1000 pelo Storport. Se o HBA não oferecer suporte a 1000 operações de E/S pendentes, o miniporto deverá ajustar isso a um valor menor apropriado.

Se o HBA puder dar suporte a mais de 1000 operações de E/S pendentes, o miniporto poderá aumentar esse membro para qualquer valor compatível com o hardware do adaptador. Para permitir mais de 1.000 operações de E/S pendentes, o HBA deve dar suporte a um dos seguintes métodos de endereçamento de DMA de 64 bits, definidos no campo Dma64BitAddresses :

  • SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED
  • SCSI_DMA64_MINIPORT_FULL64BIT_NO_BOUNDARY_REQ_SUPPORTED
  • SCSI_DMA64_MINIPORT_64BIT_ONE_4GB_SUPPORTED

MaxIOsPerLun

Número máximo de solicitações de E/S com suporte em um LUN. Storport definirá isso como um valor padrão de 255. Se um LUN não oferecer suporte a 255 solicitações de E/S pendentes, o miniporto deverá ajustar esse membro a um valor menor apropriado. Esse membro deve ser <= MaxNumberOfIO. Para dar suporte a MaxIOsPerLun> 255, o campo SrbType deve ser definido como SRB_TYPE_STORAGE_REQUEST_BLOCK. Disponível a partir de Windows 8.

InitialLunQueueDepth

A profundidade inicial da fila de E/S do LUN. Storport defina isso como um valor padrão de 20 para miniportos físicos e 250 para miniportos virtuais. Esse membro ajusta a profundidade inicial da fila para todos os LUNs no adaptador. A profundidade da fila para um LUN individual é definida chamando StorPortSetDeviceQueueDepth. Normalmente, esse membro é definido com o mesmo valor que MaxIOsPerLun. Disponível a partir de Windows 8.

BusResetHoldTime

A quantidade de tempo, em microssegundos, para pausar o adaptador após a detecção de uma redefinição. Defina esse valor como 0 se nenhum tempo de espera for necessário após uma redefinição de barramento. Disponível a partir de Windows 8.

FeatureSupport

Recursos do Storport solicitados para o adaptador. Disponível a partir de Windows 8. Um driver de miniporte pode definir esse membro como uma máscara bit a bit de qualquer um dos seguintes valores:

Valor Significado
STOR_ADAPTER_FEATURE_DEVICE_TELEMETRY 0x00000001 O driver de miniporte dá suporte à telemetria do dispositivo de armazenamento.
STOR_ADAPTER_FEATURE_STOP_UNIT_DURING_POWER_DOWN 0x00000002 O miniporte solicita para receber o comando STOP_UNIT durante o desligamento do sistema.
STOR_ADAPTER_UNCACHED_EXTENSION_NUMA_NODE_PREFERRED 0x00000004 O driver de miniporto deseja que UncachedExtension seja alocado do nó NUMA do adaptador.
STOR_ADAPTER_DMA_V3_PREFERRED 0x00000008 O driver de miniporte prefere usar a API de kernel do DMA V3 para o adaptador.
STOR_ADAPTER_FEATURE_ABORT_COMMAND 0x00000010 O driver de miniporte dá suporte à capacidade de anular um comando pendente por meio de SRB_FUNCTION_ABORT_COMMAND.
STOR_ADAPTER_FEATURE_RICH_TEMPERATURE_THRESHOLD 0x00000020 O adaptador dá suporte a informações de limite de temperatura mais avançadas do que o definido na especificação SCSI SPC4.
STOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIED 0x00000040 O driver de miniporto especificou a largura do endereço DMA em DmaAddressWidth para o adaptador. Esse valor pode ser usado a partir de Windows 10, versão 2004.

Comentários

O driver Storport aloca e inicializa essa estrutura, fornece o máximo de informações de configuração específicas do HBA possível e passa a estrutura para a rotina HwStorFindAdapter do driver de miniport. O Storport não dá suporte a dispositivos não PnP, portanto, o HwStorFindAdapter não pesquisa o adaptador. Sua função principal é inicializar PORT_CONFIGURATION_INFORMATION.

Requisitos

Requisito Valor
Cabeçalho storport.h (incluem Srb.h, Storport.h, Strmini.h)

Confira também

ACCESS_RANGE

HW_INITIALIZATION_DATA

HwMSInterruptRoutine

HwStorFindAdapter

HwStorInterrupt

INTERRUPT_SYNCHRONIZATION_MODE

MEMORY_REGION

StorPortGetUncachedExtension

StorPortInitialize

StorPortSetDeviceQueueDepth