ExAcquirePushLockShared 매크로(wdm.h)

호출 스레드에서 공유 액세스에 대해 지정된 푸시 잠금을 획득합니다.

구문

void ExAcquirePushLockShared(
   Lock
);

매개 변수

Lock

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

반환 값

없음

설명

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

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

푸시 잠금을 획득한 후 해제하려면 ExReleasePushLockShared를 호출합니다. ExAcquirePushLockShared에 대한 각 호출은 ExReleasePushLockShared에 대한 후속 호출과 일치해야 합니다.

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

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

  • 다른 스레드에서 공유 액세스를 위해 푸시 잠금을 이미 획득했으며 푸시 잠금에 대한 단독 액세스를 기다리는 스레드가 없는 경우 호출자에게 공유 액세스 권한이 즉시 부여됩니다. 전용 웨이터가 있는 경우 호출자가 대기 상태로 전환됩니다.

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

이 루틴을 호출하기 전에 드라이버는 KeEnterCriticalRegion을 호출하여 일반 커널 APC 배달을 사용하지 않도록 설정해야 합니다. KeLeaveCriticalRegion을 호출하여 푸시 잠금이 해제된 후 다시 활성화할 수 있습니다. 자세한 내용은 APC 비활성화를 참조하세요.

단독 액세스를 위한 푸시 잠금을 획득하려면 ExAcquirePushLockExclusive를 호출합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10, 버전 1809
머리글 wdm.h

추가 정보

ExInitializePushLock

KeEnterCriticalRegion

ExReleasePushLockShared

ExAcquirePushLockExclusive