WDF_SYNCHRONIZATION_SCOPE枚举 (wdfobject.h)

[适用于 KMDF 和 UMDF]

WDF_SYNCHRONIZATION_SCOPE枚举类型指定框架如何同步对象的事件回调函数的执行。

语法

typedef enum _WDF_SYNCHRONIZATION_SCOPE {
  WdfSynchronizationScopeInvalid = 0x00,
  WdfSynchronizationScopeInheritFromParent,
  WdfSynchronizationScopeDevice,
  WdfSynchronizationScopeQueue,
  WdfSynchronizationScopeNone
} WDF_SYNCHRONIZATION_SCOPE;

常量

 
WdfSynchronizationScopeInvalid
值:0x00
保留供系统使用。
WdfSynchronizationScopeInheritFromParent
框架使用为对象的父对象指定的同步范围值。 如果驱动程序未指定WDF_SYNCHRONIZATION_SCOPE类型的值,则此值为默认值。
WdfSynchronizationScopeDevice
框架同步执行驱动程序对象层次结构中设备对象下的所有队列和文件对象的事件回调函数。

此外,如果驱动程序将 自动序列化 成员设置为在配置结构中为中断、DPC、工作项或计时器对象(位于同一设备对象下)TRUE,框架也会同步该对象的回调函数。

框架在调用回调函数之前获取设备对象的同步锁。 因此,这些回调函数一次运行一个。 但是,如果驱动程序创建同一类型的多个对象,但在不同的设备对象下,其事件回调函数可能会在多处理器系统上并发运行。
WdfSynchronizationScopeQueue
此值仅影响队列对象。 框架同步队列对象的事件回调函数,以便一次只执行一个。

此外,如果驱动程序将 AutomaticSerialization 设置为在配置结构中 TRUE,则队列对象或其父设备对象下的工作项或计时器对象也会同步该对象的回调函数。

框架在调用属于该对象的任何回调函数之前获取队列对象的同步锁。

如果驱动程序创建多个队列对象,则其事件回调函数可能会在多处理器系统上并发运行。

对于框架版本 1.9 及更高版本,驱动程序应为单个队列对象设置 WdfSynchronizationScopeQueue。 若要将此范围用于早期版本的框架,驱动程序必须为父设备对象设置 WdfSynchronizationScopeQueue,并为队列对象设置 WdfSynchronizationScopeInheritFromParent
WdfSynchronizationScopeNone
框架不会同步对象的事件回调函数,因此回调函数可能在多处理器系统上并发运行。

注解

驱动程序使用WDF_SYNCHRONIZATION_SCOPE枚举类型来指定对象的 WDF_OBJECT_ATTRIBUTES 结构的 SynchronizationScope 成员。

只能为以下对象指定 SynchronizationScope 值:

  • 框架驱动程序对象
  • 框架设备对象
  • 框架队列对象
该框架将框架驱动程序对象的 SynchronizationScope 值设置为 WdfSynchronizationScopeNone。 它将 SynchronizationScope 框架设备对象和框架队列对象的值设置为 WdfSynchronizationScopeInheritFromParent

有关驱动程序事件回调函数同步的详细信息,请参阅 Framework-Based 驱动程序 同步技术。

要求

要求 价值
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 wdfobject.h (包括 Wdf.h)

另请参阅

WDF_OBJECT_ATTRIBUTES