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 매크로는 NTSTATUS를 반환하는 IoAcquireRemoveLockEx 의 반환 값을 래핑하고 가정합니다.

반환 값 Description
STATUS_SUCCESS 호출이 성공했음을 나타냅니다.
STATUS_DELETE_PENDING 드라이버가 디바이스에 대한 IRP_MN_REMOVE_DEVICE 받았으며 IoReleaseRemoveLockandWait 을 호출했음을 나타내는 오류 값입니다. 해당 루틴은 드라이버에 제어를 반환하기 전에 모든 잠금 제거가 지워지길 기다리고 있습니다.

루틴이 STATUS_SUCCESS 이외의 값을 반환하는 경우 디바이스에서 새 작업을 시작하지 마세요.

드라이버는 잠금을 사용하기 전에 IoInitializeRemoveLock 호출을 사용하여 잠금 제거를 초기화해야 합니다.

드라이버는 더 이상 필요하지 않은 잠금을 해제하기 위해 IoReleaseRemoveLock 을 호출해야 합니다.

자세한 내용은 잠금 제거 사용을 참조하세요.

요구 사항

   
대상 플랫폼 데스크톱
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 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), RemoveLockReleaseDeviceControl(wdm), RemoveLockReleaseInternalDeviceControl(wdm), RemoveLockReleasePnp(wdm), RemoveLockReleasePower(wdm), RemoveLockReleaseRead(wdm), RemoveLockReleaseShutdown(wdm), RemoveLockReleaseSystemControl(wdm), RemoveLockReleaseWrite(wdm), WmiForward(wdm)

참고 항목

IoInitializeRemoveLock

IoReleaseRemoveLock

IoReleaseRemoveLockAndWait