NdisDprAcquireSpinLock 宏 (ndis.h)

NdisDprAcquireSpinLock 函数获取旋转锁,以便调用方可以通过多处理器安全的方式同步对非 ISR 驱动程序函数之间共享的资源的访问。

语法

void NdisDprAcquireSpinLock(
  [in]  _SpinLock
);

参数

[in] _SpinLock

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

返回值

没有

言论

微型端口驱动程序必须先使用 NdisAllocateSpinLock 初始化类型NDIS_SPIN_LOCK变量,然后才能调用任何其他 Ndis.。SpinLock 函数。 驱动程序必须为它使用的旋转锁(s)提供常驻存储。

NdisDprAcquireSpinLock 是优化版本的 NdisAcquireSpinLock,微型端口驱动程序只能在 IRQL = DISPATCH_LEVEL 运行时调用。

使用 NdisDprAcquireSpinLock获取旋转锁后,调用方必须释放具有 NdisDprReleaseSpinLock的调用锁定。 微型端口驱动程序必须在每次 调用 NdisDprAcquireSpinLock后调用 NdisDprReleaseSpinLock。 否则,将发生死锁,挂起驱动程序。

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

驱动程序不应长时间持有旋转锁(不止一些说明)。 按住旋转锁超过 25 微秒会降低系统和驱动程序性能。

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

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

要求

要求 价值
最低支持的客户端 Windows Vista 中支持 NDIS 6.0 和 NDIS 5.1 驱动程序(请参阅 NdisDprAcquireSpinLock (NDIS 5.1)。 支持 NDIS 5.1 驱动程序(请参阅 Windows XP 中的 NdisDprAcquireSpinLock (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

MiniportInterrupt

MiniportSynchronizeInterrupt

NdisAcquireSpinLock

NdisAllocateSpinLock

NdisDprReleaseSpinLock

NdisMSynchronizeWithInterruptEx

NetTimerCallback