在内核模式下等​​待垂直空白?

我正在写一个需要与垂直空白中断同步的驱动程序来向USBpipe道发送一些数据。

在用户模式下有像这样的IDXGIOutput :: WaitForVBlank和几个较老的Direct X函数。 我无法从内核中使用它们。 我在Windows 8 SDK中发现了另外一个接口: D3DKMTWaitForVerticalBlankEvent甚至有一个内核头文件(头文件位于SDK的/ km /文件夹中),但是它需要gdi32.lib ,用户模式库和链接它的驱动程序会被瘫痪。

有没有什么办法可以等待或得到关于垂直空白发生(没有投票)的通知?

拥有驱动程序的用户模式部分是否可以接受? 您可以在用户模式下有一个辅助进程,等待VBI,并以某种方式触发您的KM驱动程序。

你可以使用一个命名的事件。

  • 在你的驱动程序中创建一个命名的事件和一个内核线程来等待事件,然后再做实际的工作。
  • 在用户模式的帮助程序/服务中打开指定事件并创建一个线程来调用IDXGIOutput :: WaitForVBlank,然后立即设置指定的事件。

当然我可以想像你很久以前就开始工作了