다음을 통해 공유


FltAcquirePushLockExclusive 함수(fltkernel.h)

FltAcquirePushLockExclusive 매크로는 호출 스레드에서 단독 액세스를 위해 지정된 푸시 잠금을 획득합니다.

구문

VOID FLTAPI FltAcquirePushLockExclusive(
  [in, out] PEX_PUSH_LOCK PushLock
);

매개 변수

[in, out] PushLock

PEX_PUSH_LOCK 형식의 불투명 푸시 잠금 포인터입니다. 이 포인터는 FltInitializePushLock에 대한 이전 호출에 의해 초기화되어야 합니다.

반환 값

없음

설명

FltAcquirePushLockExclusive 는 호출 스레드에서 단독 액세스를 위해 지정된 푸시 잠금을 획득합니다.

푸시 잠금은 공유 또는 단독 액세스를 위해 획득할 수 있다는 ERESOURCE 구조(리소스라고도 함)와 유사합니다. 푸시 잠금에 대한 자세한 내용은 FltInitializePushLock에 대한 참조 항목을 참조하세요.

ERESOURCE 구조와 달리 푸시 잠금은 재귀적으로 획득할 수 없습니다. 호출자가 배타적 또는 공유 액세스에 대한 푸시 잠금을 이미 획득한 경우 스레드가 중단됩니다.

호출자에게 지정된 푸시 잠금에 대한 단독 액세스 권한이 부여되는 경우는 다음 사항에 따라 달라집니다.

  • 푸시 잠금이 현재 소유되지 않은 경우 현재 스레드에 즉시 단독 액세스 권한이 부여됩니다.

  • 다른 스레드에서 배타적 또는 공유 액세스를 위해 푸시 잠금을 이미 획득한 경우 푸시 잠금을 획득할 수 있을 때까지 현재 스레드가 대기 상태로 전환됩니다.

FltAcquirePushLockExclusive는 일반 커널 APC 배달을 사용하지 않도록 설정하므로 FltAcquirePushLockExclusive를 호출하기 전에 KeEnterCriticalRegion 또는 FsRtlEnterFileSystem을 호출할 필요가 없습니다.

푸시 잠금을 획득한 후 해제하려면 FltReleasePushLock을 호출합니다. FltAcquirePushLockExclusive에 대한 모든 호출은 FltReleasePushLock에 대한 후속 호출과 일치해야 합니다.

공유 액세스에 대한 푸시 잠금을 획득하려면 FltAcquirePushLockShared를 호출합니다.

푸시 잠금을 초기화하려면 FltInitializePushLock을 호출합니다.

푸시 잠금을 삭제하려면 FltDeletePushLock을 호출합니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 fltkernel.h(Fltkernel.h 포함)
라이브러리 FltMgr.lib
IRQL <= APC_LEVEL

추가 정보

FltAcquirePushLockExclusiveEx

FltAcquirePushLockShared

FltDeletePushLock

FltInitializePushLock

FltReleasePushLock

FsRtlEnterFileSystem

KeEnterCriticalRegion