IOMMU_DEVICE_CREATE callback function (wdm.h)
Takes a physical device object and creates an opaque token representing the IOMMU_DMA_DEVICE that can be used with the IOMMU interface APIs.
Syntax
IOMMU_DEVICE_CREATE IommuDeviceCreate;
NTSTATUS IommuDeviceCreate(
PDEVICE_OBJECT DeviceObject,
PIOMMU_DEVICE_CREATION_CONFIGURATION DeviceConfig,
PIOMMU_DMA_DEVICE *DmaDeviceOut
)
{...}
Parameters
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.
Return value
STATUS_SUCCESS if the operation is successful. Possible error return values include the following status codes.
Return code | Description |
---|---|
|
The provided PDO represents a device that is not behind an IOMMU. |
|
The provided inputs do not match system support. |
|
The routine failed to allocate resources required for an **IOMMU_DMA_DEVICE** structure. |
|
The underlying IOMMU Interface is not correctly implemented for the `GetDeviceId` function. |
|
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.
Remarks
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.
Requirements
Requirement | Value |
---|---|
Minimum supported server | Windows Server 2022 |
Header | wdm.h (include Wdm.h) |