次の方法で共有


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 の