ExInitializePushLock 함수(wdm.h)
푸시 잠금 변수를 초기화합니다.
구문
void ExInitializePushLock(
[Out] PEX_PUSH_LOCK PushLock
);
매개 변수
[Out] PushLock
푸시 잠금 변수를 초기화하려면 최소한 sizeof(EX_PUSH_LOCK) 값이어야 하는 호출자 제공 스토리지에 대한 포인터입니다. 스토리지는 32비트 플랫폼에서 4 바이트를 정렬하고 64비트 플랫폼에서 8 바이트를 정렬해야 합니다.
반환 값
없음
설명
푸시 잠금은 다음과 같은 방법으로 ERESOURCE 구조("리소스"라고도 함)와 유사합니다.
- 푸시 잠금은 스레드 집합의 동기화에 사용할 수 있습니다.
- 공유 또는 단독 액세스를 위해 푸시 잠금을 획득할 수 있습니다.
- 호출자가 푸시 잠금 변수에 대한 스토리지를 제공하지만 EX_PUSH_LOCK 구조는 불투명합니다. 즉, 해당 멤버는 시스템 사용을 위해 예약되어 있습니다.
푸시 잠금은 ERESOURCE 구조에 비해 다음과 같은 이점을 제공합니다.
- 공유 액세스를 위해 푸시 잠금을 대부분 획득하는 경우 ERESOURCE 구조보다 더 효율적입니다.
- 푸시 잠금에 대한 스토리지는 페이징된 풀 또는 비페이지 풀에서 할당할 수 있습니다. ERESOURCE 구조체는 비페이지 풀에서만 할당되어야 합니다.
- EX_PUSH_LOCK 구조체는 ERESOURCE 구조체보다 훨씬 작습니다.
푸시 잠금은 ERESOURCE 구조와 비교할 때 다음과 같은 단점이 있습니다.
- 배타적 액세스 권한을 부여하는 알고리즘은 모든 스레드에 공평하지 않습니다. 높은 수준의 배타적 잠금 경합이 있는 경우 스레드에 배타적 액세스 권한이 부여되는 순서에 대한 보장은 없습니다.
- 푸시 잠금의 현재 소유자를 결정하기 위한 지원 루틴은 없습니다. (ERESOURCE 구조의 사용자는 ExIsResourceAcquiredExclusiveLite와 같은 루틴을 호출하여 현재 스레드가 리소스에 대한 단독 액세스 권한이 있는지 여부를 확인할 수 있습니다.)
- 푸시 잠금은 재귀적으로 획득할 수 없습니다.
단독 액세스를 위한 푸시 잠금을 획득하거나 해제하려면 각각 ExAcquirePushLockExclusive 또는 ExReleasePushLockExclusive를 호출합니다.
공유 액세스에 대한 푸시 잠금을 획득하거나 해제하려면 각각 ExAcquirePushLockShared 또는 ExReleasePushLockShared를 호출합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10, 버전 1809 |
머리글 | wdm.h |