我正在创建一个迷你过滤器驱动程序。在那里我与用户模式应用程序通信,以获得用户的一些数据。我使用“通信端口”与用户模式通信。我试图与用户模式应用程序通信它工作正常。
我得到的其他建议就是使用Windows服务来获取数据,因为它始终在运行,我们希望用户模式应用程序始终运行。
我的问题是
1)我可以在Windows服务中创建“通信端口”吗?
2)如果我创建Windows服务,如何获取特定的用户信息。我的意思是,当我发送请求服务时,服务如何知道需要从哪个用户会话数据中获取?
3)哪一个更好,我的意思是用户模式或Windows服务是更好的解决方案。答案 0 :(得分:0)
1)我可以创建"通信端口"在Windows服务?
是的,您可以在服务中创建它。
2)如果我创建Windows服务,如何获取特定的用户信息。我的意思是,当我发送请求服务时,服务如何知道需要从哪个用户会话数据中获取?
服务确实在系统帐户下运行,而不是在任何已登录的用户下运行。因此,要向当前登录用户显示弹出窗口或对话框,您可以查看WTSGetActiveConsoleSessionId()
或类似的api以获取控制台会话。
3)哪个更好,我的意思是用户模式或Windows服务是更好的解决方案。
取决于您的设计。正如您所提到的,如果您的驱动程序依赖于此类需求,那么服务始终会运行,然后执行服但实际与用户互动需要付出更多努力。
但是如果您的驱动程序可以在没有任何服务/应用程序连接的情况下工作,那么请使用应用程序。