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 |
Header | wdm.h |
IRQL | <= DIRQL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport) |