2

USB パイプを介してデータを送信するために、垂直ブランク割り込みとの同期が必要なドライバーを作成しています。

ユーザーモードでは、 IDXGIOutput::WaitForVBlankやいくつかの古い関数など、これに使用できる Direct X 関数があります。カーネルからそれらを使用できません。Windows 8 SDK で別のインターフェイスを見つけました: D3DKMTWitForVerticalBlankEventにはカーネル ヘッダー (ヘッダーは SDK の /km/ フォルダーにあります) もありますが、どのユーザー モード ライブラリが必要gdi32.libで、それとリンクするとドライバーが機能しなくなります。

垂直ブランクの発生について (ポーリングなしで) 待機または通知を受け取る方法はありますか?

4

2 に答える 2

1

名前付きイベントを使用できます。

  • ドライバーで、実際の作業を行う前にイベントを待機する名前付きイベントとカーネル スレッドを作成します。
  • ユーザー モード ヘルパー アプリ/サービスで名前付きイベントを開き、IDXGIOutput::WaitForVBlank を呼び出すスレッドを作成してから、すぐに名前付きイベントを設定します。

もちろん、あなたはずっと前にこれを解決して先に進んだと思います...

于 2013-03-12T21:36:02.683 に答える
1

ドライバーのユーザー モード部分を使用することは許容されますか? VBI を待機するユーザー モードでヘルパー プロセスを設定し、そのプロセスで何らかの方法で KM ドライバーをトリガーすることができます。

于 2012-06-25T14:06:14.990 に答える