起初,我不得不承认我是HW Driver的新手。
假设用户可以在Windows 8.1上使用基于ACPI的亮度热键在笔记本键盘上触摸/按下硬件按键(如亮度提升),系统将收到基于ACPI的通知,并增加显示亮度,并显示屏幕显示这是一个垂直条,显示屏幕左上angular的亮度级别。
现在,我们必须主动提出这些基于ACIP的通知,让系统完成增加/减less显示的亮度,并在我们的ACPIfilter驱动程序接收到我们的应用程序发送的IRP时在屏幕上显示屏幕显示(客户端需要此OSD) 。
首先,我读“与硬件button(热键)集成”,但它没有公布如何在内核模式驱动程序中发送这些“ACPI_NOTIFY_INC_BRIGHTnesS_HOTKEY”或“ACPI_NOTIFY_DEC_BRIGHTnesS_HOTKEY”。
是否有可能使用WCF与Windows内核模式软件进行通信?
Windows 8共享打印机错误“无法安装内核模式打印驱动程序。 ”
是否有LdrLoadDll的内核模式callback?
如何从Windows驱动程序(又名内核空间)确定cpu和内存消耗
Windows XP:让我的程序在内核模式下运行?
所以我find了“支持显示输出和ACPI事件” 。 它表示调用DxgkDdiNotifyAcpiEvent来通知显示微端口驱动程序关于ACPI事件。 我不知道我是否误解了我们可以主动调用这个例程来提高ACPI_NOTIFY_INC_BRIGHTnesS_HOTKEY来让系统增加亮度并显示屏幕显示。
我想我可能不能调用DxgkDdiNotifyAcpiEvent,因为我几乎不能构造DxgkDdiNotifyAcpiEvent所需的“PVOID MiniportDeviceContext”。
请原谅我对我的需要和我的研究的详细解释,因为我英语不好…
总之,这里是整个stream程:
我们的应用程序使用CreateFile来打开我们的ACPI-Filter驱动程序,以便与之通信。
应用程序使用DeviceIoControl将Irp发送到ACPI-Filter驱动程序
ACPI-Filter dirver接收到Irp,并引发一个基于ACPI的通知,告诉系统增加/减less显示亮度, 最重要的是显示屏幕显示 (如果ACPI_NOTIFY_INC_BRIGHTnesS_HOTKEY通知成功通知系统,那么没有需要关注这个需求,因为系统将在屏幕上显示OSD)
当谈到第3步,有人可以告诉我如何完成它? 示例代码是最受欢迎的。
或者,可以在UMDF上完成吗?
根据我所研究的,HID报告是满足这种需求的另一种方式,但我认为我应该从头到尾编写HID-minifilter驱动程序,这是没有时间去完成的。 最重要的是,我不熟悉这些模块。
Windows驱动程序列出文件到WinDbg控制台
目录相对ZwCreateFile
如何显示驱动程序的popup消息框(内核模式)?