NdisAcquireSpinLock 宏 (ndis.h)
NdisAcquireSpinLock 函数获取旋转锁,以便调用方获得对自旋锁保护的驱动程序函数之间共享的资源的独占访问权限。
语法
void NdisAcquireSpinLock(
[in] _SpinLock
);
参数
[in] _SpinLock
指向已由调用方初始化的不透明自旋锁的指针。
返回值
无
备注
驱动程序必须使用 NdisAllocateSpinLock 初始化类型为 NDIS_SPIN_LOCK 的变量,然后才能调用任何其他 NdisXxxSpinLock 函数。 驱动程序必须为其使用的旋转锁 () 提供驻留存储。
使用 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) |