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반환 값을 래핑하고 가정합니다.
반환 값 |
묘사 |
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), NsRemoveLockM nRemove(wdm), NsRemoveLockMnSurpriseRemove(wdm), NsRemoveLockQueryMnRemove(wdm), DownAllocate(wdm), PowerDownFail(wdm), PowerUpFail(wdm), RemoveLock(wdm), removeLockCheck(wdm) , RemoveLockForward(wdm), RemoveLockForward2(wdm), RemoveLockForwardDeviceControl(wdm), RemoveLockForwardDeviceControl2(wdm), RemoveLockForwardDeviceControlInternal(wd)m), RemoveLockForwardDeviceControlInternal2(wdm), RemoveLockForwardRead(wdm), RemoveLockForwardRead2(wdm), RemoveLockForwardWrite(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), WmiForward(wdm) |
참고 항목
IoInitializeRemoveLock
IoReleaseRemoveLock
IoReleaseRemoveLockAndWait