функция обратного вызова 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) |