IoAcquireRemoveLock 매크로(wdm.h)

IoAcquireRemoveLock 루틴은 연결된 디바이스 개체를 디바이스 스택에서 분리하거나 삭제해서는 안 됨을 나타내는 제거 잠금의 수를 증가합니다.

구문

NTSTATUS
IoAcquireRemoveLock (
    _Inout_ PIO_REMOVE_LOCK RemoveLock,
    _In_opt_ PVOID          Tag
    );

매개 변수

[in] RemoveLock

호출자가 IoInitializeRemoveLock에 대한 이전 호출을 사용하여 초기화한 IO_REMOVE_LOCK 구조체에 대한 포인터입니다.

[in, optional] Tag

필요에 따라 제거 잠금을 획득하는 이 instance 식별하는 호출자 제공 태그를 가리킵니다. 예를 들어 드라이버 디스패치 루틴은 일반적으로 이 매개 변수를 루틴이 처리하는 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), 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