繁体   English   中英

服务启动期间调用CoCreateInstance

[英]Calling CoCreateInstance during service startup

我有一个Windows服务,该服务在初始化期间进行了多个COM +调用。 在某些系统上,此Windows服务在启动期间导致死锁。

系统启动期间至少有一项服务或驱动程序发生故障

服务启动期间调用CoCreateInstance的问题在于,它可能需要其他服务才能启动。 并且SCM在等待当前服务进入运行状态时将不允许其他服务启动。 解决方案是确保在安装服务时正确配置了服务依赖项。 请参阅http://support.microsoft.com/kb/258943

但是,在Windows Vista / 2008/7上运行时,应该指定哪些服务依赖项?

另一个解决方案是在服务启动逻辑期间完全不初始化COM对象。 让启动逻辑创建一个单独的工作线程,或者至少创建一个对其自身的延迟/排队的请求,以便可以在释放SCM以根据需要启动其他服务之后完成COM初始化。

简单的解决方案是将COM应用程序服务配置为将服务启动设置为“自动(延迟启动)”(DelayedAutoStart)。 这样,它将不会成为Windows运行所需的“必需”服务的一部分。 Windows 2008引入了它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM