指定回调同步模式

警告

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 入门

驱动程序可以指定框架如何调用其回调函数。 驱动程序在调用 IWDFDriver::CreateDevice 方法为设备创建 设备对象 之前指定同步 (或锁定) 模式。 若要指定同步模式,驱动程序应调用 IWDFDeviceInitialize::SetLockingConstraint 方法。 调用其 IDriverEntry::OnDeviceAdd 方法将设备添加到系统时,驱动程序会收到指向 IWDFDeviceInitialize 接口的指针。

驱动程序可以在 IWDFDeviceInitialize::SetLockingConstraintLockType 参数中指定WDF_CALLBACK_CONSTRAINT枚举类型中的下列值之一,以标识锁定模式。 指定的约束 (或锁定) 的类型取决于硬件设备可以利用的并行度以及驱动程序可以处理多少。

含义

(0)

指示驱动程序中未同步任何回调函数。

WdfDeviceLevel (1)

指示驱动程序中的所有队列回调函数已同步。

注意 如果驱动程序不调用 IWDFDeviceInitialize::SetLockingConstraint 来指定值,框架会将此属性的默认值设置为 WdfDeviceLevel

约束仅适用于队列回调函数,不适用于即插即用 (PnP) 和电源管理回调函数。 队列回调函数包括:

请求完成回调函数 (IRequestCallbackRequestCompletion::OnCompletion) 不是队列回调函数。 因此,它们不会同步。