Функция StorPortGetPhysicalAddress (storport.h)

Подпрограмма StorPortGetPhysicalAddress преобразует заданный диапазон виртуальных адресов в физический диапазон адресов для операции DMA.

Синтаксис

STORPORT_API STOR_PHYSICAL_ADDRESS StorPortGetPhysicalAddress(
  [in]           PVOID               HwDeviceExtension,
  [in, optional] PSCSI_REQUEST_BLOCK Srb,
  [in]           PVOID               VirtualAddress,
  [out]          ULONG               *Length
);

Параметры

[in] HwDeviceExtension

Указатель на расширение аппаратного устройства. Это область хранения HBA, которую драйвер портов выделяет и инициализирует от имени мини-порта. Драйверы минипорта обычно хранят сведения, относящиеся к HBA, в этом расширении, например состояние HBA и сопоставленные диапазоны доступа для HBA. Эта область доступна для мини-драйвера в элементе DeviceExtension-HwDeviceExtension> объекта устройства для HBA сразу после вызова драйвера минипорта StorPortInitialize. Драйвер портов освобождает эту память при удалении устройства.

[in, optional] Srb

Указатель на блок запроса SCSI, если преобразованный виртуальный адрес поступает из этого элемента DataBuffer SRB, SenseInfoBuffer или SrbExtension . В противном случае этот параметр должен иметь значение NULL.

[in] VirtualAddress

Указатель на базовый виртуальный адрес, который необходимо преобразовать. Если этот виртуальный адрес попадает в диапазон для предоставленного SRB DataBuffer, вызывающий объект также должен предоставить указатель Srb .

[out] Length

Указатель на значение, указывающее число сопоставленных байтов, начиная с возвращаемого физического адреса.

Возвращаемое значение

StorPortGetPhysicalAddress возвращает соответствующий физический адрес для заданного виртуального адреса. Если указанный адрес не может быть преобразован, функция возвращает значение NULL.

Замечания

Если виртуальный адрес, переданный в StorPortGetPhysicalAddress , получен из StorPortAllocateContiguousMemorySpecifyCacheNode, значение, возвращаемое для Length , следует игнорировать.

Начиная с Windows 8 параметр Srb может указывать на SCSI_REQUEST_BLOCK или STORAGE_REQUEST_BLOCK. Если идентификатор функции в поле "Функция" SrbSRB_FUNCTION_STORAGE_REQUEST_BLOCK, SRB представляет собой структуру запроса STORAGE_REQUEST_BLOCK.

StorPortGetPhysicalAddress использует STOR_PHYSICAL_ADDRESS для представления физических адресов.

typedef PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS, *PSTOR_PHYSICAL_ADDRESS;

Тип STOR_PHYSICAL_ADDRESS — это независимый от операционной системы тип данных, используемый драйверами минипорта Storport для представления физических адресов или относительного адреса шины.

Требования

Требование Ценность
целевая платформа универсальный
Header storport.h (include Storport.h)
Library Storport.lib

См. также

SCSI_REQUEST_BLOCK

STORAGE_REQUEST_BLOCK

ScsiPortGetPhysicalAddress