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


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

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

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

Синтаксис

void WdfInterruptSetPolicy(
  [in] WDFINTERRUPT           Interrupt,
  [in] WDF_INTERRUPT_POLICY   Policy,
  [in] WDF_INTERRUPT_PRIORITY Priority,
  [in] KAFFINITY              TargetProcessorSet
);

Параметры

[in] Interrupt

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

[in] Policy

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

[in] Priority

Перечислитель WDF_INTERRUPT_PRIORITY, указывающий приоритет прерывания.

[in] TargetProcessorSet

Значение типа KAFFINITY, указывающее сходство процессора для прерывания, если параметр Policy имеет значение WdfIrqPolicySpecifiedProcessors.

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

None

Remarks

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

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

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

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

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

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

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

Примеры

В следующем примере кода прерывание устройства назначается процессору 0 с обычным приоритетом.

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

WdfInterruptSetPolicy(
                      Interrupt,
                      WdfIrqPolicySpecifiedProcessors,
                      WdfIrqPriorityNormal,
                      AFFINITY_MASK(0)
                      );

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfinterrupt.h (включая Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Правила соответствия DDI DriverCreate(kmdf)

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

EvtDriverDeviceAdd

WdfInterruptCreate

WdfInterruptSetExtendedPolicy