IoReleaseRemoveLockAndWait 매크로(wdm.h)
IoReleaseRemoveLockAndWait 루틴은 IoAcquireRemoveLock대한 이전 호출에서 드라이버가 획득한 제거 잠금을 해제하고 잠금의 모든 획득이 해제될 때까지 기다립니다.
통사론
void IoReleaseRemoveLockAndWait(
[in] RemoveLock,
[in] Tag
);
매개 변수
[in] RemoveLock
호출자가 IoAcquireRemoveLock
[in] Tag
IoAcquireRemoveLock대한 이전 호출에서 전달된 호출자 제공 태그에 대한 포인터입니다.
드라이버가 잠금을 획득할 때 태그 지정한 경우 드라이버는 잠금을 해제할 때 동일한 태그 지정해야 합니다.
반환 값
없음
발언
드라이버는 일반적으로 IRP_MN_REMOVE_DEVICE 요청에 대한 디스패치 코드에서 이 루틴을 호출합니다. 큐에 대기된 I/O 요청을 완료하려면 각 드라이버가 iRP 제거를 다음 하위 드라이버에 전달한 후
드라이버는 IoReleaseRemoveLockAndWait호출하기 전에 제거 잠금을 획득해야 합니다. 일반적으로 드라이버는 switch 문 앞에 DispatchPnp 루틴 초기에 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 규정 준수 규칙 |