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,可选]指向创建设备时可能需要的配置列表的可选指针,具体取决于系统。 目前,这是 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
未为“GetDeviceId”函数正确实现基础 IOMMU 接口。
STATUS_NOT_FOUND
提供的 PDO 表示不在 IOMMU 后面的设备。

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

有关详细信息,请参阅 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