我正在尝试使用 CreateFile() 打开命名管道:
g_hPipe = CreateFile(szPipeName,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);
其中 szPipeName 看起来像\\\\.\\pipe\\service_name
,并且我正在返回 INVALID_HANDLE_VALUE。
根据 MSDN, OPEN_EXISTING 标志仅在文件不存在时返回错误,但GetLastError()
显示 ERROR_ALREADY_EXISTS (183)。我知道该文件存在,这就是我使用 OPEN_EXISTING 的原因... MSDN 建议仅在设置 OPEN_ALWAYS 或 CREATE_ALWAYS 时才会发生这种情况。我SetLastError(0)
之前立即调用CreateFile()
以确保GetLastError()
结果是指该CreateFile()
函数。
我已经搜索了很多,但没有找到任何可以表明我收到此错误的原因。任何帮助表示赞赏。