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

时间:2012-06-22 13:26:44

标签: windows kernel interrupt wdf kmdf

我正在编写一个需要与垂直空白中断同步的驱动程序,以便向USB管道发送一些数据。

在用户模式下,可以使用直接X功能,如IDXGIOutput::WaitForVBlank和较旧的功能。我无法从内核中使用它们。 我在Windows 8 SDK中找到了另一个界面:D3DKMTWaitForVerticalBlankEvent甚至有一个内核头(头部位于SDK的/ km /文件夹中),但它需要gdi32.lib一个用户模式库和链接与它瘫痪司机。

我有什么方法可以等待或获得有关垂直空白出现的通知(没有投票)?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以使用命名事件。

  • 在您的驱动程序中创建一个命名事件和一个内核线程,以便在执行实际工作之前等待事件。
  • 在用户模式帮助应用程序/服务中打开命名事件并创建一个线程来调用IDXGIOutput :: WaitForVBlank,然后立即设置命名事件。

当然,我想你很久以前就把它解决了,继续前进......