IoReleaseRemoveLockAndWait マクロ (wdm.h)
IoReleaseRemoveLockAndWait ルーチンは、以前の呼び出しで IoAcquireRemoveLockドライバーが取得した削除ロックを解放し、ロックのすべての取得が解放されるまで待機します。
構文
void IoReleaseRemoveLockAndWait(
[in] RemoveLock,
[in] Tag
);
パラメーター
[in] RemoveLock
IoAcquireRemoveLockへの以前の呼び出しで呼び出し元が渡した IO_REMOVE_LOCK 構造体へのポインター。
[in] Tag
IoAcquireRemoveLockへの以前の呼び出しで渡された呼び出し元が指定したタグ ポインター。
ドライバーがロックを取得したときに タグ を指定した場合、ドライバーは、ロックを解除するときに同じ タグ を指定する必要があります。
IoAcquireRemoveLock の呼び出しで Tagが指定されていない場合、このパラメーターは NULLされます。
戻り値
何一つ
ドライバーは通常、IRP_MN_REMOVE_DEVICE 要求のディスパッチ コードでこのルーチンを呼び出します。 キューに登録された I/O 要求の完了を許可するには、各ドライバーは、IoReleaseRemoveLockAndWaitを呼び出す必要があります、削除 IRP を次の下位ドライバーに渡し、メモリを解放する前 に IoDetachDeviceを呼び出すか、IoDeleteDevice呼び出します。
IoReleaseRemoveLockAndWait ルーチンは、バス ドライバーが未処理である可能性がある IRP (たとえば、IRP_MN_WAIT_WAKE IRP) を取り消すのを待機します。
ドライバーは、IoReleaseRemoveLockAndWait呼び出す前に、削除ロックを取得する必要があります。 通常、ドライバーは、DispatchPnp ルーチンの早い段階で、switch ステートメントの前に IoAcquireRemoveLock を呼び出します。 その結果、ロックは、IRP_MN_REMOVE_DEVICEを処理するコードで IoReleaseRemoveLockAndWait 呼び出す前に必要な取得を含め、PnP 操作ごとに取得されます。
IRP_MN_REMOVE_DEVICE ディスパッチ コード以外のコードからロックを解放するには、IoReleaseRemoveLock使用します。
特定の削除ロック IoReleaseRemoveLockAndWait が呼び出された後、同じ削除ロックに対する IoAcquireRemoveLock を する後続の呼び出しは失敗します。
IoReleaseRemoveLockAndWait は、削除ロックのすべての未処理の取得が解放されるまで戻りません。
IoReleaseRemoveLockAndWait 戻った後、ドライバーは、デバイスが削除される準備が整っており、I/O 操作を実行できない状態であると見なす必要があります。 そのため、ドライバーは、削除ロックを再初期化する IoInitializeRemoveLock ルーチンを呼び出す必要があります。 ドライバー検証ツールの によってドライバーが検証されている間 この規則に違反すると、バグ チェックが発生します。
詳細については、「ロックの削除を使用する」を参照してください。
必要条件
要件 |
価値 |
サポートされる最小クライアント |
Windows 2000 以降で使用できます。 |
ターゲット プラットフォーム の |
デスクトップ |
ヘッダー |
wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
ライブラリ |
NtosKrnl.lib |
DLL |
NtosKrnl.exe |
IRQL |
PASSIVE_LEVEL |
DDI コンプライアンス規則 を する |
IoReleaseRemoveLockAndWaitOutsideRemoveDevice(wdm), RemoveLock(wdm), RemoveLockCheck(wdm), LockMnRemove(wdm), RemoveLockMnRemove2(wdm), RemoveLockReleaseCleanup(wdm), RemoveLockReleaseClose(wdm), RemoveLockReleaseCreate(wdm), RemoveLockReleaseDeviceControl(wdm), RemoveLockReleaseInternalDeviceControl(wdm), RemoveLockReleasePower(wdm), RemoveLockReleaseRead(wdm), RemoveLockReleaseShutdown(wdm)、 RemoveLockReleaseSystemControl(wdm)、 RemoveLockReleaseWrite(wdm) |
関連項目
DispatchPnp を する
IRP_MN_WAIT_WAKE
IoAcquireRemoveLock の
IoDeleteDevice の
IoDetachDevice の
IoInitializeRemoveLock の
IoReleaseRemoveLock の