NdisDprAcquireSpinLock 매크로(ndis.h)

NdisDprAcquireSpinLock 함수는 호출자가 다중 프로세서로부터 안전한 방식으로 ISR이 아닌 드라이버 함수 간에 공유되는 리소스에 대한 액세스를 동기화할 수 있도록 스핀 잠금을 획득합니다.

구문

void NdisDprAcquireSpinLock(
  [in]  _SpinLock
);

매개 변수

[in] _SpinLock

호출자가 이미 초기화한 불투명 스핀 잠금에 대한 포인터입니다.

반환 값

없음

설명

미니포트 드라이버는 다른 Ndis를 호출하기 전에 NdisAllocateSpinLock 을 사용하여 NDIS_SPIN_LOCK 형식의 변수를 초기화해야 합니다 . SpinLock 함수입니다. 드라이버는 사용하는 스핀 잠금에 상주 스토리지를 제공해야 합니다.

NdisDprAcquireSpinLock 은 미니포트 드라이버가 IRQL = DISPATCH_LEVEL 실행하는 동안에만 호출할 수 있는 최적화된 버전의 NdisAcquireSpinLock 입니다.

NdisDprAcquireSpinLock을 사용하여 스핀 잠금을 획득한 후 호출자는 NdisDprReleaseSpinLock을 호출하여 해당 잠금을 해제해야 합니다. 미니포트 드라이버는 NdisDprAcquireSpinLock을 호출할 때마다 NdisDprReleaseSpinLock을 호출해야 합니다. 그렇지 않으면 교착 상태가 발생하여 드라이버가 중단됩니다.

NdisDprAcquireSpinLock을 사용하여 획득한 스핀 잠금은 NdisDprReleaseSpinLock과 함께 릴리스되어야 합니다. NdisAcquireSpinLock을 사용하여 획득한 스핀 잠금은 NdisReleaseSpinLock과 함께 해제되어야 합니다.

드라이버는 오랜 기간 동안 스핀 잠금을 유지해서는 안 됩니다(몇 가지 지침 이상). 스핀 잠금을 25 마이크로초 이상 유지하면 시스템 및 드라이버 성능이 모두 저하됩니다.

미니포트 드라이버는 스핀 잠금을 사용하여 다른 함수가 MiniportInterrupt 및/or와 공유하는 리소스를 보호할 수 없습니다. MiniportDisableInterruptEx 함수입니다. 대신 미니포트 드라이버는 를 호출해야 합니다. NdisMSynchronizeWithInterruptEx MiniportSynchronizeInterrupt 함수는 해당 가 있는 동일한 DIRQL에서 이러한 공유 리소스에 액세스합니다.
MiniportInterrupt 및/또는 MiniportDisableInterruptEx 함수는 수행합니다.

NDIS 스핀 잠금 획득 및 해제에 대한 자세한 내용은 네트워크 드라이버의 동기화 및 알림을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista에서 NDIS 6.0 및 NDIS 5.1 드라이버(NdisDprAcquireSpinLock(NDIS 5.1) 참조)에 대해 지원됩니다. Windows XP의 NDIS 5.1 드라이버(NdisDprAcquireSpinLock(NDIS 5.1 참조))에 대해 지원됩니다.
대상 플랫폼 유니버설
헤더 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib
IRQL DISPATCH_LEVEL
DDI 규정 준수 규칙 Irql_Synch_Function(ndis), SpinLock(ndis), SpinLockBalanced(ndis), SpinLockDpr(ndis), SpinLockDprRelease(ndis), SpinlockRelease(ndis)

추가 정보

MiniportDisableInterruptEx

MiniportInterrupt

MiniportSynchronizeInterrupt

NdisAcquireSpinLock

NdisAllocateSpinLock

NdisDprReleaseSpinLock

NdisMSynchronizeWithInterruptEx

NetTimerCallback