다음을 통해 공유


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