Я пытался использовать IIS 7 (как включено в Windows 7) для тестирования библиотеки FastCGI, которую я сейчас разрабатываю.
В соответствии с исходной спецификацией FastCGI, когда вызывается приложение, его stdin
ручка заменена на розетку.По умолчанию IIS вместо этого использует именованный канал, но его можно настроить для использования TCP, т.е. сокета.
Когда я пытаюсь использовать этот сокет в своем тестовом приложении, я получаю ошибку WSAENOTSOCK
.
Когда я пытаюсь использовать именованный канал вместо (после перенастройки IIS), я сталкиваюсь с подобными проблемами.Например, я получаю ERROR_INVALID_HANDLE
, когда пытаюсь использовать PeekNamedPipe
.Однако ReadFile
и WriteFile
работают правильно.
Я думаю, проблема в том, что этот дескриптор унаследован от родительского процесса, а текущий процесс не знает его точный тип.Кажется, предполагается, что дескриптор представляет собой простой файл.
Кто-нибудь сталкивался с подобными проблемами и знает решение / обходной путь?Могу ли я каким-то образом обновить текущее состояние моего дескриптора, чтобы функция API WIN32 принимала его как сокет / именованный канал?