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 を する
IoAcquireRemoveLock の
IoDeleteDevice の
IoDetachDevice の
IoInitializeRemoveLock の
IoReleaseRemoveLock の