c++ - Mini Filter 驱动程序与 Windows 服务的通信

标签 c++ c winapi driver minifilter

我正在创建一个迷你过滤器驱动程序。我与用户模式应用程序通信以获取用户的一些数据。我使用“通信端口”与用户模式通信。我尝试与用户模式应用程序进行通信,它工作正常。

我从其他人那里得到的建议是使用 Windows 服务来获取数据,因为它将始终运行,并且我们希望用户模式应用程序始终运行。

我的问题是

1)我可以在Windows服务中创建“通信端口”吗?

2)如果我创建Windows服务,如何获取特定的用户信息。我的意思是,当我向服务发送请求时,服务如何知道需要从哪个用户 session 数据中获取?

3)哪个更好,我的意思是用户模式或Windows服务是更好的解决方案。

最佳答案

1) Can i create "communication port" in windows service?

是的,您可以在服务中创建它。

2) If i create windows service, how to get specific user information. i mean, when i send the request to service how service come to know from which user session data needs to be fetched?

服务确实在系统帐户下运行,而不是在任何登录用户下运行。因此,要向当前登录的用户显示弹出窗口或对话框,您可以查看 WTSGetActiveConsoleSessionId()或类似的 API 来获取控制台 session 。

3) which one is better, i mean user mode or windows service is better solution.

取决于您的设计。正如您提到的,如果您的驱动程序依赖于此类要求,则服务始终运行,然后执行服务。但真正与用户交互需要付出更多的努力。

但是,如果您的驱动程序可以在没有任何服务/应用程序连接的情况下工作,那么请使用应用程序。

关于c++ - Mini Filter 驱动程序与 Windows 服务的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24675946/

相关文章:

c++ - move 赋值运算符异常

c++ - 类定义中的多个 public/private 关键字

c - 即时将缓冲区写入标准输出

delphi - 如何在没有关联应用程序的情况下直接播放声音文件(mp3、wav 等)?

c - Win32 API CopyFile() 无法发送多个文件

c++ - 使用 Spirit 将 std::vector<std::vector<double> 解析为结构体属性

c++ - std::sort 中的 SIGSEGV,如何缩小范围

c - 我应该为 FreeRTOS 系统上的程序选择什么调度?

c - curses 中的 halfdelay 函数有什么作用?

c++ - 改变击键速度 C++