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、工作项或计时器对象的配置结构中将 AutomaticSerialization 成员设置为 TRUE ,则框架还会同步该对象的回调函数。

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

此外,如果驱动程序在队列对象或其父设备对象下的中断、DPC、工作项或计时器对象的配置结构中将 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