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 |