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
);
윈도우는 프로세스 생성을 돕기 위해 CreateProcess 함수를 제공합니다. 이 함수를 호출하는 프로세스를 가리켜 보무 프로세스 라 하고 함수 호출에 의해 생성된 프로세스를 카리켜 자식 프로세스라합니다.
1.lpApplicationName
생성할 프로세스의 실행파일 이름을 인자로 전달.. 경로명을 추가로 지정 할 수 있으며, 경로명을 지정
하지 않을 경우 프로그램의 현재 디렉터리에서 실행파일을 찾게 된다.
2.lpCommandLine
생성하는 프로세스에 인자를 전달할때 사용된다. 첫 번째 매개변수에 NULL을 전달한 경우, 실행파일의
이름을 더불어 전달 할 수도 있다. 이런 경우 실행파일의 이름은 표준 검색경로를 기준으로 찾게된다.
내부적으로 문자열에 변경을 가한다. 따라서 전달인자의 문자열은 변수 형태여야한다.
3.lpProcessAttributes
프로세스의 보안 속성을 지정할때 사용한다. NULL을 전달할경우 기본보안속성이 적용된다.
4.lpThreadAttributes
쓰레도의 보안 속성이다. NULL인경우 기본보안 속성이다.
5.bInheritHandles
전달 인자가 TRUE 인경우 생성되는 자식프로세스는 부모 프로세스가 소유한 핸들 중 일부(상속가능한
핸들)를 상속한다.
6.dwCreationFlags
생성하는 프로세스의 특성(우선 순위)를 결정지을때 사용되는 옵션입니다. 특별히 설정할 필요가 없을
경우 0을 전달합니다.
7.lpEnvironment
프로세스마다 ENvironment Block(환경블록)이라는 메모리 블록을 관리한다. 이 블록을 통해서 프로세
스가 실행에 필요호 하는 문자열을 저장할 수있다. 이 전달 인자를 통해서 생성하는 프로세스의
Environment Block을 지정한다. NULL이 전달되면 자식 프로세스는 부모 프로세스의 환경 블록에 저장
되어 있는 문자열을 복사하게 된다.
8.lpCurrentDirectory
생성하는 프로세스의 현재 디렉터리를 설정하는 인자이다. 전달인자는 디렉터리 정보를 포함하는 완전
경로 형태로 구성되어야 하며 NULL이 전달될 경우 부모 프로세스의 현재 디렉터리가 새로 생성하는
자식 프로세스의 현재 디렉터리가 된다. 역시 NULL이 일반적으로 전달된다.
9.lpStartupInfo
STARTUPINFO 구조체 변수를 초기화한 다음 이 변수의 포인터를 인자로 전달한다 STARTUPINFO 구조
체 변수는 생성하는 프로세스의 속성을 지정할 때 사용된다.
10.lpProcessInformation
생성하는 프로세스 정보를 얻기 위해 사용되는 인자이다. PROCESS_INFORMATION 구조체 변수의 주
소값을 진자로 전달한다. 그러면 전달된 주소값이 가리키는 변수에 프로세스 정보가 채워진다.
'프로그래밍 > MFC , WinAPI' 카테고리의 다른 글
GetCurrentDirectory란 무엇인가? (0) | 2018.04.05 |
---|---|
STARTUPINFO 구조체란 무엇인가? (0) | 2018.04.05 |
FindWindow 함수란 무엇인가? (0) | 2018.03.18 |
GetAsyncKeyState 함수와 GetKeyState 에 대해서 알아보자. (0) | 2018.03.16 |
MSG 구조체 란? (0) | 2018.03.14 |