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 的操作系统版本上运行,框架将忽略驱动程序在调用 WdfInterruptSetPolicyWdfInterruptSetExtendedPolicy 时指定的所有值。

有关指定中断优先级、处理器相关性和关联策略的注册表值和 INF 部分的详细信息,请参阅 中断相关性和优先级

如果驱动程序调用 WdfInterruptSetExtendedPolicy,它通常在调用 WdfInterruptCreate 后在其 EvtDriverDeviceAdd 回调函数中执行此操作。

如果驱动程序在 EvtDevicePrepareHardware 中创建中断,请不要使用 WdfInterruptSetPolicyWdfInterruptSetExtendedPolicy。 相反,可以通过直接操作此回调函数在其 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)

另请参阅

WdfInterruptSetPolicy