videoPortAcquireSpinLock 函数 (video.h)

VideoPortAcquireSpinLock 函数获取指定的旋转锁。

语法

VIDEOPORT_API VOID VideoPortAcquireSpinLock(
  [in, out] PVOID      HwDeviceExtension,
  [in]      PSPIN_LOCK SpinLock,
  [out]     PUCHAR     OldIrql
);

参数

[in, out] HwDeviceExtension

指向微型端口驱动程序的设备扩展的指针。

[in] SpinLock

指向包含旋转锁的内存位置的指针。

[out] OldIrql

指向将接收当前 IRQL 的内存位置的指针。

返回值

备注

当前 IRQL 保存在 OldIrql 中。 然后,将当前 IRQL 重置为DISPATCH_LEVEL,并获取指定的旋转锁。

使用 VideoPortReleaseSpinLock 释放旋转锁时,必须指定 OldIrql 值。

如果不明智地使用旋转锁,可能会导致严重问题。 具体而言,不执行死锁保护,在保持旋转锁时禁用调度。 因此:

  • 由旋转锁保护的关键区域内的代码既不能分页,也不能对可分页数据进行任何引用。
  • 受旋转锁保护的关键区域中的代码既不能调用任何可能访问可分页数据或引发异常的外部函数,也不能生成任何异常。
  • 调用方应尽快释放 带有 VideoPortReleaseSpinLock 的旋转锁。

要求

要求
最低受支持的客户端 在 Windows XP 和更高版本的 Windows 操作系统中可用。
目标平台 桌面
标头 video.h (包括 Video.h)
Library Videoprt.lib
DLL Videoprt.sys
IRQL <=DISPATCH_LEVEL

另请参阅

VideoPortAcquireSpinLockAtDpcLevel

VideoPortReleaseSpinLock