3

最初に、私が HW ドライバーの開発に不慣れであることを認めなければなりません。

ユーザーが Windows 8.1 で ACPI ベースの明るさのホット キーを備えたノートブック キーボードのハードウェア キー (明るさアップなど) をタッチ/押下できると仮定すると、システムは ACPI ベースの通知を受け取り、ディスプレイの明るさを上げて表示します。画面の左上に輝度レベルを表示する垂直バーであるオンスクリーンディスプレイ。

ここで、ACPI フィルター ドライバーがアプリケーションから送信された IRP を受信したときに、システムがディスプレイの明るさの増減を完了し、オン スクリーン ディスプレイ (クライアントにはこの OSD が必要) が画面に表示されるように、これらの ACIP ベースの通知を率先して発生させる必要があります。 .

最初に「ハードウェア ボタン (ホット キー) との統合」を読みましたが、カーネル モード ドライバーでこれらの「ACPI_NOTIFY_INC_BRIGHTNESS_HOTKEY」または「ACPI_NOTIFY_DEC_BRIGHTNESS_HOTKEY」を送信する方法が公開されていません。

それで、「Supporting Display Output and ACPI Events」を見つけました。これは、DxgkDdiNotifyAcpiEvent が呼び出されて、ACPI イベントについてディスプレイ ミニポート ドライバーに通知することを示しています。このルーチンを率先して呼び出して ACPI_NOTIFY_INC_BRIGHTNESS_HOTKEY を発生させ、システムが輝度を上げてオンスクリーン ディスプレイを表示できると誤解したかどうかはわかりません。

DxgkDdiNotifyAcpiEvent に必要な「PVOID MiniportDeviceContext」を構築することはほとんどできないため、おそらく DxgkDdiNotifyAcpiEvent を呼び出すことはできないと思います。

私の貧弱な英語のために、私の必要性と私の研究についての冗長な説明を許してください...

一言で言えば、全体の流れは次のとおりです。

  1. 私たちのアプリは、CreateFile を使用して ACPI-Filter ドライバーを開き、それと通信します。
  2. アプリは DeviceIoControl を使用して Irp を ACPI-Filter ドライバーに送信します
  3. ACPI-Filter ドライバーは Irp を受け取り、ACPI ベースの通知を生成して、ディスプレイの明るさを増減するようにシステムに指示します。最も重要なことは、オンスクリーン ディスプレイを表示することです (ACPI_NOTIFY_INC_BRIGHTNESS_HOTKEY 通知がシステムに正常に通知された場合、システムが画面に OSD を表示するため、この必要性を考慮する必要があります)。

ステップ3になると、誰かがそれを達成する方法を教えてもらえますか? サンプルコードは大歓迎です。

または、UMDF で実行できますか?

私が調査したところによると、HID レポートはこのニーズを満たすもう 1 つの方法ですが、HID ミニフィルター ドライバーを最初から最後まで作成する必要があると思います。最も重要なことは、私はこれらのモジュールに慣れていないということです。

4

0 に答える 0