estrutura PORT_CONFIGURATION_INFORMATION (srb.h)

PORT_CONFIGURATION_INFORMATION (SCSI) contém informações de configuração para um HBA. O driver de porta específico do sistema operacional 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 HwScsiFindAdapter do driver de miniport. O driver de porta obtém algumas das informações para essa estrutura da estrutura de HW_INITIALIZATION_DATA do driver de miniport. A rotina HwScsiFindAdapter do driver de miniport é responsável por determinar se o driver de miniporto pode dar suporte ao HBA e, nesse caso, para preencher as informações restantes pertinentes na estrutura PORT_CONFIGURATION_INFORMATION.

Observação

O driver de porta SCSI e os modelos de driver de miniporta SCSI podem ser alterados ou indisponíveis no futuro. Em vez disso, use o driver Storport e os modelos de driver de miniporto storport .

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           Reserved;
  UCHAR           NumberOfBuses;
  UCHAR           InitiatorBusId[8];
  BOOLEAN         ScatterGather;
  BOOLEAN         Master;
  BOOLEAN         CachesData;
  BOOLEAN         AdapterScansDown;
  BOOLEAN         AtdiskPrimaryClaimed;
  BOOLEAN         AtdiskSecondaryClaimed;
  BOOLEAN         Dma32BitAddresses;
  BOOLEAN         DemandMode;
  BOOLEAN         MapBuffers;
  BOOLEAN         NeedPhysicalAddresses;
  BOOLEAN         TaggedQueuing;
  BOOLEAN         AutoRequestSense;
  BOOLEAN         MultipleRequestPerLu;
  BOOLEAN         ReceiveEvent;
  BOOLEAN         RealModeInitialized;
  BOOLEAN         BufferAccessScsiPortControlled;
  UCHAR           MaximumNumberOfTargets;
  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;
} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;

Membros

Length

Especifica o tamanho dessa estrutura em bytes. Na verdade, esse membro, que é sempre inicializado pelo driver de porta específico do sistema operacional, indica a versão dessa estrutura usada pelo driver de porta.

SystemIoBusNumber

Especifica o número atribuído pelo sistema do barramento de E/S ao qual o HBA está conectado. O driver de porta específico do sistema operacional sempre inicializa esse membro. Seu valor é atribuído pelo sistema porque a plataforma pode ter vários barramentos de E/S do AdapterInterfaceType fornecido.

AdapterInterfaceType

Identifica a interface do barramento de E/S. O driver de porta específico do sistema operacional sempre define esse membro como o valor especificado pelo driver de miniporta na estrutura de HW_INITIALIZATION_DATA (SCSI ).

BusInterruptLevel

Especifica o nível de solicitação de interrupção relativa ao barramento. O driver de porta específico do sistema operacional não faz suposições sobre o uso de interrupção do HBA, portanto, o valor padrão é zero. Dependendo do AdapterInterfaceType e HBA fornecidos, o valor definido para esse membro pode corresponder ao IRQL para o barramento, como para barramentos do tipo Isa e MicroChannel . Os drivers de HBAs Eisa devem definir esse valor como o IRQL relativo ao barramento para o HBA se o adaptador estiver configurado para interrupções sensíveis ao nível.

BusInterruptVector

Especifica o vetor relativo ao barramento retornado pelo HBA. O driver de porta específico do sistema operacional 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.

InterruptMode

Especifica se o HBA usa interrupções LevelSensitive ou Latched (às vezes chamadas de "gatilho de borda"). O driver de porta específico do sistema operacional inicializa esse membro com um valor apropriado para o barramento e o dispositivo , por exemplo, LevelSensitive para PCIBus. Os drivers de HBAs Eisa devem redefinir esse valor se o adaptador estiver configurado para interrupções sensíveis ao nível, assim como os drivers de HBAs em ônibus de E/S que usam interrupções sensíveis ao nível, como ônibus do tipo MicroChannel .

MaximumTransferLength

Especifica o 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 HwScsiInterrupt 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 faça com que o mouse "pule" ou a taxa de transferência serial/paralela caia para um nível perceptível pelo usuário.

NumberOfPhysicalBreaks

Especifica o número máximo de quebras entre intervalos de endereços que um buffer de dados pode ter se o HBA der suporte a dispersão/coleta. Em outras palavras, o número de listas de dispersão/coleta menos uma. Por padrão, o valor desse membro é SP_UNINITIALIZED_VALUE, o que indica que o HBA pode dar suporte a um número ilimitado de discontiguidades físicas. Se o driver de porta definir um valor para esse membro, o driver de miniporto poderá ajustar o valor mais baixo, mas não mais alto. Se esse membro for SP_UNINITIALIZED_VALUE, o driver de miniporto deverá redefinir esse membro de acordo com a capacidade de dispersão/coleta do HBA, sem representar nenhum suporte de dispersão/coleta.

DmaChannel

Especifica o canal DMA usado por um HBA subordinado. Por padrão, o valor desse membro é SP_UNINITIALIZED_VALUE. Se o HBA usar um controlador DMA do sistema e o AdapterInterfaceType fornecido for qualquer valor, exceto MicroChannel, o driver de miniporto deverá redefinir esse membro.

DmaPort

Especifica a porta DMA usada por um HBA subordinado. Por padrão, o valor desse membro é SP_UNINITIALIZED_VALUE. Se o HBA usar um controlador DMA do sistema e o AdapterInterfaceType fornecido for MicroChannel, o driver de miniporto deverá definir esse membro.

DmaWidth

Especifica a largura das transferências de DMA se o HBA usar DMA. Por padrão, o valor desse membro é zero. Se o HBA fizer o DMA, o driver de miniporto deverá redefinir esse membro para um dos seguintes: Width8Bits, Width16Bits ou Width32Bits.

DmaSpeed

Especifica a velocidade de transferência de dados do AMD para HBAs Eisa . Por padrão, o valor desse membro especifica o tempo de compatibilidade. Os valores aceitáveis para esse membro são qualquer um dos seguintes: Compatible, TypeA, TypeB ou TypeC.

AlignmentMask

Contém uma máscara que indica as restrições de alinhamento para buffers exigidos pelo HBA para operações de transferência. Os valores de máscara válidos também são restritos por características dos gerenciadores de memória em diferentes versões do Windows. Os valores de máscara permitidos no Windows 95 ou Windows 98 são 0 (alinhado a bytes), 1 (alinhado à palavra) ou 3 (DWORD alinhado). Em Windows NT e No Windows 2000, os 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.

NumberOfAccessRanges

Especifica o número de elementos AccessRanges na matriz, descrita a seguir. O driver de porta específico do sistema operacional sempre define esse membro como o valor passado na estrutura HW_INITIALIZATION_DATA quando o driver de miniporto chamado ScsiPortInitialize.

AccessRanges

Reserved

Reservado para uso do sistema e não disponível para uso por drivers de miniporta.

NumberOfBuses

Especifica o número de barramentos SCSI controlados pelo HBA. Por padrão, o valor desse membro é zero.

InitiatorBusId[8]

Indica a ID do barramento do iniciador. Se o InitiatorBusId[0] de entrada tiver o valor zero, 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. Cada driver de miniporto deve atualizar as especificações initiatorBusId para corresponder ao que seu HBA usa, se necessário, consultando o HBA para determinar os valores apropriados.

Um driver de miniporta deve definir uma entrada para cada barramento SCSI compatível com o HBA, conforme indicado pelo valor de NumberOfBuses.

ScatterGather

Indica quando TRUE o HBA dá suporte a dispersão/coleta. Quando FALSE , o HBA não dá suporte a dispersão/coleta. Por padrão, o valor desse membro é FALSE.

Master

Indica quando TRUE que o HBA é um master de ônibus. Quando FALSE, o HBA não é um master de ônibus. Por padrão, o valor desse membro é FALSE.

CachesData

Indica 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 driver de porta específico do sistema operacional notificará o driver de miniporto quando determinados eventos do sistema ocorrerem, como liberações de cache do sistema de arquivos e desligamento do sistema. Por exemplo, se um controlador no barramento espelhar dois discos, o driver de miniporta normalmente definirá esse membro como TRUE.

AdapterScansDown

Indica quando TRUE que o BIOS para o HBA verifica se há destinos de barramento SCSI de sete a zero. Quando FALSE, o BIOS para o HBA procura destinos de barramento SCSI, começando com uma ID zero e verificando para cima para (mas não incluindo) MaximumTargetIds. Por padrão, o valor de AdapterScansDown é FALSE.

AtdiskPrimaryClaimed

Indica quando TRUE que o intervalo de endereços de disco primário "AT" (compatível com WD1003), 0x1F0 para 0x1FF, foi reivindicado no registro por outro driver para seu dispositivo. O driver de porta específico do sistema operacional sempre inicializa esse membro. Se o valor de entrada desse membro for TRUE, um driver de miniporto deverá assumir que um driver já carregado reivindicou o intervalo de dispositivos. Se o valor de entrada for FALSE, um driver de miniporto poderá reivindicar o intervalo de endereços de um HBA que emula um controlador de disco "AT" e redefinir esse membro como TRUE, impedindo assim o acesso a esse intervalo pelo driver de disco "AT" ou por drivers de miniporto carregados posteriormente.

AtdiskSecondaryClaimed

Indica quando TRUE que o intervalo de endereços de disco AT secundário, 0x170 para 0x17F foi reivindicado no registro por outro driver para seu dispositivo. Quando FALSE , o intervalo de endereços de disco AT secundário não foi reivindicado no registro por outro driver. O driver de porta específico do sistema operacional sempre inicializa esse membro. Os drivers de miniport devem tratar esse membro como para AtdiskPrimaryClaimed.

Dma32BitAddresses

Indica quando TRUE o HBA tem 32 linhas de endereço e pode acessar a memória com endereços físicos maiores que 0x00FFFFFF. Quando FALSE , o HBA tem várias linhas de endereço DMA diferentes de 32. Por padrão, o valor desse membro é FALSE. Se o driver de miniporto definir Dma64BitAddresses, esse membro deverá ser FALSE.

DemandMode

Indica quando TRUE o controlador de DMA do sistema deve ser programado para o modo de demanda em vez de operações de ciclo único. Se o HBA não for um dispositivo subordinado, esse membro deverá ser FALSE.

MapBuffers

Indica quando TRUE os buffers de dados devem ser mapeados para intervalos de endereços virtuais do sistema. Quando FALSE , os buffers de dados não precisam ser mapeados para endereços virtuais do sistema. O driver de porta específico do sistema operacional sempre define esse membro como o valor passado na estrutura de HW_INITIALIZATION_DATA (SCSI) quando o driver de miniporto chamado ScsiPortInitialize. Um driver de miniporta pode redefinir esse valor para qualquer HBA específico que ele controle. Se FALSE, o driver de miniporto não deverá acessar Srb.DataBuffer diretamente.

NeedPhysicalAddresses

Indica quando TRUE o driver de miniporto deve traduzir endereços virtuais para endereços físicos, conforme exigido pelo HBA. Quando FALSE, o driver de miniporto não precisa traduzir endereços virtuais para endereços físicos. O driver de porta específico do sistema operacional sempre define esse membro como o valor passado na estrutura de HW_INITIALIZATION_DATA (SCSI) quando o driver de miniporto chamado ScsiPortInitialize. Um driver de miniporte pode redefinir esse valor para qualquer HBA específico que ele controla.

TaggedQueuing

Indica quando TRUE que o HBA dá suporte à fila de várias solicitações com marcas SCSI. Quando FALSE, o HBA não dá suporte à fila marcada por SCSI. O driver de porta específico do sistema operacional sempre define esse membro como o valor passado na estrutura de HW_INITIALIZATION_DATA (SCSI) quando o driver de miniporto chamado ScsiPortInitialize. Um driver de miniporte pode redefinir esse valor para qualquer HBA específico que ele controla.

AutoRequestSense

Indica quando TRUE que o HBA dá suporte ao sentido de solicitação automática. Quando FALSE , o HBA não dá suporte ao sentido de solicitação automática. O driver de porta específico do sistema operacional sempre define esse membro como o valor passado na estrutura de HW_INITIALIZATION_DATA (SCSI) quando o driver de miniporto chamado ScsiPortInitialize. Um driver de miniporte pode redefinir esse valor para qualquer HBA específico que ele controla. Esse membro deve ser definido como TRUE antes que o driver de um master de ônibus HBA chame ScsiPortGetUncachedExtension.

MultipleRequestPerLu

Indica quando TRUE o HBA dá suporte a várias solicitações por unidade lógica. Quando FALSE , o HBA não dá suporte a várias solicitações por unidade lógica. O mecanismo pelo qual o adaptador armazena em cache as solicitações é definido pelo adaptador. O driver de porta específico do sistema operacional sempre define esse membro como o valor passado na estrutura de HW_INITIALIZATION_DATA (SCSI) quando o driver de miniporto chamado ScsiPortInitialize. Um driver de miniporte pode redefinir esse valor para qualquer HBA específico que ele controla.

ReceiveEvent

Indica quando TRUE o HBA dá suporte a operações de evento de recebimento SCSI. Quando FALSE , o HBA não dá suporte a operações de evento de recebimento SCSI. O driver de porta específico do sistema operacional sempre define esse membro como o valor passado na estrutura de HW_INITIALIZATION_DATA (SCSI) quando o driver de miniporto chamado ScsiPortInitialize. Um driver de miniporte pode redefinir esse valor para qualquer HBA específico que ele controla.

RealModeInitialized

Indica quando TRUE que um driver de modo real (somente x86) já inicializou o HBA. Quando FALSE , o HBA não foi inicializado anteriormente por um driver de modo real. O driver de porta dependente do sistema operacional sempre inicializa esse membro. Se isso estiver definido como TRUE, o driver de miniporto não deverá inicializar seu HBA se a sequência de inicialização do driver for idêntica à inicialização do HBA no modo real; não reinicializar o HBA nessas circunstâncias faz com que o driver de miniporte seja carregado muito mais rapidamente. O valor desse membro é irrelevante para qualquer driver de miniporto que sempre inicializa seu HBA durante a execução no modo protegido em plataformas baseadas em x86 e para todos os drivers de miniporto para os quais ele é imaterial se eles estão sendo executados em uma plataforma baseada em CISC ou RISC.

BufferAccessScsiPortControlled

Indica quando TRUE que o driver de miniporto sempre chama ScsiPortXxx para acessar buffers de dados e/ou informações de sentido de solicitação em SRBs, permitindo assim que o driver de porta específico do sistema operacional otimize o processamento de solicitação de E/S. Quando FALSE , o driver de miniporto não precisa chamar rotinas ScsiPortXxx para acessar buffers de dados ou informações de sensor de solicitação. Definir esse membro como FALSE pode prejudicar o desempenho de E/S do HBA. Chamar rotinas diferentes do ScsiPortXxx torna um driver de miniportável nãoportável nos sistemas operacionais da Microsoft.

MaximumNumberOfTargets

Especifica o número de periféricos de destino que o HBA pode controlar. Por padrão, o valor desse membro é SCSI_MAXIMUM_TARGETS, de acordo com o padrão SCSI. 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 SCSI largo ou Fibre Channel. Esse valor é limitado a SCSI_MAXIMUM_TARGETS_PER_BUS.

ReservedUchars[2]

Reservado para uso do sistema e não disponível para uso por drivers de miniport.

SlotNumber

Especifica o número de slot de um HBA com valores correspondentes para VendorId e DeviceId que foram especificados na estrutura de HW_INITIALIZATION_DATA (SCSI) quando o driver de miniporto chamado ScsiPortInitialize.

BusInterruptLevel2

Reservado para uso do sistema e não disponível para uso por drivers de miniport.

BusInterruptVector2

Reservado para uso do sistema e não disponível para uso por drivers de miniport.

InterruptMode2

Reservado para uso do sistema e não disponível para uso por drivers de miniport.

DmaChannel2

Reservado para uso do sistema e não disponível para uso por drivers de miniport.

DmaPort2

Reservado para uso do sistema e não disponível para uso por drivers de miniport.

DmaWidth2

Reservado para uso do sistema e não disponível para uso por drivers de miniport.

DmaSpeed2

Reservado para uso do sistema e não disponível para uso por drivers de miniport.

DeviceExtensionSize

Especifica o tamanho em bytes exigido por um driver de miniporto para sua extensão de dispositivo por HBA para lidar com transferências de dados maiores que 64K, o que pode exigir listas de dispersão/coleta maiores do que o tamanho definido no registro para esse driver.

SpecificLuExtensionSize

Especifica o tamanho em bytes exigido pelo driver de miniporto para seu armazenamento por unidade lógica, se houver, para lidar com transferências de dados maiores que 64K. 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 devem ser feitos nesse valor antes de usá-lo com rotinas como ScsiPortGetUncachedExtension.

SrbExtensionSize

Especifica o tamanho em bytes exigido pelo driver de miniporto para seu armazenamento por solicitação, se houver, para lidar com transferências de dados maiores que 64K. Defina esse membro antes de chamar ScsiPortGetUncachedExtension para alterar o tamanho do armazenamento por solicitação com base em NumberOfPhysicalBreaks. 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 devem ser feitos nesse valor antes de usá-lo com rotinas como ScsiPortGetUncachedExtension.

Dma64BitAddresses

Indica que o HBA é capaz de acessar endereços maiores que 4 GB ou 0x0FFFFFFFF se Dma64BitAddresses contiver um valor de SCSI_DMA64_MINIPORT_SUPPORTED. Antes do Windows 2000, o ScsiPort definia esse valor com base no conteúdo de HW_INITIALIZATION_DATA (SCSI). Esse não é mais o caso. No Windows 2000, o valor de Dma64BitAddresses é determinado apenas pelo retorno de chamada do driver de miniporto HwScsiFindAdapter . Se o sistema operacional der suporte a um espaço de endereço de 64 bits, o driver de porta passará um valor de SCSI_DMA64_SYSTEM_SUPPORTED para o driver de miniporte neste membro. Se o HBA descrito por PORT_CONFIGURATION_INFORMATION também dá suporte a espaços de endereço maiores que 32 bits, o driver de porta/miniport é necessário para dar suporte ao endereçamento completo de 64 bits e o retorno de chamada do driver de miniport HwScsiFindAdapter indica isso atribuindo um valor de SCSI_DMA64_MINIPORT_SUPPORTED a Dma64BitAddresses, gravando qualquer valor anterior atribuído pelo driver de porta. O valor correto deve ser atribuído ao membro Dma64BitAddresses antes que o driver de miniporto chame ScsiPortGetUncachedExtension.

ResetTargetSupported

Obsoleto. O driver ScsiPort não envia mais solicitações de SRB_FUNCTION_RESET_DEVICE para seus drivers de miniporto. Não use esse membro.

MaximumNumberOfLogicalUnits

Especifica o 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 miniporto poderá 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 SCSI-3.

WmiDataProvider

Indica quando TRUE o driver de miniporto responde às solicitações WMI (Instrumentação de Gerenciamento do Windows). Quando FALSE , o driver de miniporto não responde às solicitações WMI (Instrumentação de Gerenciamento do Windows). Por padrão, o valor desse membro é FALSE.

Comentários

Os membros específicos inicializados dependem do driver de miniporto HBA e das informações de configuração disponíveis para o driver de porta específico do sistema operacional. O driver de porta específico do sistema operacional define valores padrão em todos os membros para os quais ele não pode fornecer informações de configuração para a rotina HwScsiFindAdapter do driver de miniport.

Todos os drivers de miniporto HBA devem ter pelo menos um conjunto de padrões a serem usados para membros relevantes se o driver de porta específico do sistema operacional não passar todos os valores inicializados.

A rotina HwScsiFindAdapter deve atualizar todos os membros relevantes para um HBA compatível com o driver.

Windows NT drivers de classe de armazenamento, que são carregados posteriormente aos drivers de miniporto, dependem das informações fornecidas pela rotina HwScsiFindAdapter de cada driver de miniport para configurar suas solicitações de E/S subsequentes. Por exemplo, os valores MaximumTransferLength e NumberOfPhysicalBreaks fornecidos por cada driver de miniporte controlam se um driver de classe deve dividir grandes solicitações de transferência em um conjunto de transferências parciais para atender aos limites do HBA.

O membro Dma64BitAddresses do PORT_CONFIGURATION_INFORMATION não deve mais ser considerado como um valor BOOLEAN. Um valor de SCSI_DMA64_SYSTEM_SUPPORTED indica que o driver de porta/miniport é necessário para dar suporte ao endereçamento de 64 bits, mas a rotina ScsiPortGetUncachedExtension ainda interpreta qualquer valor diferente de zero de Dma64BitAddresses como indicando que o suporte de 64 bits é necessário. Isso significa que ScsiPortGetUncachedExtension ainda funciona corretamente quando chamado por um driver herdado que atribui valores BOOLEAN a Dma64BitAddresses.

Além de Dma64BitAddresses, PORT_CONFIGURATION_INFORMATION e HW_INITIALIZATION_DATA têm um par de membros chamados SpecificLuExtensionSize e SrbExtensionSize cujos valores agora devem ser tratados de forma diferente. O driver de miniporto deve calcular os valores iniciais de SpecificLuExtensionSize e SrbExtensionSize em HW_INITIALIZATION_DATA com base na suposição de que o HBA é capaz de receber endereços de 32 bits, independentemente do que o controlador possa realmente dar suporte. Os valores padrão de SpecificLuExtensionSize e SrbExtensionSize no PORT_CONFIGURATION_INFORMATION também serão baseados em uma suposição de endereçamento de 32 bits, pois os valores em PORT_CONFIGURATION_INFORMATION são derivados dos valores em HW_INITIALIZATION_DATA.

Isso significa que, se o driver de miniporto precisar de espaço adicional na extensão LUN ou na extensão SRB para lidar com endereços físicos de 64 bits, ele deverá modificar os valores de SpecificLuExtensionSize e SrbExtensionSize em PORT_CONFIGURATION_INFORMATION para considerar isso antes de passar PORT_CONFIGURATION_INFORMATION para ScsiPortGetUncachedExtension.

Requisitos

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

Confira também

ACCESS_RANGE

HW_INITIALIZATION_DATA (SCSI)

HwScsiFindAdapter

ScsiPortGetDeviceBase

ScsiPortGetUncachedExtension

ScsiPortInitialize

ScsiPortValidateRange