次の方法で共有


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
ヘッダー wdm.h
IRQL <= DIRQL
DDI コンプライアンス規則 する hwStorPortProhibitedDDDIs(storport) する

関連項目

IoConnectInterrupt

KeReleaseInterruptSpinLock

KeSynchronizeExecution