프로그래밍 노트

CreateNamedPipe로 파이프를 만들때 123에러가 뜨는 경우 대처법 본문

Win32 SDK 초보

CreateNamedPipe로 파이프를 만들때 123에러가 뜨는 경우 대처법

띠리 2007. 4. 19. 10:45
CreateNamedPipe으로 파이프를 만들려고 하는데 핸들을 작성하는데 에러가 났다.

GetLastError()로 에러코드를 찾아보면 밑의 에러 코드가 돌아왔다.

123 : ERROR_INVALID_NAME 
The filename, directory name, or volume label syntax is incorrect.

인터넷에서 열심히 문제점을 무엇인가 찾아봐도 특별한 정보가 없었다.


문제의 코드

======================================================================

    hPipe = CreateNamedPipe("\\\\.\\pipe\\pipetest",

                PIPE_ACCESS_INBOUND,    // 오픈 모드

                PIPE_TYPE_BYTE |

                PIPE_READMODE_BYTE |

                PIPE_WAIT,                // 파이프 모드

                1,                        // 파이프 최대 인스턴스 갯수

                1024,                    // 출력 버퍼

                1024,                    // 입력 버퍼

                0,                        // 타임 아웃

                NULL);


======================================================================

파이프 이름에는 전혀 문제가 없는데 항상 에러가 났다.
그리고 인터넷에서 파이프를 만드는 다른 소스에서는 위에 소스가 문제가 없었다.
그런데 이상하게 내가 만든 프로젝트에서는 123에러가 났다.
그래서 혹시나 하는 마음으로 프로젝트의 속성을 하나하나 비교해봤다.

그중에 달랐던 한가지 프로젝트의 기본값에 문자 집합이 틀렸다.
내 프로젝트는 유니코드 문자 집합 사용이였고
문제가 없는 프로젝트의 문자 집합은 멀티바이트 문자 집합 사용이였다.
설마하는 마음으로 문자 집합을 멀티바이트 문자 집합으로 바꾸니 123에러(ERROR_INVALID_NAME)는 더이상 뜨지 않았다.

아 이거 때문에 얼마나 많은 시간을 버렸나 T.T
프로젝트를 Win32 콘솔 응용 프로그램에서 빈 프로젝트를 선택한 것 뿐인데 디폴트로 유니코드 문자 집합 사용이 선택되어있었나보다. T.T

아 아까운 내 금쪽같은 시간 돌리둬~

--------------------------------------------------------------------------------

문자 집합을 바꾸기 위해서는
프로젝트(P) 메뉴를 선택해서 맨 마지막에 있는 프로젝트의 속성을 선택한다.
구성 속성에 일반을 선택하면 밑의 그림 처럼 문자 집합을 볼수있다.
물론 Release나 Debug나 다 바꾸어야된다.

사용자 삽입 이미지

Comments