Função StorPortGetDeviceBase (storport.h)

A rotina StorPortGetDeviceBase mapeia um endereço de E/S para o espaço de endereço do sistema.

Sintaxe

STORPORT_API PVOID StorPortGetDeviceBase(
  [in] PVOID                 HwDeviceExtension,
  [in] INTERFACE_TYPE        BusType,
  [in] ULONG                 SystemIoBusNumber,
  [in] STOR_PHYSICAL_ADDRESS IoAddress,
  [in] ULONG                 NumberOfBytes,
  [in] BOOLEAN               InIoSpace
);

Parâmetros

[in] HwDeviceExtension

Um ponteiro para a extensão do dispositivo de hardware. Essa é uma área de armazenamento por HBA que o driver de porta aloca e inicializa em nome do driver de miniporta. Os drivers de miniporta geralmente armazenam informações específicas do HBA nessa extensão, como o estado do HBA e os intervalos de acesso mapeados para o HBA. Essa área está disponível para o driver de miniporta imediatamente após o driver de miniporto chamar StorPortInitialize. O driver de porta libera essa memória quando remove o dispositivo.

[in] BusType

Especifica o tipo de interface do barramento de E/S no qual o HBA está conectado. A rotina HwStorFindAdapter do driver de miniport obtém o valor desse parâmetro do membro AdapterInterfaceType do PORT_CONFIGURATION_INFORMATION de entrada.

[in] SystemIoBusNumber

Especifica o número atribuído pelo sistema do barramento de E/S no qual o HBA está conectado. A rotina HwStorFindAdapter obtém o valor desse parâmetro do membro SystemIoBusNumber do PORT_CONFIGURATION_INFORMATION de entrada.

[in] IoAddress

Especifica o endereço base relativo ao barramento de um intervalo usado pelo HBA. A rotina HwStorFindAdapter obtém o valor desse parâmetro de um dos elementos AccessRanges no PORT_CONFIGURATION_INFORMATION se o driver de porta fornecer informações de configuração de intervalo. Caso contrário, esse endereço pode ser um valor retornado por StorPortGetBusData ou um valor padrão fornecido pelo driver de miniport. Evite usar um endereço base de zero porque sua status de retorno bem-sucedida pode entrar em conflito com o status de erro (NULL).

[in] NumberOfBytes

Especifica o tamanho em bytes do intervalo que o mapeamento deve abranger. A rotina HwStorFindAdapter obtém o valor desse parâmetro do mesmo elemento AccessRanges que IoAddress se o driver de porta fornecer informações de configuração de intervalo. Caso contrário, esse valor pode ser retornado por StorPortGetBusData ou um padrão fornecido pelo driver de miniporto. De qualquer forma, o driver não deve acessar o hardware fora do intervalo mapeado retornado.

[in] InIoSpace

TRUE indica que o intervalo a ser mapeado está no espaço de E/S e o driver de miniporto passará endereços mapeados nesse intervalo para as rotinas de leitura/gravação da porta storport para se comunicar com o HBA. A rotina HwStorFindAdapter obtém o valor desse parâmetro do mesmo elemento AccessRanges que IoAddress. Observe que um driver de miniporto deve inverter o valor do membro InMemorySpace em um elemento do tipo ACCESS_RANGE antes de ser passado para StorPortGetDeviceBase como o argumento InIoSpace . FALSE indica que o intervalo a ser mapeado está no espaço de memória.

Retornar valor

Um endereço base lógico mapeado correspondente ao endereço relativo do barramento fornecido no parâmetro IoAddress .

Comentários

Cada driver de miniporta deve passar endereços de intervalo de acesso lógico mapeados para as rotinas de leitura/gravação da porta Storport e as rotinas de leitura/gravação do registro do Storport ao se comunicar com seus HBA(s).

Essa rotina dá suporte apenas aos endereços que foram atribuídos ao driver pelo gerenciador de PnP (Plug and Play do sistema).

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho storport.h (inclua Storport.h)
Biblioteca Storport.lib

Confira também

StorPortFreeDeviceBase