FltAcquirePushLockShared 함수(fltkernel.h)
FltAcquirePushLockShared 루틴은 호출 스레드에서 공유 액세스를 위해 지정된 푸시 잠금을 획득합니다.
통사론
VOID FLTAPI FltAcquirePushLockShared(
[in, out] PEX_PUSH_LOCK PushLock
);
매개 변수
[in, out] PushLock
PEX_PUSH_LOCK형식의 불투명 푸시 잠금 포인터입니다. 이 포인터는 FltInitializePushLock이전 호출에 의해 초기화되어야 합니다.
반환 값
없음.
발언
FltAcquirePushLockShared 루틴은 호출 스레드에서 공유 액세스를 위해 지정된 푸시 잠금을 획득합니다.
푸시 잠금은 공유 또는 단독 액세스를 위해 획득할 수 있다는 ERESOURCE 구조(리소스라고도 함)와 유사합니다. 푸시 잠금에 대한 자세한 내용은 FltInitializePushLock대한 참조 항목을 참조하세요.
ERESOURCE 구조와 달리 푸시 잠금은 재귀적으로 획득할 수 없습니다. 호출자가 단독 액세스를 위해 푸시 잠금을 이미 획득한 경우 시스템이 중단됩니다. 호출자가 공유 액세스에 대한 푸시 잠금을 이미 획득한 경우 공유 액세스를 다시 받을 수 있습니다. 그러나 FltAcquirePushLockShared 대한 각 호출은 FltReleasePushLock대한 후속 호출과 일치해야 합니다.
호출자에게 지정된 푸시 잠금에 대한 공유 액세스 권한이 부여되는 경우는 다음 사항에 따라 달라집니다.
푸시 잠금이 현재 소유되지 않은 경우 공유 액세스 권한은 현재 스레드에 즉시 부여됩니다.
다른 스레드에서 공유 액세스를 위해 푸시 잠금을 이미 획득했으며 스레드가 푸시 잠금에 대한 단독 액세스를 기다리지 않는 경우 호출자에게 즉시 공유 액세스 권한이 부여됩니다. 전용 웨이터가 있는 경우 호출자는 대기 상태로 전환됩니다.
다른 스레드에서 단독 액세스를 위해 푸시 잠금을 이미 획득했거나 배타적 액세스를 기다리는 다른 스레드가 있는 경우 푸시 잠금을 획득할 수 있을 때까지 현재 스레드가 대기 상태로 전환됩니다.
FltAcquirePushLockShared 일반 커널 APC 배달을 사용하지 않도록 설정하므로 FltAcquirePushLockShared호출하기 전에 KeEnterCriticalRegion 호출하거나 FsRtlEnterFileSystem필요가 없습니다.
푸시 잠금을 획득한 후 해제하려면 FltReleasePushLock호출합니다. fltAcquirePushLockShared 모든 호출은 FltReleasePushLock대한 후속 호출과 일치해야 합니다.
단독 액세스를 위한 푸시 잠금을 획득하려면 FltAcquirePushLockExclusive호출합니다.
푸시 잠금을 초기화하려면 FltInitializePushLock호출합니다.
푸시 잠금을 삭제하려면 FltDeletePushLock호출합니다.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | fltkernel.h(Fltkernel.h 포함) |
라이브러리 | FltMgr.lib |
IRQL | <= APC_LEVEL |