функция обратного вызова IOMMU_MAP_RESERVED_LOGICAL_RANGE (wdm.h)
Сопоставляет зарезервированный логический диапазон.
В отличие от IOMMU_MAP_LOGICAL_RANGE_EX, это гарантированно не будет выполнять выделение памяти, так как предполагается, что они уже выполнялись ранее с IOMMU_RESERVE_LOGICAL_ADDRESS_RANGE.
Синтаксис
IOMMU_MAP_RESERVED_LOGICAL_RANGE IommuMapReservedLogicalRange;
NTSTATUS IommuMapReservedLogicalRange(
[in, out] PIOMMU_DMA_LOGICAL_ADDRESS_TOKEN LogicalAddressToken,
[in] SIZE_T Offset,
[in] ULONG Permissions,
[in] PIOMMU_MAP_PHYSICAL_ADDRESS PhysicalAddressToMap,
[out] PIOMMU_DMA_LOGICAL_ADDRESS_TOKEN_MAPPED_SEGMENT MappedSegment
)
{...}
Параметры
[in, out] LogicalAddressToken
IOMMU_DMA_LOGICAL_ADDRESS_TOKEN, с который необходимо сопоставить.
[in] Offset
Смещение в байтах в маркере логического адреса, представляющее базовый логический адрес для сопоставления.
[in] Permissions
Битовое поле, представляющее разрешения, которые необходимо задать для сопоставляемого диапазона. Доступные биты разрешений см. в разделе Примечания.
[in] PhysicalAddressToMap
IOMMU_MAP_PHYSICAL_ADDRESS, которая будет сопоставлена с доменом.
[out] MappedSegment
Возвращает IOMMU_DMA_LOGICAL_ADDRESS_TOKEN_MAPPED_SEGMENT , представляющий сегмент логического маркера адреса, который теперь сопоставлен.
Возвращаемое значение
STATUS_SUCCESS , если операция выполнена успешно. Возможные возвращаемые значения ошибок включают следующие коды состояния.
Код возврата | Описание |
---|---|
STATUS_INVALID_PARAMETER_2 | Предоставленное смещение не выравнивается по страницам. |
STATUS_INVALID_PARAMETER_4 | Указанный физический адрес не выровнен по страницам и (или) не имеет целого размера. |
STATUS_RESOURCE_IN_USE | Диапазон логических адресов, представленный в маркере логического адреса, уже полностью или частично сопоставлен. |
STATUS_UNSUCCESSFUL | Маркер логического адреса в настоящее время удаляется. |
Дополнительные сведения см. в разделе Значения NTSTATUS.
Комментарии
Сопоставленный сегмент логического маркера адреса можно отменить с помощью IOMMU_UNMAP_RESERVED_LOGICAL_RANGE.
Поле разрешений — это битовое поле, описывающее разрешения на доступ к сопоставляемой странице.
Биты определяются следующим образом:
Bit 0 = Read Access
Bit 1 = Write Access
Bits 31-2 = Reserved (0)
Требования
Требование | Значение |
---|---|
Минимальная версия сервера | Windows Server 2022 |
Верхняя часть | wdm.h (включая Wdm.h) |
См. также раздел
IOMMU_UNMAP_RESERVED_LOGICAL_RANGE