Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Применимо к 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) |