// wdm.h
IOMMU_DEVICE_CREATE IommuDeviceCreate;
NTSTATUS IommuDeviceCreate(
PDEVICE_OBJECT DeviceObject,
PIOMMU_DEVICE_CREATION_CONFIGURATION DeviceConfig,
PIOMMU_DMA_DEVICE *DmaDeviceOut
)
{...}
View the official Windows Driver Kit DDI referenceNo description available.
Takes a physical device object and creates an opaque token representing the IOMMU_DMA_DEVICE that can be used with the IOMMU interface APIs.
DeviceObject[In] A pointer to the physical device object of the device that the created IOMMU_DMA_DEVICE will represent.
DeviceConfig[In, optional] An optional pointer to a list of configurations that may be needed for device creation, depending on the system. Currently, this is required for ACPI devices on ARM64.
DmaDeviceOut[Out] A pointer to the opaque token representing the created IOMMU_DMA_DEVICE.
STATUS_SUCCESS if the operation is successful. Possible error return values include the following status codes.
| Return code | Description |
|---|---|
| STATUS_INVALID_PARAMETER | The provided PDO represents a device that is not behind an IOMMU. |
| STATUS_INVALID_PARAMETER_2 | The provided inputs do not match system support. |
| STATUS_INSUFFICIENT_RESOURCES | The routine failed to allocate resources required for an IOMMU_DMA_DEVICE structure. |
| STATUS_UNSUCCESSFUL | The underlying IOMMU Interface is not correctly implemented for the GetDeviceId function. |
| STATUS_NOT_FOUND | The provided PDO represents a device that is not behind an IOMMU. If the device is not found behind an IOMMU then it should already have direct physical memory access and the platform is not DMA Guard compliant. |
For more information, see NTSTATUS Values.
ACPI devices on ARM64 systems must provide input mappings through the DeviceConfig parameter. All other device types on ARM64 systems and any device on non-ARM64 systems should NOT provide any device configurations; otherwise, the call will fail on STATUS_INVALID_PARAMETER_2.
IOMMU_DEVICE_CREATION_CONFIGURATION