2

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

所以,

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

要使用哪个功能?

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

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

TIA。

4

1 回答 1

0

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

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

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

于 2013-06-20T16:09:54.253 回答