次の方法で共有


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 で実行されている必要があります。 (これは、割り込みの作成時に IoConnectInterruptSynchronizeIrql パラメーターとして渡されるドライバーの値です)。

要件

要件
サポートされている最小のクライアント Windows XP
Header wdm.h
IRQL <= DIRQL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport)

こちらもご覧ください

IoConnectInterrupt

KeReleaseInterruptSpinLock

KeSynchronizeExecution