[適用於 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 方法來指定中斷的優先順序、處理器親和性、親和性原則和處理器群組。
如需如何使用登錄覆寫 WdfInterruptSetExtendedPolicy 集 值的相關信息,請參閱 中斷親和性和優先順序。
如果驅動程式在 Windows 7 之前的作系統版本上執行,則架構會忽略驅動程式在呼叫 WdfInterruptSetExtendedPolicy 時,針對處理器組號指定的值。
如果驅動程式是在 Windows Vista 之前的作系統版本上執行,則架構會忽略驅動程式在呼叫 WdfInterruptSetPolicy 或 WdfInterruptSetExtendedPolicy時指定的所有值。
如需指定中斷優先順序、處理器親和性和親和性原則之登錄值和 INF 區段的詳細資訊,請參閱 中斷親和性和優先順序。
如果驅動程式呼叫 WdfInterruptSetExtendedPolicy,在 呼叫 WdfInterruptCreate之後,通常會在 EvtDriverDeviceAdd 回呼函式中執行此動作。
如果您的驅動程式在 EvtDevicePrepareHardware中建立中斷,請勿使用 WdfInterruptSetPolicy 或 WdfInterruptSetExtendedPolicy。 相反地,您可以在 EvtDeviceFilterAddResourceRequirements中套用原則,方法是直接作此回呼函式在其 IoResourceRequirementsList 參數中接收的中斷資源需求。
如需在架構型驅動程式中處理中斷的詳細資訊,請參閱 處理硬體中斷。
範例
下列程式代碼範例會呼叫 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) |