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

Предварительно выделяет логическое адресное пространство, которое можно использовать для будущих сопоставлений. Это дает драйверу возможность обеспечить дальнейший ход выполнения будущих вызовов map/unmap.

Синтаксис

IOMMU_RESERVE_LOGICAL_ADDRESS_RANGE IommuReserveLogicalAddressRange;

NTSTATUS IommuReserveLogicalAddressRange(
  [in]           PIOMMU_DMA_DOMAIN Domain,
  [in]           SIZE_T Size,
  [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_TOKEN *LogicalAddressToken
)
{...}

Параметры

[in] Domain

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

[in] Size

Размер резервируемого диапазона логических адресов в байтах. Это значение должно представлять целое количество страниц.

[in, optional] ExplicitLogicalAddress

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

[in, optional] MinLogicalAddress

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

[in, optional] MaxLogicalAddress

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

[out] LogicalAddressToken

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

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

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

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

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

Комментарии

Маркеры логических адресов можно освободить с помощью IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE.

Маркеры логических адресов должны иметь части диапазонов логических адресов, сопоставленные с физическими адресами и несопоставленные с ними с помощью IOMMU_MAP_RESERVED_LOGICAL_RANGE и IOMMU_UNMAP_RESERVED_LOGICAL_RANGE.

Требования

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

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

IOMMU_DMA_LOGICAL_ADDRESS_TOKEN

IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE

IOMMU_MAP_RESERVED_LOGICAL_RANGE

IOMMU_UNMAP_RESERVED_LOGICAL_RANGE