NdisInitializeReadWriteLock 函数 (ndis.h)

NdisInitializeReadWriteLock 函数初始化 NDIS_RW_LOCK类型的读或写锁变量。

注释 NDIS 6.20 及更高版本的驱动程序弃用读写锁接口,该接口应使用 NdisAllocateRWLock,而不是 NdisInitializeReadWriteLock
 

语法

void NdisInitializeReadWriteLock(
  [out] PNDIS_RW_LOCK Lock
);

参数

[out] Lock

指向表示锁的不透明 NDIS_RW_LOCK 变量的指针。 调用方可以使用此锁来获取对非 ISR 驱动程序线程之间共享的资源的写入或读取访问权限。

返回值

没有

言论

NDIS_RW_LOCK 变量用于一次将共享资源的写入访问权限限制为一个非 ISR 驱动程序线程。 此 NDIS_RW_LOCK 可以允许多个非 ISR 驱动程序线程对这些资源进行并发读取访问。 写入访问期间不允许此类读取访问。

传递给 NdisInitializeReadWriteLockLock 指针是所有其他 Ndis 的必需参数。ReadWriteLock 函数。

在驱动程序调用 NdisAcquireReadWriteLock 函数以获取对资源的写入或读取访问权限之前,驱动程序必须调用 NdisInitializeReadWriteLock 来初始化与该资源关联的锁。 调用方必须在锁定 为变量提供非分页存储。

调用 NdisInitializeReadWriteLock后,驱动程序可以调用 NdisAcquireReadWriteLock 以获取对资源的写入或读取访问权限。 一次只能有一个非 ISR 驱动程序线程获取对资源的写入访问权限。 当一个非 ISR 线程具有写入访问权限时,其他非 ISR 线程的所有读取和写入访问都必须等待,直到写入访问持有者释放锁。 但是,如果非 ISR 线程具有读取访问权限,则其他非 ISR 线程可以同时获取读取访问权限。

对经常访问的资源初始化并使用这种类型的锁进行读取和不经常访问以写入。

资源访问完成后,驱动程序将调用 NdisReleaseReadWriteLock 函数。

驱动程序初始化的每个锁执行以下作之一:

  • 保护在 IRQL <= DISPATCH_LEVEL 上运行的驱动程序线程同时进行写入和读取访问的一组离散共享资源。
  • 公开一组离散的共享资源,供在 IRQL <= DISPATCH_LEVEL 运行的驱动程序线程同时读取访问。
NdisInitializeReadWriteLock 的调用方可以在任何 IRQL 上运行。 通常,调用方在初始化期间在 IRQL = PASSIVE_LEVEL运行。

要求

要求 价值
最低支持的客户端 已弃用 NDIS 6.20 及更高版本的驱动程序,该驱动程序应使用 NdisAllocateRWLock 而不是 NdisInitializeReadWriteLock。 Windows Vista 中支持 NDIS 6.0 和 NDIS 5.1 驱动程序(请参阅 NdisInitializeReadWriteLock (NDIS 5.1)。 Windows XP 中支持 NDIS 5.1 驱动程序(请参阅 NdisInitializeReadWriteLock (NDIS 5.1)。
目标平台 普遍
标头 ndis.h (包括 Ndis.h)
Ndis.lib
DLL Ndis.sys
IRQL 任何级别 (请参阅“备注”部分)

另请参阅

NdisAcquireReadWriteLock

NdisReleaseReadWriteLock