이런 현상이 있었더랜다.. ㅡ.ㅜ
STARTUPINFO si = {0,}; 
PROCESS_INFORMATION pi = {0,}; 
BOOL bRun = CreateProcess(NULL, _T("notepad.exe"), 
                NULL, NULL, FALSE, 
                NORMAL_PRIORITY_CLASS, NULL, NULL, 
                &si, π); 

VS6.0에서 잘 돌던 코드를 VS2005로 컨버젼한 후 CreateProcess하다가 뒤진다.
게다가 저 코드가 공교롭게도 프로세스 초기화 직후에 실행된 탓에...
엉뚱하게도 Main Window를 띄우는 과정에서 MFC 내부에서 죽는 것처럼 보였다.
말 그대로 한주일 반을 쌩 난리를 쳤다. ㅡ.ㅜ

원인은 바로 CreateProcess의 두번째 파라메터...

이렇게 해주니까 실행된다..

MSDN에 보면 이렇게 되어 있다.

The Unicode version of this function, CreateProcessW, can modify the contents of this string. Therefore, this parameter cannot be a pointer to read-only memory (such as a const variable or a literal string). If this parameter is a constant string, the function may cause an access violation.


말하자면... 유니코드 버젼의 CreateProcess는 두번째 파라메터를 내부적으로 변경시키기 때문에...
Const 메모리를 인자로 사용하면 안된다는 것이다.

왜 VS6.0 에서는 문제가 없었냐구. 댄당할...
Posted by kuaaan
,


사랑합니다. 편안히 잠드소서