KeAcquireInStackQueuedSpinLock 関数 (wdm.h)
KeAcquireInStackQueuedSpinLock ルーチンは、キューに登録されたスピン ロックを取得します。
構文
void KeAcquireInStackQueuedSpinLock(
PKSPIN_LOCK SpinLock,
PKLOCK_QUEUE_HANDLE LockHandle
);
パラメーター
SpinLock
[入力、出力]取得するスピン ロックを指定します。 このパラメーターは、KeInitializeSpinLockで初期化されている必要があります。
LockHandle
[out]呼び出し元が指定した KLOCK_QUEUE_HANDLE 変数へのポインター。この変数は、ルーチンがスピン ロック キュー ハンドルを返すために使用できます。 呼び出し元は、ロックを解放するときに、この値 KeReleaseInStackQueuedSpinLock に渡します。 ドライバーは通常、ロックを取得するたびにスタックに構造体を割り当てる必要があります。 ドライバーは、複数の呼び出し元サイトから同じKLOCK_QUEUE_HANDLEを使用しないでください。
戻り値
何一つ
備考
KeAcquireInStackQueuedSpinLock は、キューに入ったスピン ロックとしてスピン ロックを取得します。 詳細については、「キューに登録されたスピン ロックの
通常のスピン ロックと同様に、キューに入れたスピン ロックは、非常に特殊な状況でのみ使用する必要があります。 スピン ロックを使用する場合の詳細については、「KeAcquireSpinLock
このルーチンは、スピン ロックを取得するときにDISPATCH_LEVELする IRQL レベルを上げます。 呼び出し元がDISPATCH_LEVELで既に実行されていることが保証されている場合は、KeAcquireInStackQueuedSpinLockAtDpcLevel
スピン ロックを解放 KeReleaseInStackQueuedSpinLock の呼び出しは、IRQL = DISPATCH_LEVELで行う必要があります。 この呼び出しは、KeAcquireInStackQueuedSpinLock 呼び出しの開始時にオペレーティング システムが保存した元の IRQL を復元します。 ドライバーが複数のキューに置かれたスピン ロックを連続して取得した場合、元の IRQL を適切に復元するには、ドライバーが逆に解放する必要があります。
ドライバーは、KeAcquireSpinLock と
必要条件
要件 | 価値 |
---|---|
ヘッダー | wdm.h (Wdm.h を含む) |
IRQL | IRQL <= DISPATCH_LEVEL |
DDI コンプライアンス規則 を |
HwStorPortProhibitedDDIs(storport), MarkingQueuedIrps(wdm), QueuedSpinLock(storport), QueuedSpinLock(wdm), QueuedSpinLockRelease(storport), QueuedSpinLockRelease(wdm) |