Compartilhar via


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

Confira também

SCSI_REQUEST_BLOCK

STORAGE_REQUEST_BLOCK

ScsiPortGetPhysicalAddress