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 来初始化与该资源关联的锁。 调用方必须为 Lock 处的变量提供非分页存储。

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

为经常访问用于读取和不常访问用于写入的资源初始化和使用此类型的锁。

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

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

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

要求

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

另请参阅

NdisAcquireReadWriteLock

NdisReleaseReadWriteLock