次の方法で共有


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 構造体へのポインター。

戻り値

なし

解説

ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。

Windows Vista 以降のバージョンのオペレーティング システムを使用すると、ドライバーは WdfInterruptSetPolicy メソッドを使用して割り込みの優先度、プロセッサ アフィニティ、アフィニティ ポリシーを指定できます。 さらに、バージョン 1.9 以降の KMDF を使用すると、ドライバーは 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
Header wdfinterrupt.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf)

こちらもご覧ください

WdfInterruptSetPolicy