Поделиться через


Функция 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. Эта область доступна драйверу мини-порта в элементе DeviceExtension-HwDeviceExtension> объекта устройства для адаптера шины сразу после того, как драйвер мини-порта вызывает StorPortInitialize. Драйвер порта освобождает эту память при удалении устройства.

[in, optional] Srb

Указатель на блок запроса SCSI, если преобразуемый виртуальный адрес поступает из этого элемента DataBuffer SRB или SenseInfoBuffer . В противном случае этот параметр должен иметь значение 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 используют для представления физических адресов или адресов относительно шины.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть storport.h (включая Storport.h)
Библиотека Storport.lib

См. также раздел

SCSI_REQUEST_BLOCK

STORAGE_REQUEST_BLOCK

ScsiPortGetPhysicalAddress