Поделиться через


перечисление 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
Платформа синхронизирует выполнение функций обратного вызова событий всех объектов очереди и файлов, которые находятся под объектом устройства в иерархии объектов драйвера.

Кроме того, если драйвер задает для элемента AutomaticSerializationзначение TRUE в структуре конфигурации для объекта прерывания, DPC, рабочего элемента или таймера, который находится под тем же объектом устройства, платформа также синхронизирует функции обратного вызова этого объекта.

Платформа получает блокировку синхронизации объекта устройства перед вызовом функции обратного вызова. Таким образом, эти функции обратного вызова выполняются по одному за раз. Однако если драйвер создает несколько объектов одного типа, но под разными объектами устройства, функции обратного вызова событий могут выполняться параллельно в многопроцессорной системе.
WdfSynchronizationScopeQueue
Это значение влияет только на объекты очереди. Платформа синхронизирует функции обратного вызова событий объекта очереди таким образом, чтобы одновременно выполнялось только одно событие.

Кроме того, если драйвер задает параметру AutomaticSerializationзначение TRUE в структуре конфигурации для объекта прерывания, DPC, рабочего элемента или таймера, который находится под объектом очереди или его родительским объектом устройства, платформа также синхронизирует функции обратного вызова этого объекта.

Платформа получает блокировку синхронизации объекта очереди перед вызовом всех функций обратного вызова, принадлежащих объекту .

Если драйвер создает несколько объектов очереди, функции обратного вызова событий могут выполняться параллельно в многопроцессорной системе.

Для платформы версии 1.9 и более поздних драйвер должен задать WdfSynchronizationScopeQueue для отдельных объектов очереди. Чтобы использовать эту область с более ранними версиями платформы, драйвер должен задать WdfSynchronizationScopeQueue для родительского объекта устройства и WdfSynchronizationScopeInheritFromParent для объекта очереди.
WdfSynchronizationScopeNone
Платформа не синхронизирует функции обратного вызова событий объекта, поэтому функции обратного вызова могут выполняться параллельно в многопроцессорной системе.

Комментарии

Драйверы используют тип перечисления WDF_SYNCHRONIZATION_SCOPE для указания элемента SynchronizationScopeструктуры WDF_OBJECT_ATTRIBUTES объекта.

Значение SynchronizationScope можно указать только для следующих объектов:

  • Объекты драйвера платформы
  • Объекты устройств платформы
  • Объекты очередей платформы
Платформа задает значение SynchronizationScope для объектов драйвера платформы wdfSynchronizationScopeNone. Он задает значение SynchronizationScope для объектов устройств платформы и объектов очередей платформы в значение WdfSynchronizationScopeInheritFromParent.

Дополнительные сведения о синхронизации функций обратного вызова событий драйвера см. в разделе Методы синхронизации для драйверов Framework-Based.

Требования

Требование Значение
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfobject.h (включая Wdf.h)

См. также раздел

WDF_OBJECT_ATTRIBUTES