2011-06-28 34 views
0

我正在寫一個需要與Windows服務通信的Winsock LSP(分層服務提供者)DLL。在windows服務和LSP之間的IPC DLL

通信使用內存映射文件和事件進行同步。一切正常,如果應用程序不作爲服務運行,但如果它沒有找到任何事件或文件映射(我在OpenEvent上得到ERROR_FILE_NOT_FOUND錯誤)。

我懷疑會發生這種情況,因爲作爲服務運行時,應用程序以SYSTEM用戶身份運行,並且LSP由作爲本地用戶運行的應用程序加載。

我認爲這可以通過使用適當的SECURITY_DESCRIPTOR解決,但我不知道應該設置爲什麼。

關於如何使這項工作的任何想法?

謝謝,

+0

歡迎來到SO。您可以通過編輯來更新自己的問題。您可以投票回答問題(upvote或downvote),如果您得到的答案滿足您的需求並回答您的問題,則可以將其標記爲答案 –

回答

0

根據操作系統,這可能是會話的問題。如果再看看CreateEvent,CreateMemoryMapping等的文檔,您會注意到GLOBAL \前綴到對象名稱。該前綴(與SESSION \ x \前綴之間)定義對象的可見性範圍。在整個系統中可以看到GLOBAL前綴,而名稱中沒有前綴的對象是本地特定的(如果忽略\ SESSION前綴,則爲當前)會話。會話出現在Windows XP終端服務中,然後進入Windows 2003 Server及更高版本的操作系統。