Функция 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) |