(UMDF 1) 创建中断对象

警告

UMDF 2 是最新版本的 UMDF,取代了 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 未向 UMDF 1 添加新功能,并且较新版本的 Windows 10 上对 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。

存档的 UMDF 1 示例可在 Windows 11 版本 22H2 - 2022 年 5 月驱动程序示例更新中找到。

有关详细信息,请参阅使用 UMDF 入门

处理设备硬件中断的 UMDF 驱动程序必须为每个设备可以支持的每个中断创建框架中断对象。

通常,驱动程序会在 IDriverEntry::OnDeviceAdd 中创建框架中断对象。 但是,也可以在 IPnpCallbackHardware2::OnPrepareHardware 中创建中断对象。

若要创建框架中断对象,驱动程序必须初始化 WUDF_INTERRUPT_CONFIG 结构并将其传递给 IWDFDevice3::CreateInterrupt 方法。 此方法注册以下驱动程序提供的事件回调函数:

OnInterruptEnable
启用硬件中断。

OnInterruptDisable
禁用硬件中断。

OnInterruptIsr
中断服务例程 (中断的 ISR) 。

OnInterruptWorkItem
中断的工作器例程。

(可选)驱动程序可以调用 IWDFInterrupt::SetPolicyIWDFInterrupt::SetExtendedPolicy 来指定其他中断参数。

在即插即用 (PnP) 管理器将系统资源(如中断矢量)分配给设备之前,框架调用驱动程序的 IDriverEntry::OnDeviceAdd 回调函数。 PnP 管理器分配资源后,框架会将中断资源存储在设备的中断对象中。 不支持即插即用的 (驱动程序无法使用中断对象。)

Windows Vista 和更高版本的操作系统支持消息信号中断 (MSI) 。 若要使操作系统支持设备的 MSI,驱动程序的 INF 文件必须在注册表中设置一些值。 有关如何设置这些值的信息,请参阅 在注册表中启用Message-Signaled中断

如果设备可以支持一定数量的 MSI 消息,PnP 管理器将尝试将该数量的消息分配给设备。 如果 PnP 管理器无法分配设备可以支持的所有消息,则只会向设备分配一条消息。

驱动程序应为设备可以支持的每个中断向量或 MSI 消息创建框架中断对象。 如果 PnP 管理器未向设备授予设备可以支持的所有中断资源,则不会使用额外的中断对象,并且不会调用其回调函数。