Функция WdfInterruptSetExtendedPolicy (wdfinterrupt.h)

[Применимо к KMDF и UMDF]

Метод WdfInterruptSetExtendedPolicy указывает приоритет прерывания, сходство процессора, политику сходства и группу обработчиков для указанного прерывания.

Синтаксис

VOID WdfInterruptSetExtendedPolicy(
  [in] WDFINTERRUPT                   Interrupt,
  [in] PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
);

Параметры

[in] Interrupt

Дескриптор объекта прерывания платформы.

[in] PolicyAndGroup

Указатель на структуру WDF_INTERRUPT_EXTENDED_POLICY, которую вызывающий выделяет и инициализирует.

Возвращаемое значение

Нет

Замечания

Ошибка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Windows Vista и более поздние версии операционной системы позволяют драйверам использовать метод WdfInterruptSetPolicy, чтобы указать приоритет прерывания, сходство процессора и политику сходства. Кроме того, версии 1.9 и более поздних версий KMDF позволяют драйверам использовать метод WdfInterruptSetExtendedPolicy, чтобы указать приоритет прерывания, сходство процессора, политику сходства и группу обработчиков.

Сведения об использовании реестра для переопределения значений, которые наборов WdfInterruptSetExtendedPoli cy, см. в разделе Сходство прерываний и приоритет.

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

Если драйвер работает в версии операционной системы, которая выше Windows Vista, платформа игнорирует все значения, которые драйвер указывает при вызове WdfInterruptSetPolicy или WdfInterruptSetExtendedPolicy.

Дополнительные сведения о значениях реестра и разделах INF, определяющих приоритет прерывания, сходство процессора и политику сходства, см. в разделе Сходство прерываний и приоритет.

Если драйвер вызывает WdfInterruptSetExtendedPolicy, он обычно делает это в своей функции обратного вызова EvtDriverDeviceAdd после вызова WdfInterruptCreate.

Если драйвер создает прерывания в EvtDevicePrepareHardware, не используйте WdfInterruptSetPolicy или WdfInterruptSetExtendedPolicy. Вместо этого можно применить политику в EvtDeviceFilterAddResourceRequirements, напрямую управляя требованием к ресурсу прерывания, которое эта функция обратного вызова получает в параметре IoResourceRequirementsList.

Дополнительные сведения об обработке прерываний в драйверах на основе платформы см. в обработке аппаратных прерываний.

Примеры

В следующем примере кода вызывается WDF_INTERRUPT_EXTENDED_POLICY_INIT для инициализации структуры WDF_INTERRUPT_EXTENDED_POLICY; задает значения для набора политик, приоритетов и целевого процессора; и вызывает WdfInterruptSetExtendedPolicy. В примере устанавливается обычный приоритет прерывания и назначается прерывание процессору 0 в группе процессоров 2.

#define AFFINITY_MASK(n) ((ULONG_PTR)1 << (n))

WDF_INTERRUPT_EXTENDED_POLICY myExtendedPolicy;

WDF_INTERRUPT_EXTENDED_POLICY_INIT(&myExtendedPolicy);
myExtendedPolicy.Policy = WdfIrqPolicySpecifiedProcessors;
myExtendedPolicy.Priority = WdfIrqPriorityNormal;
myExtendedPolicy.TargetProcessorSetAndGroup.Mask = AFFINITY_MASK(0);
myExtendedPolicy.TargetProcessorSetAndGroup.Group = 2;

WdfInterruptSetExtendedPolicy(
                              Interrupt,
                              &myExtendedPolicy
 );

Требования

Требование Ценность
целевая платформа универсальный
минимальная версия KMDF 1.9
минимальная версия UMDF 2.0
Заголовок wdfinterrupt.h (include Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
правил соответствия DDI DriverCreate(kmdf)

См. также

WdfInterruptSetPolicy