IInterruptSync インターフェイス (portcls.h)
IInterruptSync
インターフェイスは、割り込みサービス ルーチン (ISR) の一覧の実行を非 ISR ルーチンと同期する割り込み同期オブジェクトを表します。 PortCls システム ドライバーは、このインターフェイスを実装し、アダプター ドライバーに公開します。 ミニポート ドライバーは、割り込みリソースに接続する新しい IInterruptSync
オブジェクトを作成する、PcNewInterruptSync PortCls 関数を呼び出すことによって、IInterruptSync
オブジェクトへの参照を取得します。
IInterruptSync
は、IUnknown インターフェイスから継承します。
IInterruptSync::RegisterServiceRoutine メソッドは、ISR を同期オブジェクトに関連付けます。 1 つの同期オブジェクトに複数の ISR を関連付けることができます。 割り込みが発生すると、同期オブジェクトは、PcNewInterruptSync 関数の Mode パラメーターに従って、指定した順序と方法でリスト内の ISR を実行します。
IInterruptSync
のもう 1 つの側面は、ISR の実行を ISR 以外の他のルーチンと同期できることです。 ISR 以外のルーチンが IInterruptSync::CallSynchronizedRoutine に渡され、実行が開始されると、同期オブジェクトに登録されている ISR の実行は、そのルーチンの実行が完了するまで保留されます。
RegisterServiceRoutine と CallSynchronizedRoutine メソッド の両方が、次のように定義されている PINTERRUPTSYNCROUTINE 型の関数ポインターを受け入れます。
typedef NTSTATUS (*PINTERRUPTSYNCROUTINE)
(
IN struct IInterruptSync *InterruptSync,
IN PVOID DynamicContext
);
InterruptSync メンバーは、同期オブジェクトへのポインターです。 DynamicContext メンバーには、呼び出されたときにルーチンに渡されるコンテキスト値が含まれています。
詳細については、「割り込み同期オブジェクト を参照してください。
継承
IInterruptSync インターフェイスは、IUnknown インターフェイスから継承します。
メソッド
IInterruptSync インターフェイスには、次のメソッドがあります。
IInterruptSync::CallSynchronizedRoutine CallSynchronizedRoutine メソッドは、割り込みサービス ルーチン (ISR) ではなく、実行を ISR と同期する必要があるルーチンを呼び出します。 |
IInterruptSync::Connect Connect メソッドは、同期オブジェクトを割り込みに接続します。 |
IInterruptSync::D isconnect Disconnect メソッドは、同期オブジェクトを割り込みから切断します。 |
IInterruptSync::GetKInterrupt GetKInterrupt メソッドは、ポート クラス同期オブジェクトから WDM 割り込みオブジェクトを取得します。 |
IInterruptSync::RegisterServiceRoutine RegisterServiceRoutine メソッドは、割り込みが発生したときに呼び出される割り込みサービス ルーチン (ISR) を登録します。 |
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | ウィンドウズ |
ヘッダー | portcls.h |