我的Windows服務調用WTSEnumerateProcesses()
時,偶爾會報告以下錯誤:WTSEnumerateProcesses和Terminal Services服務
綁定句柄無效。
即使我已將終端服務服務註冊爲我的服務的從屬服務,但由於無法使用終端服務服務,我懷疑這是由此造成的。
我相信即使終端服務服務正在運行,它還沒有完成初始化(或正在關閉),並且無法處理任何請求,從而導致錯誤。
我注意到參考文檔中的以下爲WTSRegisterSessionNotification()
:
當設置全局\ TermSrvReadyEvent全球性事件,所有相關的服務工作已經開始,這個函數可以成功調用。
這不會出現在WTSEnumerateProcesses()
的文檔中,但它是否同樣適用?意思是OpenEvent()
在Global\\TermSrvReadyEvent
上的嘗試將表明終端服務服務實際上可用?
平臺:Windows XP,Windows Vista和Windows 7
假設聽起來很合理,但您應該等待事件的正確性,而不是僅僅檢查它是否存在。 – 0xC0000022L 2012-07-12 13:55:59
@ 0xC0000022L,是的,那就是我的意思。這聽起來像是我,但我只是想確定。 – hmjd 2012-07-12 13:58:15
@hmjd:只是好奇,如果你曾經在XP以外的操作系統上觀察過這個?在我的測試中,我只能在大多數WTS * API中的Windows XP上啓動後立即看到此錯誤。這似乎已在Vista和更高版本的操作系統下得到修復。 – c00000fd 2015-11-17 05:24:07