我正在创建一个迷你过滤器驱动程序。我与用户模式应用程序通信以获取用户的一些数据。我使用“通信端口”与用户模式通信。我尝试与用户模式应用程序进行通信,它工作正常。
我从其他人那里得到的建议是使用 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/