KeAcquireInterruptSpinLock 関数 (wdm.h)
KeAcquireInterruptSpinLock ルーチンは、割り込みオブジェクトに関連付けられているスピン ロックを取得します。
構文
KIRQL KeAcquireInterruptSpinLock(
PKINTERRUPT Interrupt
);
パラメーター
Interrupt
[入力、出力]割り込みオブジェクトへのポインターを指定します。 この値は、IoConnectInterrupt または IoConnectInterruptEx指定する必要があります。
戻り値
KeAcquireInterruptSpinLock 、ルーチンが呼び出された時点で現在の IRQL を返します。 この値は、スピン ロックが解除されたときに、KeReleaseInterruptSpinLock に渡されます。
備考
ドライバーは、割り込みのスピン ロックを使用して、割り込みの ISR と共有されているメモリへのアクセスを同期します。 ドライバーは、KeReleaseInterruptSpinLock呼び出すことによってスピン ロックを解放できます。
割り込みスピン ロックが保持されている間に実行されるコードは、指定された 割り込みに対して IRQL = DIRQL で実行されるため、非常に迅速に実行する必要があります。 詳細については、「クリティカル セクションの使用 」を参照してください。
ドライバー ルーチンを ISR に同期するには、KeSynchronizeExecution ルーチンを使用することをお勧めします。
Windows 8 以降では、ドライバーは IoConnectInterruptExを使用して、IRQL = PASSIVE_LEVEL で実行され、割り込み同期にスピン ロックを使用しない割り込みサービス ルーチンを登録できます。 割り込み がパッシブ レベルの ISR に接続する割り込みオブジェクトを指している場合、KeAcquireInterruptSpinLock バグ チェックが発生します。 詳細については、「Passive-Level 割り込みサービス ルーチン を使用するを参照してください。
呼び出し元は、割り込みの IRQL <= DIRQL で実行されている必要があります。 (これは、割り込み の作成時に、IoConnectInterrupt の SynchronizeIrql パラメーターとして渡されるドライバー 値です)。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP |
ヘッダー | wdm.h |
IRQL | <= DIRQL |
DDI コンプライアンス規則 を する | hwStorPortProhibitedDDDIs(storport) を する |