WTSEnumerateProcesses和终端服务服务

时间:2012-07-12 13:50:40

标签: windows winapi

调用WTSEnumerateProcesses()时,我的Windows服务偶尔会报告以下错误:

  

绑定句柄无效。

我怀疑这是由于终端服务服务不可用造成的,即使我已将终端服务服务注册为我的服务的附属服务。

我相信即使终端服务服务正在运行,它仍未完成初始化(或正在关闭),并且无法为任何请求提供服务,从而导致错误。

我在WTSRegisterSessionNotification()的参考文档中注意到以下内容:

  

设置Global \ TermSrvReadyEvent全局事件后,所有相关服务都已启动,并且可以成功调用此函数。

这不会出现在WTSEnumerateProcesses()的文档中,但同样适用吗?意味着在OpenEvent()上尝试Global\\TermSrvReadyEvent表示终端服务服务实际可用?


平台:Windows XP,Windows Vista和Windows 7

1 个答案:

答案 0 :(得分:0)

你肯定想要OpenEvent(SYNCHRONIZE, false, L"Global\\TermSrvReadyEvent")并等待它。

所有WTS*函数在C API(see the runtime interface protocol)的引擎下通过RPC调用终端服务服务(现在称为远程桌面服务服务)。

与c00000fd相比,我从未遇到过标准用户帐户和Windows 7及以上版本的事件对象的问题。