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) |