IoAcquireRemoveLock マクロ (wdm.h)
IoAcquireRemoveLock ルーチンは、削除ロックの数を増やし、関連付けられているデバイス オブジェクトをデバイス スタックからデタッチしたり削除したりしないことを示します。
構文
NTSTATUS
IoAcquireRemoveLock (
_Inout_ PIO_REMOVE_LOCK RemoveLock,
_In_opt_ PVOID Tag
);
パラメーター
[in] RemoveLock
呼び出し元が IoInitializeRemoveLock の以前の呼び出しで初期化したIO_REMOVE_LOCK構造体へのポインター。
[in, optional] Tag
必要に応じて、削除ロックを取得するこのインスタンスを識別する呼び出し元が指定したタグを指します。 たとえば、ドライバーディスパッチ ルーチンは、通常、ルーチンが処理している IRP へのポインターにこのパラメーターを設定します。
ドライバーが IoAcquireRemoveLock の呼び出しでタグを指定する場合、ドライバーは、対応する IoReleaseRemoveLock の呼び出しで同じタグを指定する必要があります。
タグは一意である必要はありませんが、デバッグ中に意味のあるものにする必要があります。
戻り値
なし
IoAcquireRemoveLock マクロは、IOAcquireRemoveLockEx の戻り値をラップして想定し、NTSTATUS を返します。
戻り値 |
説明 |
STATUS_SUCCESS |
呼び出しが成功したことを示します。 |
STATUS_DELETE_PENDING |
ドライバーがデバイスのIRP_MN_REMOVE_DEVICEを受信し、 IoReleaseRemoveLockandWait を呼び出したことを示すエラー値。 そのルーチンは、ドライバーに制御を返す前に、すべての削除ロックがクリアされるのを待機しています。 |
ルーチンが STATUS_SUCCESS以外の値を返す場合は、デバイスで新しい操作を開始しないでください。
ドライバーは、ロックを使用する前に IoInitializeRemoveLock を呼び出して削除ロックを初期化する必要があります。
ドライバーは、不要になったときにロックを解放するために IoReleaseRemoveLock を呼び出す必要があります。
詳細については、「 ロックの削除の使用」を参照してください。
要件
要件 |
値 |
対象プラットフォーム |
デスクトップ |
Header |
wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library |
NtosKrnl.lib |
[DLL] |
NtosKrnl.exe |
IRQL |
<= DISPATCH_LEVEL |
DDI コンプライアンス規則 |
CompleteRequestStatusCheck(wdm), MarkDevicePower(wdm), MarkPower(wdm), MarkPowerDown(wdm), MarkQueryRelations(wdm), MarkStartDevice(wdm), MultRemoveLock(wdm), NsRemoveLockMnRemove(wdm), NsRemoveLockMnSurpriseRemove(wdm), NsRemoveLockQueryMnRemove(wdm), PowerDownAllocate(wdm), PowerDownFail(wdm), PowerUpFail(wdm), RemoveLock(wdm)、 RemoveLockCheck(wdm)、 RemoveLockForward(wdm)、 RemoveLockForward2(wdm)、 RemoveLockForwardDeviceControl(wdm)、 RemoveLockForwardDeviceControl2(wdm)、 RemoveLockForwardDeviceControlInternal(wdm)、 RemoveLockForwardDeviceControlInternal2(wdm)、 RemoveLockForwardRead(wdm)、 RemoveLockForwardRead2(wdm)、 RemoveLockForwardWrite(wdm)、、 RemoveLockForwardWrite2(wdm), RemoveLockMnRemove(wdm), RemoveLockMnRemove2(wdm), RemoveLockMnSurpriseRemove(wdm)、 RemoveLockQueryMnRemove(wdm)、 RemoveLockRelease2(wdm)、 RemoveLockReleaseCleanup(wdm)、 RemoveLockReleaseClose(wdm)、 RemoveLockReleaseCreate(wdm)、 RemoveLockReleaseDeviceControl(wdm)、 RemoveLockReleaseInternalDeviceControl(wdm)、、 RemoveLockReleasePnp(wdm)、 RemoveLockReleasePower(wdm)、 RemoveLockReleaseRead(wdm)、 RemoveLockReleaseShutdown(wdm)、 RemoveLockReleaseSystemControl(wdm)、 RemoveLockReleaseWrite(wdm)、 WmiForward(wdm) |
こちらもご覧ください
IoInitializeRemoveLock
IoReleaseRemoveLock
IoReleaseRemoveLockAndWait