Função StorPortGetPhysicalAddress (storport.h)
A rotina StorPortGetPhysicalAddress converte um determinado intervalo de endereços virtuais em um intervalo de endereços físicos para uma operação de DMA.
Sintaxe
STORPORT_API STOR_PHYSICAL_ADDRESS StorPortGetPhysicalAddress(
[in] PVOID HwDeviceExtension,
[in, optional] PSCSI_REQUEST_BLOCK Srb,
[in] PVOID VirtualAddress,
[out] ULONG *Length
);
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 miniporto no membro DeviceExtension-HwDeviceExtension> do objeto de dispositivo para o HBA imediatamente após o driver de miniporto chamar StorPortInitialize. O driver de porta libera essa memória quando remove o dispositivo.
[in, optional] Srb
Ponteiro para o bloco de solicitação SCSI se o endereço virtual a ser convertido for proveniente do membro DataBuffer desse SRB ou do membro SenseInfoBuffer . Caso contrário, esse parâmetro deve ser NULL.
[in] VirtualAddress
Ponteiro para o endereço virtual base a ser convertido. Se esse endereço virtual estiver dentro do intervalo de um DataBuffer fornecido por SRB, o chamador também deverá fornecer o ponteiro Srb .
[out] Length
Ponteiro para um valor que indica o número de bytes mapeados, começando no endereço físico retornado.
Retornar valor
StorPortGetPhysicalAddress retorna o endereço físico correspondente para um determinado endereço virtual. Se o endereço determinado não puder ser convertido, a função retornará NULL.
Comentários
Se o endereço virtual passado para StorPortGetPhysicalAddress for obtido de StorPortAllocateContiguousMemorySpecifyCacheNode, o valor retornado para Length deverá ser ignorado.
Começando no Windows 8, o parâmetro Srb pode apontar para SCSI_REQUEST_BLOCK ou STORAGE_REQUEST_BLOCK. Se o identificador de função no campo Função de Srb for SRB_FUNCTION_STORAGE_REQUEST_BLOCK, o SRB será uma estrutura de solicitação STORAGE_REQUEST_BLOCK .
StorPortGetPhysicalAddress usa STOR_PHYSICAL_ADDRESS para representar endereços físicos.
typedef PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS, *PSTOR_PHYSICAL_ADDRESS;
O tipo STOR_PHYSICAL_ADDRESS é um tipo de dados independente do sistema operacional que os drivers de miniporto do Storport usam para representar um endereço físico ou um endereço relativo ao barramento.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | storport.h (inclua Storport.h) |
Biblioteca | Storport.lib |