IoReleaseRemoveLock 매크로(wdm.h)

IoReleaseRemoveLock 루틴은 IoAcquireRemoveLock에 대한 이전 호출로 획득한 제거 잠금을 해제합니다.

구문

void IoReleaseRemoveLock(
  [in]  RemoveLock,
  [in]  Tag
);

매개 변수

[in] RemoveLock

호출자가 IoAcquireRemoveLock에 대한 이전 호출에 전달한 IO_REMOVE_LOCK 구조체에 대한 포인터입니다.

[in] Tag

IoAcquireRemoveLock에 대한 이전 호출에 전달된 호출자 제공 태그에 대한 포인터입니다.

드라이버가 잠금을 획득할 때 태그 를 지정한 경우 드라이버가 잠금을 해제할 때 동일한 태그 를 지정해야 합니다.

IoAcquireRemoveLock 호출에서 Tag를 지정하지 않은 경우 이 매개 변수는 NULL입니다.

반환 값

없음

설명

드라이버가 IoAcquireRemoveLock 이라고 하는 I/O 작업을 완료하면 IoReleaseRemoveLock을 호출합니다.

  • IoCompletion 루틴을 설정하는 I/O 작업(전원 및 PnP IRP 포함)의 경우 드라이버는 IoCompleteRequest를 호출한 후 IoCompletion 루틴에서 IoReleaseRemoveLock을 호출해야 합니다.
  • IoCompletion 루틴을 설정하지 않은 I/O 작업의 경우 드라이버는 현재 IRP를 다음 하위 드라이버에 전달한 후 디스패치 루틴을 종료하기 전에 IoReleaseRemoveLock을 호출해야 합니다.
IoAcquireRemoveLock에 대한 각 호출에는 IoReleaseRemoveLock에 대한 해당 호출이 있어야 합니다.

IoReleaseRemoveLock 은 제거 잠금의 미해결 획득 횟수를 감소합니다. 개수가 0으로 이동하고 드라이버가 IRP_MN_REMOVE_DEVICE 요청을 받은 경우 IoReleaseRemoveLock 은 내부 이벤트를 설정합니다. 드라이버가 디바이스 개체를 삭제할 준비가 되면 비슷한 루틴인 IoReleaseRemoveLockAndWait을 호출합니다. 드라이버는 IRP_MN_REMOVE_DEVICE 요청에 대한 디스패치 코드에서만 이 호출을 수행합니다. IoReleaseRemoveLockAndWait 루틴은 IoReleaseRemoveLock이 획득 횟수가 0임을 나타내는 이벤트를 설정하기 전까지는 반환되지 않습니다. IoReleaseRemoveLockAndWait이 반환되면 드라이버는 디바이스 개체를 안전하게 분리하고 삭제할 수 있습니다.

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 데스크톱
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI 규정 준수 규칙 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), RemoveLockReleaseCreate(wdm), RemoveLockReleaseDeviceControl(wdm), RemoveLockReleaseInternalDeviceControl(wdm), RemoveLockReleasePnp(wdm), RemoveLockReleasePower(wdm), RemoveLockReleaseRead(wdm), RemoveLockReleaseShutdown(wdm), RemoveLockReleaseSystemControl(wdm), RemoveLockReleaseWrite(wdm)

추가 정보

IoAcquireRemoveLock

IoInitializeRemoveLock

IoReleaseRemoveLockAndWait