次の方法で共有


WdfInterruptSetPolicy 関数 (wdfinterrupt.h)

[KMDF と UMDF に適用]

WdfInterruptSetPolicy メソッドは、指定された割り込みの割り込み優先度、プロセッサ アフィニティ、およびアフィニティ ポリシーを指定します。

構文

void WdfInterruptSetPolicy(
  [in] WDFINTERRUPT           Interrupt,
  [in] WDF_INTERRUPT_POLICY   Policy,
  [in] WDF_INTERRUPT_PRIORITY Priority,
  [in] KAFFINITY              TargetProcessorSet
);

パラメーター

[in] Interrupt

フレームワーク割り込みオブジェクトへのハンドル。

[in] Policy

り込みのプロセッサ アフィニティ ポリシーを指定するWDF_INTERRUPT_POLICY型の列挙子。

[in] Priority

割り込みの優先度を指定する WDF_INTERRUPT_PRIORITY型の列挙子。

[in] TargetProcessorSet

Policy パラメーターが WdfIrqPolicySpecifiedProcessors に設定されている場合に、割り込みのプロセッサ アフィニティを指定する KAFFINITY 型の値。

戻り値

なし

解説

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

Windows Vista 以降のバージョンのオペレーティング システムを使用すると、ドライバーは割り込みの優先度、プロセッサ アフィニティ、アフィニティ ポリシーを指定できます。 レジストリを使用して WdfInterruptSetPolicy が設定する値をオーバーライドする方法については、「 割り込みアフィニティと優先度」を参照してください。

Windows Vista より前のバージョンのオペレーティング システムでドライバーが実行されている場合、フレームワークは WdfInterruptSetPolicy を呼び出すときにドライバーが指定する値を無視します。

割り込みの優先度、プロセッサ アフィニティ、アフィニティ ポリシーを指定するレジストリ値と INF セクションの詳細については、「 割り込みアフィニティと優先度」を参照してください。

ドライバーが WdfInterruptSetPolicy を呼び出す場合、通常は WdfInterruptCreate を呼び出した後、EvtDriverDeviceAdd コールバック関数で呼び出されます。

ドライバーが EvtDevicePrepareHardware で割り込みを作成する場合は、WdfInterruptSetPolicy または WdfInterruptSetExtendedPolicy を使用しないでください。 代わりに、このコールバック関数が IoResourceRequirementsList パラメーターで受け取る割り込みリソース要件を直接操作して、 EvtDeviceFilterAddResourceRequirements にポリシーを適用します。

フレームワーク ベースのドライバーでの割り込みの処理の詳細については、「 ハードウェア割り込みの処理」を参照してください。

次のコード例では、通常の優先順位で、プロセッサ 0 にデバイス割り込みを割り当てます。

#define AFFINITY_MASK(n) ((ULONG_PTR)1 << (n))

WdfInterruptSetPolicy(
                      Interrupt,
                      WdfIrqPolicySpecifiedProcessors,
                      WdfIrqPriorityNormal,
                      AFFINITY_MASK(0)
                      );

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdfinterrupt.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf)

こちらもご覧ください

EvtDriverDeviceAdd

WdfInterruptCreate

WdfInterruptSetExtendedPolicy