gpt4 book ai didi

c++ - 如何将系统事件从驱动程序发送到应用层?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:57:00 26 4
gpt4 key购买 nike

我正在为使用 Windows Embedded Compact 7 操作系统的设备编写驱动程序,其中将运行使用 .NET 3.5 编写的应用程序。我的要求是,我需要向这些应用程序发送一些自定义定义的系统事件(针对驱动程序中发生的某些情况),以便在调用事件时执行应用程序中编写的相应事件处理程序。

所以,

我应该怎么做才能调用/引发此类事件?

要使用哪个函数?

系统事件与消息有何不同?

如何在 .NET 应用程序中添加事件处理程序?

TIA。

最佳答案

使用普通的 win32 API,我将创建一个命名事件(即为 CreateEvent() 提供一个名称)。这可以跨进程边界使用,包括跨内核/用户空间边界。然后,您只需使用 WaitForSingleObject() 和相关函数来检查事件状态。

如果您有一个流驱动程序,您也可以从应用程序调用 ReadFile() 并简单地在驱动程序的相应处理函数中停止。这也使得向事件添加数据变得非常容易。此外,它提供了访问驱动程序的不同进程之间的分离,甚至是同一进程中的不同实例。将此与上面的事件进行比较,该事件实际上在系统范围内可见,并且也可以由不同的进程设置,尽管您可以在一定程度上限制它。

另一种选择是使用窗口消息(PostMessage()、SendMessage() 等),它们也可以跨进程边界工作。我不确定这是否适用于内核。然后这些将最终出现在例如“正常”消息队列中。应用程序主窗口或您之前告诉驱动程序的任何其他窗口。与其他两种方法相比,您需要一个窗口作为目标,因此它只能以一种方式工作,并且您不知道消息从哪里来。

关于c++ - 如何将系统事件从驱动程序发送到应用层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17017047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com