DLL에서 CreateFile을 하면 문제가 생깁니다.ㅠㅠ
Main프로그램에서 Sub프로그램을 SUSPENDED 상태로 프로세스를 생성한 뒤 DLL을 Inject(LoadLibrary)하고
RemoteOps(http://www.codeproject.com/Tips/139349/Getting-the-address-of-a-function-in-a-DLL-loaded)을 이용해서
DLL내부 함수의 주소를 알아낸다음 그 함수를 실행(CreateRemoteThread)합니다.
그 함수에서는 CreateFile을 합니다.
그런데 그 뒤 Main프로그램에서 Sub프로그램의 메인쓰레드를 ResumeThread하는데...
(수정 : DLL_PROCESS_ATTACH할때 CreateFile을 해도 이러네요...)
INVAILD HANDLE (오류번호 6번) 을 밷어버리면서 안됩니다...
ResumeThread을 하면 원래 뜨려던 Window가 떠야 하는데 나오지 않고 이렇게 오류가 뜨네요...
어떻게 해야 할까요?? 이유도 모르겠습니다..ㅠㅠ
CreateFile을 빼면 잘 됩니다...
그 함수 내에서 CreateThread같은 API는 작동하는데, CreateFile는 작동은 하지만 ResumeThread가 안됩니다..
새로 Thread을 만들어서 그 안에서 CreateFile을 해도 안되구요...
도대체 왜 이럴까요??
CreateFile을 빼고 정상적으로 ResumeThread을 한 뒤에는 그 Sub프로그램에서 CreateFile은 잘 작동합니다.
(수정 :
MSDN에
During process startup and DLL initialization routines, new threads can be created,
but they do not begin execution until DLL initialization is done for the process.
이런말이 있다네요...)

