Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何在ACPI过滤器驱动程序(WDM)中使用ACPI通知发送基于ACPI的亮度热键?_Windows_Notifications_Driver_Acpi_Kernel Mode - Fatal编程技术网

Windows 如何在ACPI过滤器驱动程序(WDM)中使用ACPI通知发送基于ACPI的亮度热键?

Windows 如何在ACPI过滤器驱动程序(WDM)中使用ACPI通知发送基于ACPI的亮度热键?,windows,notifications,driver,acpi,kernel-mode,Windows,Notifications,Driver,Acpi,Kernel Mode,首先,我必须承认我对硬件驱动程序开发是新手 假设在Windows 8.1上,用户可以使用基于ACPI的亮度热键触摸/按下笔记本键盘上的硬件键(如亮度上升),系统将收到一个基于ACPI的通知,并提高显示器的亮度,显示屏幕上的显示器,该显示器是一个垂直条,显示屏幕左上角的亮度水平。 现在,我们必须主动发出这些基于ACIP的通知,以便在ACPI筛选器驱动程序收到应用程序发送的IRP时,让系统完成增加/降低显示器亮度,并在屏幕上显示屏幕显示(客户端需要此OSD) 首先我读了,但它没有发布如何在内核模式驱

首先,我必须承认我对硬件驱动程序开发是新手

假设在Windows 8.1上,用户可以使用基于ACPI的亮度热键触摸/按下笔记本键盘上的硬件键(如亮度上升),系统将收到一个基于ACPI的通知,并提高显示器的亮度,显示屏幕上的显示器,该显示器是一个垂直条,显示屏幕左上角的亮度水平。

现在,我们必须主动发出这些基于ACIP的通知,以便在ACPI筛选器驱动程序收到应用程序发送的IRP时,让系统完成增加/降低显示器亮度,并在屏幕上显示屏幕显示(客户端需要此OSD)

首先我读了,但它没有发布如何在内核模式驱动程序中发送这些“ACPI\U NOTIFY\U INC\U BRIGHT\U热键”或“ACPI\U NOTIFY\U DEC\U BRIGHT\U热键”

所以我发现。它表示调用DxgkDdiNotifyAcpiEvent以通知显示微型端口驱动程序有关ACPI事件。 我不知道我是否误解了我们可以主动调用此例程来提高ACPI_NOTIFY_INC_BRIGHTNESS_热键,让系统增加亮度并显示屏幕显示

我想我可能无法调用dxgkdnotifyacpievent,因为我几乎无法构造dxgkdnotifyacpievent所需的“PVOID MiniportDeviceContext”

请原谅我对我的需求和研究的冗长解释,因为我的英语很差

总之,整个流程如下:

  • 我们的应用程序使用CreateFile打开我们的ACPI过滤器驱动程序,以便与之通信
  • 应用程序使用DeviceIoControl向ACPI筛选器驱动程序发送Irp
  • ACPI Filter dirver接收Irp并发出基于ACPI的通知,告知系统增加/减少显示器的亮度,并且,最重要的是什么,显示屏幕上的显示器(如果ACPI_NOTIFY_INC_BRIGHTNESS_热键通知成功通知系统,则无需考虑此需要,因为系统将在屏幕上显示OSD)
  • 说到第三步,有人能告诉我如何完成吗? 最受欢迎的是示例代码

    或者,它可以在UMDF上完成吗

    根据我的研究,HID报告是满足这一需求的另一种方法,但我认为我应该从头到尾编写HID微过滤器驱动程序,这是没有时间来完成的。最重要的是,我不熟悉这些模块。

    我发现。这有用吗?