[适用于 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 参数中接收的中断资源要求,在 EvtDeviceFilterAddResourceRequirementss中应用策略。
有关在基于框架的驱动程序中处理中断的详细信息,请参阅 处理硬件中断。
例子
以下代码示例调用 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) |
图书馆 | Wdf01000.sys(KMDF):WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
DDI 符合性规则 | DriverCreate(kmdf) |