C#Windows服务无法调用devcon

时间:2018-11-02 16:59:36

标签: c# windows process windows-services devcon

我创建了Windows服务,以便在Windows启动时初始化PCI设备。为此,该服务必须调用Devcon.exe,这会从本地INF-file加载匹配的驱动程序。通过使用异步过程(带有事件)来调用“ Devcon.exe”工具,该过程正在事件中捕获重定向的StandardOutput并解析其输出。如果没有其他Windows服务依赖于我的服务,这将是完美的选择。

但是,如果另一个服务依赖于我的服务(也在手动启动依赖服务时-这意味着在完全初始化的系统上而不进入引导环境),则“ Devcon.exe”卡住,从而导致Windows服务冻结。作为一种解决方法,我重新设计了Windows服务,现在使用C ++函数UpdateDriverForPlugAndPlayDevices(通过使用PInvoke包装为C#)来加载驱动程序。另外,由于Windows服务没有UI访问权限,因此我正在使用标志INSTALLFLAG_NONINTERACTIVE

不幸的是,现在我有同样的行为-如果我的服务被调用而没有任何依赖关系,则一切正常,但是如果另一个Windows服务依赖于我的服务,则UpdateDriverForPlugAndPlayDevices函数也会卡住

如果我从Windows服务中调用任何其他可执行文件,则无论有没有其他服务的依赖项,它都能完美地工作。此外,我为Windows服务创建了“虚拟服务”的依赖项,该依赖项在启动时输入一个日志条目,只是为了确保其他服务不会引起问题。

这似乎是Windows的一般问题!有没有解决此问题的已知方法? 还是有关于如何使其正常工作的建议?

0 个答案:

没有答案