NdisInitializeReadWriteLock 함수(ndis.h)

NdisInitializeReadWriteLock 함수는 NDIS_RW_LOCK 형식의 읽기 또는 쓰기 잠금 변수를 초기화합니다.

참고 읽기-쓰기 잠금 인터페이스는 NdisInitializeReadWriteLock 대신 NdisAllocateRWLock을 사용해야 하는 NDIS 6.20 이상 드라이버에서는 더 이상 사용되지 않습니다.
 

구문

void NdisInitializeReadWriteLock(
  [out] PNDIS_RW_LOCK Lock
);

매개 변수

[out] Lock

잠금을 나타내는 불투명 NDIS_RW_LOCK 변수에 대한 포인터입니다. 호출자는 이 잠금을 사용하여 ISR이 아닌 드라이버 스레드 간에 공유되는 리소스에 대한 쓰기 또는 읽기 액세스 권한을 얻을 수 있습니다.

반환 값

없음

설명

NDIS_RW_LOCK 변수는 공유 리소스에 대한 쓰기 액세스를 한 번에 하나의 비 ISR 드라이버 스레드로 제한하는 데 사용됩니다. 이 NDIS_RW_LOCK 여러 비 ISR 드라이버 스레드가 해당 리소스에 대한 동시 읽기 액세스를 허용할 수 있습니다. 이러한 읽기 액세스는 쓰기 액세스 중에 허용되지 않습니다.

NdisInitializeReadWriteLock에 전달되는 Lock 포인터는 다른 모든 Ndis에 필요한 매개 변수입니다. ReadWriteLock 함수.

드라이버가 NdisAcquireReadWriteLock 함수를 호출하여 리소스에 대한 쓰기 또는 읽기 권한을 얻기 전에 드라이버는 NdisInitializeReadWriteLock 을 호출하여 해당 리소스와 연결된 잠금을 초기화해야 합니다. 호출자는 잠금 에서 변수에 대한 비페이지 스토리지를 제공해야 합니다.

NdisInitializeReadWriteLock을 호출한 후 드라이버는 NdisAcquireReadWriteLock을 호출하여 리소스에 대한 쓰기 또는 읽기 액세스 권한을 얻을 수 있습니다. 한 번에 하나의 ISR이 아닌 드라이버 스레드만 리소스에 대한 쓰기 권한을 얻을 수 있습니다. 하나의 비 ISR 스레드에 쓰기 액세스 권한이 있는 경우 다른 비 ISR 스레드의 모든 읽기 및 쓰기 액세스는 쓰기 액세스 소유자가 잠금을 해제할 때까지 기다려야 합니다. 그러나 ISR이 아닌 스레드에 읽기 권한이 있는 경우 다른 비 ISR 스레드는 동시에 읽기 권한을 얻을 수 있습니다.

읽기를 위해 자주 액세스되고 쓰기에 자주 액세스하지 않는 리소스에 대해 이 유형의 잠금을 초기화하고 사용합니다.

리소스 액세스가 완료되면 드라이버는 다음을 호출합니다. NdisReleaseReadWriteLock 함수.

드라이버가 초기화하는 각 잠금은 다음 중 하나를 수행합니다.

  • IRQL <= DISPATCH_LEVEL 실행되는 드라이버 스레드의 동시 쓰기 및 읽기 액세스로부터 개별 공유 리소스 집합을 보호합니다.
  • IRQL <= DISPATCH_LEVEL 실행되는 드라이버 스레드의 동시 읽기 액세스에 개별 공유 리소스 집합을 노출합니다.
NdisInitializeReadWriteLock의 호출자는 모든 IRQL에서 실행할 수 있습니다. 일반적으로 호출자는 초기화 중에 IRQL = PASSIVE_LEVEL 실행됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 NdisInitializeReadWriteLock 대신 NdisAllocateRWLock을 사용해야 하는 NDIS 6.20 이상 드라이버에는 사용되지 않습니다. Windows Vista에서 NDIS 6.0 및 NDIS 5.1 드라이버(NdisInitializeReadWriteLock(NDIS 5.1) 참조)에 대해 지원됩니다. Windows XP에서 NDIS 5.1 드라이버(NdisInitializeReadWriteLock(NDIS 5.1) 참조)에 대해 지원됩니다.
대상 플랫폼 유니버설
헤더 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib
DLL Ndis.sys
IRQL 모든 수준(설명 섹션 참조)

추가 정보

NdisAcquireReadWriteLock

NdisReleaseReadWriteLock