调用WTSEnumerateProcesses()
时,我的Windows服务偶尔会报告以下错误:
绑定句柄无效。
我怀疑这是由于终端服务服务不可用造成的,即使我已将终端服务服务注册为我的服务的附属服务。
我相信即使终端服务服务正在运行,它仍未完成初始化(或正在关闭),并且无法为任何请求提供服务,从而导致错误。
我在WTSRegisterSessionNotification()
的参考文档中注意到以下内容:
设置Global \ TermSrvReadyEvent全局事件后,所有相关服务都已启动,并且可以成功调用此函数。
这不会出现在WTSEnumerateProcesses()
的文档中,但同样适用吗?意味着在OpenEvent()
上尝试Global\\TermSrvReadyEvent
表示终端服务服务实际可用?
平台:Windows XP,Windows Vista和Windows 7
答案 0 :(得分:0)
你肯定想要OpenEvent(SYNCHRONIZE, false, L"Global\\TermSrvReadyEvent")
并等待它。
所有WTS*
函数在C API(see the runtime interface protocol)的引擎下通过RPC调用终端服务服务(现在称为远程桌面服务服务)。
与c00000fd相比,我从未遇到过标准用户帐户和Windows 7及以上版本的事件对象的问题。