LISTORY
[윈도우즈 시스템 프로그래밍] 프로그래밍을 통한 프로세스의 생성 본문
뇌를 자극하는 윈도우즈 시스템 프로그래밍 책 관련 유투브 강의 정리이다.
오늘 정리할 내용은 프로그래밍을 통한 프로세스의 생성 부분이다.
⊙ YouTube 주소 ⊙ ☞ 프로그래밍을 통한 프로세스의 생성
프로그래밍을 통한 프로세스의 생성
⊙ CreateProcess
BOOL CreateProcess(
LPCTSTR lpApplicationName
LPSTR lpCommandLine
LPSECURITY_ATTRIBUTES lpProcessAttributes
LPSECURITY_ATTRIBUTES lpThreadAttributes
BOOL binheritHandles
DWORD dwCreationFlags
LPVOID lpEnvironment
LPCTSTR lpCurrentDirectory
LPSTARTUPINFO lpStartupInfo
LPPROCESS_INFORMATION lpProcessInformation
);
전체적으로 구조를 이해해야 하지만, 지금 구체적으로 봐야할 부분은 두껍게 표시한 부분이다.
이 함수를 호출하려면 두개의 구조체를 선언해야 한다.
- LPSTARTUPINFO : 생성하려는 프로세스 정보 전달하기 위한 구조체
- LPPROCESS_INFORMATION : 생성된 프로세스의 정보 반환받기 위한 구조체
프로세스에서 CreateProcess를 호출하여 새로운 프로세스가 생성된다면,
함수를 호출한 프로세스를 부모 프로세스, 생성된 프로세스를 자식 프로세스라 한다.
lpApplicationName 변수에는 실행 파일의 이름을 지정해준다.
lpCommandLine에는 매개 변수를 전달해준다. 무슨 매개 변수냐 하면 main 함수 실행 시, 전달하는 매개변수
lpCommandLine 변수에는 실행파일의 이름과 매개변수를 묶어서 표현할 수도 있다.
앞서 말한 것 처럼 CreateProcess에는 두개의 구조체가 필요한데
lpStartupInfo, lpProcessInformation 변수에 각각의 구조체를 지정해준다.
⊙ LPSTARTUPINFO
생성될 프로세스 정보 전달을 위한 구조체
typedef struct _STARTUPINFO {
DWORD cb; // 구조체 변수의 크기
LPTSRT lpReserved;
LPTSRT lpDesktop;
LPTSRT lpTitle; // 콘솔 윈도우의 타이틀 바 제목
DWORD dwX; // 프로세스 윈도우의 x 좌표
DWORD dwY; // 프로세스 윈도우의 y 좌표
DWORD dwXsize; // 프로세스 윈도우의 가로 길이
DWORD dwYsize; // 프로세스 윈도우의 세로 길이
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags; // 설정된 멤버의 정보
WORD wShowWindow;
WORD cbReserved2;
LPBYTE lpReserved2;
HANDLE hStdInput;
HANDLE hStdOutput;
HANDLE hStdErrorl
} STARTUPINFO, *LPSTARTUPINFO;
⊙ LPPROCESS_INFORMATION
프로세스 정보 반환을 위한 구조체
typedef struct _PROCESS_INFORMATION
{
HANDLE hProcess; // 프로세스의 핸들
HANDLE hThread; // 쓰레드 핸들
DWORD dwProcessId; // 프로세스의 ID
DWORD dwThreadId; // 쓰레드 ID
} PROCESS_INFORMATION;
'IT > 윈도우 프로그래밍' 카테고리의 다른 글
[윈도우즈 시스템 프로그래밍] 커널 오브젝트와 핸들의 종속관계(1) (0) | 2018.06.10 |
---|---|
[윈도우 시스템즈 프로그]커널 오브젝트에 대한 이해 (0) | 2018.06.10 |
[윈도우 시스템즈 프로그래밍] 프로세스와 스케줄러의 이해 (0) | 2018.06.02 |
[윈도우즈 시스템 프로그래밍] Direct 모드와 Indirect 모드 (0) | 2018.05.21 |
[윈도우즈 시스템 프로그래밍] LOAD & STORE 명령어 디자인 (0) | 2018.05.21 |