Я пытаюсь открыть именованный канал с помощью CreateFile():Windows API - CreateFile() с набором OPEN_EXISTING возвращает код ошибки ERROR_ALREADY_EXISTS (183)
g_hPipe = CreateFile(szPipeName,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);
где szPipeName выглядит \\\\.\\pipe\\service_name
, и я получаю INVALID_HANDLE_VALUE.
According to the MSDN, флаг OPEN_EXISTING возвращает ошибку, если файл не существует, но показывает ERROR_ALREADY_EXISTS (183). Я знаю, что файл существует, поэтому я использую OPEN_EXISTING ... MSDN предполагает, что это происходит только тогда, когда установлены OPEN_ALWAYS или CREATE_ALWAYS. Я звоню SetLastError(0)
непосредственно перед CreateFile()
, чтобы убедиться, что результат GetLastError()
относится к функции CreateFile()
.
Я искал совсем немного и не нашел ничего, чтобы предположить, почему я получаю эту ошибку. Любая помощь приветствуется.
Это дуплекс (чтение/запись) трубы? – arx
Вот пример использования именованных каналов, хотя у него нет ответа на ваш конкретный вопрос: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365592(v=vs.85). aspx – HerrJoebob
Да, сервер создает дуплексный канал. – jfinnis