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