NdisAcquireSpinLock 宏 (ndis.h)

NdisAcquireSpinLock 函数获取旋转锁,以便调用方获得对驱动程序函数之间共享的资源的独占访问权限,而旋转锁可保护这些资源。

语法

void NdisAcquireSpinLock(
  [in]  _SpinLock
);

参数

[in] _SpinLock

指向已由调用方初始化的不透明旋转锁的指针。

返回值

备注

驱动程序必须在调用任何其他 NdisXxxSpinLock 函数之前使用 NdisAllocateSpinLock 初始化类型NDIS_SPIN_LOCK变量。 驱动程序必须为其使用的旋转锁 () 提供驻留存储。

使用 NdisAcquireSpinLock 获取旋转锁后,调用方必须释放具有对 NdisReleaseSpinLock 的调用的锁。 驱动程序必须在每次调用 NdisAcquireSpinLock 后调用 NdisReleaseSpinLock。 否则,发生死锁,将司机挂上。

必须使用 NdisReleaseSpinLock 释放 NdisAcquireSpinLock 获取的旋转锁。 必须使用 NdisDprReleaseSpinLock 释放使用 NdisDprAcquireSpinLock 获取的旋转锁。

驱动程序不应长时间持有旋转锁, (多个指令) 。 按住旋转锁超过 25 微秒会降低系统和驱动程序性能。

微型端口驱动程序不能使用旋转锁来保护其其他函数与 MiniportInterrupt 和/或共享的资源 MiniportDisableInterruptEx 函数。 相反,微型端口驱动程序必须调用 NdisMSynchronizeWithInterruptEx ,使其 MiniportSynchronizeInterrupt 函数访问其所在的同一 DIRQL 的共享资源
MiniportInterrupt 和/或 MiniportDisableInterruptEx 函数执行。

有关获取和释放 NDIS 旋转锁的详细信息,请参阅 网络驱动程序中的同步和通知

要求

   
最低受支持的客户端 (支持 NDIS 6.0 和 NDIS 5.1 驱动程序,请参阅 Windows Vista 中的 NdisAcquireSpinLock (NDIS 5.1) ) 。 支持 NDIS 5.1 驱动程序 (请参阅 Windows XP 中的 NdisAcquireSpinLock (NDIS 5.1) ) 。
目标平台 通用
标头 ndis.h (包括 Ndis.h)
Library 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