IOMMU_MAP_IDENTITY_RANGE_EX callback function (wdm.h)
Creates an identity mapping for a provided physical address space in the provided domain.
Syntax
IOMMU_MAP_IDENTITY_RANGE_EX IommuMapIdentityRangeEx;
NTSTATUS IommuMapIdentityRangeEx(
[in] PIOMMU_DMA_DOMAIN Domain,
[in] ULONG Permissions,
[in] PIOMMU_MAP_PHYSICAL_ADDRESS PhysicalAddressToMap
)
{...}
Parameters
[in] Domain
A pointer to the IOMMU_DMA_DOMAIN that the identity mapped physical address will belong to. The domain must be of type DomainTypeTranslate or DomainTypePassThrough. For more information about domain types, see IOMMU_DMA_DOMAIN_TYPE.
[in] Permissions
A bit-field representing the permissions to be set for the range being mapped. See Remarks for the available permission bits.
[in] PhysicalAddressToMap
The IOMMU_MAP_PHYSICAL_ADDRESS that will be mapped to the domain.
Return value
STATUS_SUCCESS if the operation is successful. Possible error return values include the following status codes.
Return code | Description |
---|---|
STATUS_INVALID_PARAMETER_1 | The domain provided is not of type DomainTypeTranslate or DomainTypePassThrough. |
STATUS_INVALID_PARAMETER_3 | The IOMMU_MAP_PHYSICAL_ADDRESS provided does not represent physical memory that is page-aligned and has a size that is a multiple of PAGE_SIZE. |
STATUS_IN_USE | The identity range is already mapped or partially mapped. |
STATUS_NOT_SUPPORTED | The provided domain contains a logical allocator that does not allow explicit logical address allocation. |
Remarks
To unmap the logical address created by IOMMU_MAP_IDENTITY_RANGE_EX, use IOMMU_UNMAP_IDENTITY_RANGE_EX.
The permissions field is a bitfield that describes the access permissions for the pages to be mapped.
The bits are defined as follows:
Bit 0 = Read Access
Bit 1 = Write Access
Bits 31-2 = Reserved (0)
Requirements
Requirement | Value |
---|---|
Minimum supported server | Windows Server 2022 |
Header | wdm.h (include Wdm.h) |