// wdm.h
typedef struct _IOMMU_MAP_PHYSICAL_ADDRESS {
IOMMU_MAP_PHYSICAL_ADDRESS_TYPE MapType;
union {
struct {
PMDL Mdl;
} Mdl;
struct {
PHYSICAL_ADDRESS Base;
SIZE_T Size;
} ContiguousRange;
struct {
PPFN_NUMBER PageFrame;
SIZE_T NumberOfPages;
} PfnArray;
};
} IOMMU_MAP_PHYSICAL_ADDRESS, *PIOMMU_MAP_PHYSICAL_ADDRESS;
View the official Windows Driver Kit DDI referenceNo description available.
The IOMMU_MAP_PHYSICAL_ADDRESS represents a physical address that is to be mapped to a logical address. It is used by IOMMU_MAP_LOGICAL_RANGE_EX and IOMMU_MAP_IDENTITY_RANGE_EX.
MapTypeA IOMMU_MAP_PHYSICAL_ADDRESS_TYPE value that indicates the format the physical address is represented in.
MdlIf MapType == MapPhysicalAddressMdl, provides a MDL that represents the physical address.
Mdl.MdlThe pointer to the MDL that represents the physical address.
ContiguousRangeIf MapType == MapPhysicalAddressContiguousRange, provides a contiguous physical address.
ContiguousRange.BaseThe base address of a contiguous physical address.
ContiguousRange.SizeThe size, in bytes, of a contiguous physical address.
PfnArrayIf MapType == MapPhysicalAddressPfn, provides a PFN array.
PfnArray.PageFrameThe pointer to the PFN array.
PfnArray.NumberOfPagesThe number of PFNs in the PFN array.
When mapping a physical address using IOMMU_MAP_LOGICAL_RANGE_EX or IOMMU_MAP_IDENTITY_RANGE_EX, the physical addresses represented must be 4K page aligned and 4K page length.
IOMMU_MAP_PHYSICAL_ADDRESS_TYPE