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 结构的指针。
返回值
无
备注
如果驱动程序提供无效的对象句柄,则会发生 bug 检查。
Windows Vista 和更高版本的操作系统允许驱动程序使用 WdfInterruptSetPolicy 方法指定中断的优先级、处理器相关性和相关性策略。 此外,KMDF 1.9 及更高版本允许驱动程序使用 WdfInterruptSetExtendedPolicy 方法来指定中断的优先级、处理器相关性、关联策略和处理器组。
有关如何使用注册表替代 WdfInterruptSetExtendedPolicy 设置的值的信息,请参阅 中断相关性和优先级。
如果驱动程序在早于 Windows 7 的操作系统版本上运行,框架将忽略驱动程序在调用 WdfInterruptSetExtendedPolicy 时为处理器组编号指定的值。
如果驱动程序在早于 Windows Vista 的操作系统版本上运行,框架将忽略驱动程序在调用 WdfInterruptSetPolicy 或 WdfInterruptSetExtendedPolicy 时指定的所有值。
有关指定中断优先级、处理器相关性和关联策略的注册表值和 INF 部分的详细信息,请参阅 中断相关性和优先级。
如果驱动程序调用 WdfInterruptSetExtendedPolicy,它通常在调用 WdfInterruptCreate 后在其 EvtDriverDeviceAdd 回调函数中执行此操作。
如果驱动程序在 EvtDevicePrepareHardware 中创建中断,请不要使用 WdfInterruptSetPolicy 或 WdfInterruptSetExtendedPolicy。 相反,可以通过直接操作此回调函数在其 IoResourceRequirementsList 参数中接收的中断资源要求,在 EvtDeviceFilterAddResourceRequirements 中应用策略。
有关在基于框架的驱动程序中处理中断的详细信息,请参阅 处理硬件中断。
示例
下面的代码示例调用 WDF_INTERRUPT_EXTENDED_POLICY_INIT 来初始化 WDF_INTERRUPT_EXTENDED_POLICY 结构;设置策略、优先级和目标处理器集的值;并调用 WdfInterruptSetExtendedPolicy。 该示例设置中断的正常优先级,并将中断分配给处理器组 2 中的处理器 0。
#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) |
Library | Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
DDI 符合性规则 | DriverCreate (kmdf) |