MSDN을 통해 공부한 내용을 바탕으로 개인적으로 정리를 해보려함.
> MSDN
https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms682425(v=vs.85).aspx
> example
https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms682512(v=vs.85).aspx
1 2 3 4 5 6 7 8 9 10 11 12 | BOOL WINAPI CreateProcess( _In_opt_ LPCTSTR lpApplicationName, _Inout_opt_ LPTSTR lpCommandLine, _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_ BOOL bInheritHandles, _In_ DWORD dwCreationFlags, _In_opt_ LPVOID lpEnvironment, _In_opt_ LPCTSTR lpCurrentDirectory, _In_ LPSTARTUPINFO lpStartupInfo, _Out_ LPPROCESS_INFORMATION lpProcessInformation ); | cs |
1. 다른 Windows API들이 그렇듯 CreateProcess 또한 유니코드가 정의되어 있으면
CreateProcessW 함수로 대체된다.
2. 계산기 프로세스를 생성한다고 가정할 때
첫 번째 파라미터 또는 두 번째 파라미터에 _T("C:\\Windows\\System32\\calc.exe")를 입력해주면 된다.
단, 두 번째 파라미터에 입력해줄 시에는
constant pointer를 사용할 수 없다.
포인터를 선언해서 그 포인터에 문자열을 넣어준 후, 포인터를 두 번째 인자에 주어야 한다.
문자열에 대한 수정이 일어날 수도 있기 때문이라고 한다.
3. 다음으로 중요한 파라미터가 flag다.
> flags
https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms684863(v=vs.85).aspx
플래그가 없어도 된다.(0)
디버거 프로그램을 만들 때 쓰이는 플래그가 두 개 있다.
DEBUG_ONLY_THIS_PROCESS : DEBUGGER가 생성한 프로세스만 DEBUGGEE PROCESS로 생성된다.
DEBUG_PROCESS : child processes들도 DEBUGGEE PROCESS로 생성된다.
DEBUGGEE PROCESS는 DEBUGGER에게 이벤트가 발생할 때마다 DEBUG_EVENT를 전송한다.
예제 코드 작성은 나중에 !
'Language' 카테고리의 다른 글
C언어 Calling Convention (0) | 2017.11.26 |
---|---|
binary data 처리 이슈 (vs string data) (0) | 2017.11.26 |
Shell Script 실행방법의 종류들과 그 차이 (0) | 2015.12.01 |
QT 'Run Qmake' Error (Linux) (0) | 2015.11.23 |
[git] 간단 사용법 / 그외 커맨드들 (0) | 2015.11.21 |
WRITTEN BY
- hojongs
블로그 옮겼습니다 https://hojongs.github.io/