Функция 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 , которую вызывающий объект выделяет и инициализирует.

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

None

Remarks

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

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

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

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

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

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

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

Если драйвер создает прерывания в EvtDevicePrepareHardware, не используйте WdfInterruptSetPolicy или WdfInterruptSetExtendedPolicy. Вместо этого можно применить политику в EvtDeviceFilterAddRequirements, напрямую управляя требованием к ресурсу прерывания, которое эта функция обратного вызова получает в параметре 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 (включая Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Правила соответствия DDI DriverCreate(kmdf)

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

WdfInterruptSetPolicy