функция обратного вызова IOMMU_MAP_LOGICAL_RANGE_EX (wdm.h)

Сопоставляет физическое адресное пространство с логическим адресным пространством IOMMU_DMA_DOMAIN.

Синтаксис

IOMMU_MAP_LOGICAL_RANGE_EX IommuMapLogicalRangeEx;

NTSTATUS IommuMapLogicalRangeEx(
  [in]           PIOMMU_DMA_DOMAIN Domain,
  [in]           ULONG Permissions,
  [in]           PIOMMU_MAP_PHYSICAL_ADDRESS PhysicalAddressToMap,
  [in, optional] PIOMMU_DMA_LOGICAL_ADDRESS ExplicitLogicalAddress,
  [in, optional] PIOMMU_DMA_LOGICAL_ADDRESS MinLogicalAddress,
  [in, optional] PIOMMU_DMA_LOGICAL_ADDRESS MaxLogicalAddress,
  [out]          PIOMMU_DMA_LOGICAL_ADDRESS LogicalAddressOut
)
{...}

Параметры

[in] Domain

Указатель на IOMMU_DMA_DOMAIN , которому будет принадлежать сопоставленный логический адрес. Домен должен иметь тип DomainTypeTranslate. Дополнительные сведения о типах доменов см. в разделе IOMMU_DMA_DOMAIN_TYPE.

[in] Permissions

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

[in] PhysicalAddressToMap

IOMMU_MAP_PHYSICAL_ADDRESS, которая будет сопоставлена с доменом.

[in, optional] ExplicitLogicalAddress

Логический адрес домена, с которым должен быть сопоставлен физический адрес. Если домен не был создан с зарегистрированным логическим распределителем, это поле является обязательным. Если домен был создан с зарегистрированным логическим распределителем, который не поддерживает явное выделение логических адресов, это поле должно иметь значение NULL.

[in, optional] MinLogicalAddress

Минимальный (включительно) допустимый логический адрес, с которым должен быть сопоставлен физический адрес. Если домен не был создан с зарегистрированным логическим распределителем, это поле будет игнорироваться.

[in, optional] MaxLogicalAddress

Максимальный (включительно) допустимый логический адрес, с которым должен быть сопоставлен физический адрес. Если домен не был создан с зарегистрированным логическим распределителем, это поле будет игнорироваться.

[out] LogicalAddressOut

Возвращает результирующий логический адрес из сопоставления.

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

STATUS_SUCCESS , если операция выполнена успешно. Возможные возвращаемые значения ошибок включают следующие коды состояния.

Код возврата Описание
STATUS_INVALID_PARAMETER_1 Указанный домен не имеет типа DomainTypeTranslate.
STATUS_INVALID_PARAMETER_3 Предоставленный IOMMU_MAP_PHYSICAL_ADDRESS не представляет физическую память, выровненную по страницам, и имеет размер, кратный PAGE_SIZE.
STATUS_INVALID_PARAMETER_4 Предоставленный объект ExplicitLogicalAddress не выровнен по страницам.
STATUS_INVALID_PARAMETER_MIX Не удалось выполнить указанные минимальные и максимальные логические адреса.
STATUS_IN_USE Объект ExplicitLogicalAddress уже сопоставлен или частично сопоставлен.
STATUS_NOT_SUPPORTED Параметр ExplicitLogicalAddress был предоставлен для домена с логическим распределителем, который не допускает явного выделения логического адреса. Кроме того, для домена без логического распределителя не было предоставлено значение ExplicitLogicalAddress.

Дополнительные сведения см. в разделе Значения NTSTATUS.

Комментарии

Чтобы отменить сопоставление логического адреса, созданного IOMMU_MAP_LOGICAL_RANGE_EX, используйте IOMMU_UNMAP_LOGICAL_RANGE; В настоящее время нет эквивалента EX для распаку логического диапазона адресов.

Поле разрешений — это битовое поле, описывающее разрешения на доступ к сопоставляемой странице.

Биты определяются следующим образом:

Bit 0 = Read Access

Bit 1 = Write Access

Bits 31-2 = Reserved (0)

Требования

Требование Значение
Минимальная версия сервера Windows Server 2022
Верхняя часть wdm.h (включая Wdm.h)

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

IOMMU_DMA_DOMAIN_TYPE

IOMMU_MAP_PHYSICAL_ADDRESS

DMA_IOMMU_INTERFACE_V2

DMA_IOMMU_INTERFACE_EX