NdisAcquireSpinLock 매크로(ndis.h)

NdisAcquireSpinLock 함수는 스핀 잠금을 획득하여 호출자가 스핀 잠금이 보호하는 드라이버 함수 간에 공유되는 리소스에 대한 단독 액세스 권한을 얻습니다.

구문

void NdisAcquireSpinLock(
  [in]  _SpinLock
);

매개 변수

[in] _SpinLock

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

반환 값

없음

설명

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

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

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

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

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

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista에서 NDIS 6.0 및 NDIS 5.1 드라이버(NdisAcquireSpinLock(NDIS 5.1 참조))에 대해 지원됩니다. Windows XP의 NDIS 5.1 드라이버(NdisAcquireSpinLock(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

MiniportHaltEx

MiniportInitializeEx

MiniportInterrupt

MiniportSynchronizeInterrupt

NdisAllocateSpinLock

NdisDprAcquireSpinLock

NdisMSynchronizeWithInterruptEx

NdisReleaseSpinLock