我試圖使用IIS 7(包含在Windows 7中)來測試我目前正在開發的FastCGI庫。FastCGI在IIS 7上使用protocol = Tcp
根據最初的FastCGI規範,當調用應用程序時,其stdin
句柄被替換爲套接字。默認情況下,IIS使用命名管道,但可以將其配置爲使用TCP,即套接字。
當我嘗試在我的測試應用程序中使用此套接字時,出現WSAENOTSOCK
錯誤。
當我嘗試使用命名管道(重新配置IIS後)時,我遇到了類似的問題。例如,當我嘗試使用PeekNamedPipe
時,我得到ERROR_INVALID_HANDLE
。然而,ReadFile
和WriteFile
正常工作。
我想問題是這個句柄是從父進程繼承的,當前進程並不真正知道它的確切類型。它似乎假定句柄代表一個簡單的文件。
有沒有人遇到類似的問題,並知道解決方案/解決方法?我可以以某種方式更新我的句柄的進程中狀態,以便WIN32 API函數將它作爲套接字/命名管道接受嗎?
請確保您將此標記爲正確答案。 – Kev 2011-03-31 08:32:20