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 (include Video.h)
Videoprt.lib
DLL Videoprt.sys
IRQL <=DISPATCH_LEVEL

另请参阅

VideoPortAcquireSpinLockAtDpcLevel

VideoPortReleaseSpinLock