NdisDprAcquireSpinLock 宏 (ndis.h)
NdisDprAcquireSpinLock 函数获取一个旋转锁,以便调用方可以以多处理器安全方式同步对非 ISR 驱动程序函数之间共享的资源的访问。
语法
void NdisDprAcquireSpinLock(
[in] _SpinLock
);
参数
[in] _SpinLock
指向调用方已初始化的不透明旋转锁的指针。
返回值
无
备注
微型端口驱动程序必须先使用 NdisAllocateSpinLock 初始化 NDIS_SPIN_LOCK 类型的变量,然后才能调用任何其他 Ndis。。SpinLock 函数。 驱动程序必须为它使用的旋转锁 () 提供驻留存储。
NdisDprAcquireSpinLock 是 NdisAcquireSpinLock 的优化版本,微型端口驱动程序只能在 IRQL = DISPATCH_LEVEL 运行时调用它。
使用 NdisDprAcquireSpinLock 获取旋转锁后,调用方必须通过调用 NdisDprReleaseSpinLock 释放该锁。 微型端口驱动程序必须在每次调用 NdisDprAcquireSpinLock 后调用 NdisDprReleaseSpinLock。 否则,会发生死锁,挂起驱动程序。
必须使用 NdisDprAcquireSpinLock 释放使用 NdisDprReleaseSpinLock 获取的旋转锁。 必须使用 NdisReleaseSpinLock 释放使用 NdisAcquireSpinLock 获取的旋转 锁。
驱动程序不应长时间保持旋转锁, (多个指令) 。 保持旋转锁超过 25 微秒会降低系统和驱动程序的性能。
微型端口驱动程序不能使用旋转锁来保护其其他函数与 MiniportInterrupt 和/或共享的资源 MiniportDisableInterruptEx 函数。 相反,微型端口驱动程序必须调用 NdisMSynchronizeWithInterruptEx ,使其 MiniportSynchronizeInterrupt 函数在其所在的同一 DIRQL 上访问此类共享资源
MiniportInterrupt 和/或 MiniportDisableInterruptEx 函数具有。
有关获取和释放 NDIS 旋转锁的详细信息,请参阅 网络驱动程序中的同步和通知。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 支持 NDIS 6.0 和 NDIS 5.1 驱动程序 (请参阅 Windows Vista 中的 NdisDprAcquireSpinLock (NDIS 5.1) ) 。 NDIS 5.1 驱动程序支持 (请参阅 Windows XP 中的 NdisDprAcquireSpinLock (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) |