NdisAcquireReadWriteLock 함수(ndis.h)
NdisAcquireReadWriteLock 함수는 호출자가 드라이버 스레드 간에 공유되는 리소스에 대한 쓰기 또는 읽기 액세스에 사용하는 잠금을 획득합니다.
통사론
void NdisAcquireReadWriteLock(
[in, out] PNDIS_RW_LOCK Lock,
[in] BOOLEAN fWrite,
[_out_] PLOCK_STATE LockState
);
매개 변수
[in, out] Lock
잠금을 나타내는 불투명 변수에 대한 포인터입니다. 호출자는 이 잠금을 사용하여 공유 리소스에 액세스할 수 있습니다.
[in] fWrite
부울 값입니다. 값이 TRUE 경우 이 함수는 공유 리소스에 대한 쓰기 액세스 권한을 제공합니다. 값이 FALSE 경우 이 함수는 읽기 액세스 권한이 제공됩니다.
[_out_] LockState
LockState . 잠금 상태를 추적하는 불투명 변수에 대한 포인터입니다. 이 변수는 호출자가 잠금을 획득하고 해제하는 시간 사이의 간격에 존재합니다. 호출자는 동일한 비 ISR 드라이버 스레드에서 잠금을 획득하려는 각 시도에 대해 다른 형식 LOCK_STATE 변수를 사용해야 합니다.
반환 값
없음
발언
드라이버는 다음을 사용하여 NDIS_RW_LOCK 형식의 변수를 초기화해야 합니다. 드라이버가 다른 NdisXxxReadWriteLock 함수를 호출하기 전에 NdisInitializeReadWriteLock 함수를. 드라이버는 사용하는 잠금에 대한 상주 스토리지를 제공해야 합니다.
NdisAcquireReadWriteLock사용하여 잠금을 획득한 후 호출자는 다음을 호출하여 해당 잠금을 해제해야 합니다.
NdisReleaseReadWriteLock 함수입니다. 잠금의 참조 수를 줄이려면 드라이버가 호출해야 합니다.
NdisReleaseReadWriteLock은 NdisAcquireReadWriteLock대한 각 호출에 대해 한 번.
드라이버 스레드 간에 공유되는 리소스를 수정하려면 드라이버 스레드가 쓰기 잠금을 획득해야 합니다. 이러한 리소스를 모니터링하기 위해 드라이버 스레드는 읽기 전용 잠금을 획득해야 합니다. 읽기 액세스에는 스핀 잠금에 대한 연동 작업 또는 경합이 필요하지 않습니다. 읽기 전용 액세스를 사용하면 운영 체제 및 드라이버 성능을 유지하는 데 도움이 됩니다.
드라이버 스레드는 25 마이크로초 이상 쓰기 잠금을 유지해서는 안 됩니다. 장기간 쓰기 잠금을 유지하면 운영 체제와 드라이버 성능이 모두 저하됩니다.
드라이버는 잠금을 사용하여 다른 함수가 MiniportInterrupt 및/또는와 공유하는 읽기 또는 쓰기 액세스로부터 리소스를 보호할 수 없습니다.
MiniportDisableInterruptEx 함수입니다. 대신 드라이버가 호출해야 합니다.
NdisMSynchronizeWithInterruptEx
MiniportSynchronizeInterrupt 함수는 해당 리소스가 있는 동일한 DIRQL에서 이러한 공유 리소스에 액세스합니다.
MiniportInterrupt 및/또는
MiniportDisableInterruptEx 함수는 수행합니다.
NdisAcquireReadWriteLock 항상 IRQL을 발생합니다. 쓰기 작업의 경우 NdisAcquireReadWriteLock 스핀 잠금을 획득하여 IRQL을 발생합니다. 읽기 작업의 경우 NdisAcquireReadWriteLock IRQL을 IRQL = DISPATCH_LEVEL명시적으로 발생합니다.
NDIS 스핀 잠금을 획득하고 해제하는 방법에 대한 자세한 내용은 네트워크 드라이버 동기화 및 알림을 참조하세요.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | NdisAcquireRWLockRead 또는 NdisAcquireRWLockWrite를 대신 사용해야 하는 NDIS 6.20 이상 드라이버에는 사용되지 않습니다. Windows Vista에서 NDIS 6.0 및 NDIS 5.1 드라이버(NdisAcquireReadWriteLock(NDIS 5.1 참조)에 대해 지원됩니다. Windows XP에서 NDIS 5.1 드라이버(NdisAcquireReadWriteLock(NDIS 5.1) 참조)에 대해 지원됩니다. |
대상 플랫폼 | 보편적 |
헤더 | ndis.h(Ndis.h 포함) |
라이브러리 | Ndis.lib |
DLL | Ndis.sys |
IRQL | <= DISPATCH_LEVEL |
DDI 규정 준수 규칙 | Irql_Synch_Function(ndis) |