IoAcquireRemoveLock 매크로(wdm.h)
-
아티클
-
- 읽는 데 2분 걸림
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