IOMMU_DEVICE_CREATE回调函数 (wdm.h)

获取物理设备对象并创建一个不透明令牌,该令牌表示可与 IOMMU 接口 API 一起使用的 IOMMU_DMA_DEVICE

语法

IOMMU_DEVICE_CREATE IommuDeviceCreate;

NTSTATUS IommuDeviceCreate(
  PDEVICE_OBJECT DeviceObject,
  PIOMMU_DEVICE_CREATION_CONFIGURATION DeviceConfig,
  PIOMMU_DMA_DEVICE *DmaDeviceOut
)
{...}

参数

DeviceObject

[in]指向创建 IOMMU_DMA_DEVICE 将表示的设备的物理设备对象的指针。

DeviceConfig

[in, optional]一个可选指针,指向创建设备时可能需要的配置列表,具体取决于系统。 目前,对于 ARM64 上的 ACPI 设备,这是必需的。

DmaDeviceOut

[Out]指向表示所创建 IOMMU_DMA_DEVICE的不透明标记的指针。

返回值

如果作成功,STATUS_SUCCESS。 可能的错误返回值包括以下状态代码。

返回代码 描述
STATUS_INVALID_PARAMETER
提供的 PDO 表示不在 IOMMU 后面的设备。
STATUS_INVALID_PARAMETER_2
提供的输入与系统支持不匹配。
STATUS_INSUFFICIENT_RESOURCES
例程未能分配 **IOMMU_DMA_DEVICE** 结构所需的资源。
STATUS_UNSUCCESSFUL
基础 IOMMU 接口未为“GetDeviceId”函数正确实现。
STATUS_NOT_FOUND
提供的 PDO 表示不在 IOMMU 后面的设备。

如果设备未在 IOMMU 后面找到,则它应该已经具有直接的物理内存访问,并且平台不符合 DMA Guard。

有关详细信息,请参阅 NTSTATUS 值

言论

ARM64 系统上的 ACPI 设备必须通过 DeviceConfig 参数提供输入映射。 ARM64 系统上的所有其他设备类型和非 ARM64 系统上的任何设备都应 提供任何设备配置;否则,调用将在 STATUS_INVALID_PARAMETER_2失败。

要求

要求 价值
支持的最低服务器 Windows Server 2022
标头 wdm.h (包括 Wdm.h)

另请参阅

IOMMU_DEVICE_CREATION_CONFIGURATION

IOMMU_DEVICE_DELETE

DMA_IOMMU_INTERFACE_V2

DMA_IOMMU_INTERFACE_EX