NdisAcquireSpinLock 宏 (ndis.h)
NdisAcquireSpinLock 函数获取旋转锁,以便调用方获得对驱动程序函数之间共享的资源的独占访问权限,而旋转锁可以保护这些资源。
语法
void NdisAcquireSpinLock(
[in] _SpinLock
);
参数
[in] _SpinLock
指向已由调用方初始化的不透明旋转锁的指针。
返回值
没有
言论
驱动程序必须使用 NdisAllocateSpinLock 初始化类型NDIS_SPIN_LOCK变量,然后才能调用任何其他 NdisXxxSpinLock 函数。 驱动程序必须为它使用的旋转锁(s)提供常驻存储。
使用 NdisAcquireSpinLock获取旋转锁后,调用方必须释放具有 NdisReleaseSpinLock调用的锁。 驱动程序必须在每次 调用 NdisAcquireSpinLock后调用 NdisReleaseSpinLock。 否则,将发生死锁,挂起驱动程序。
必须使用 NdisReleaseSpinLock释放使用 NdisAcquireSpinLock 获取的旋转锁。 必须使用 NdisDprAcquireSpinLock 获取的旋转锁,NdisDprReleaseSpinLock。
驱动程序不应长时间持有旋转锁(不止一些说明)。 按住旋转锁超过 25 微秒会降低系统和驱动程序性能。
微型端口驱动程序无法使用旋转锁来保护其其他函数与 MiniportInterrupt 和/或共享的资源
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) |