프로세스 생성

CreateProcess

2015. 3. 4. 18:45

새로운 프로세스를 생성 한다.

 

 

- 그림 출처 : MSDN

 

  • lpApplicationName

- 윈도우즈 기반 어플리케이션의 실행 파일 이름 이다.

- 파일 이름의 확장자를 반드시 명시해 주어야 한다.

- 이 파라메터의 값을 NULL로 설정하면 lpCommandLine에서 파일 이름을 설정 한다.

 

  • lpCommandLine

- 실행 시 전달 할 명령 행 인자 이다.

- lpApplicationName이 NULL일 경우 이 파라메터에서 파일 이름 또는 파일 이름과 명령행 인자를 설정할 수 있다.

- 명령행 인자가 없을 경우 NULL을 줄 수 있으나 lpApplicationName과 함께 둘 다 NULL이 될 수는 없다.

- 전달할 값을 상수로 설정할 수 없다, 반드시 배열 변수에 전달할 인자를 입력 후 배열의 시작 주소를 설정 한다.

 

  • lpProcessAttributes

-  프로세스 보안 속성을 설정 한다.

-  일반적으로 사용하지 않으며 NULL을 설정 한다.

 

  • lpThreadAttributes

- 스레드 보안 속성을 지정 한다.

- 일반적으로 사용하지 않으며 NULL을 설정 한다.

 

  • bInheritHandles

- 프로세스 핸들의 상속 여부를 설정 한다.

- TRUE 면 자식 프로세스에게 상속 가능한 핸들을 생성하고, FALSE 면 상속 불가능한 핸들을 생성 한다.

 

  • dwCreationFlags

- 우선 순위 등급 및 프로세스의 생성을 제어하는 플래그 이다.

- Process Creation Flags의 값을 설정 한다.

- 일반적인 프로세스 생성 시 0을 설정 한다.

 

  • lpEnvironment

- 프로세스의 환경 블록을 설정 한다, 이 값이 NULL이면 부모 프로세스의 환경 블록을 사용 한다.

- 일반적으로 NULL값을 설정 한다.

 

  • lpCurrentDirectory

- 프로세스의 현재 디렉토리를 설정 한다, NULL값을 설정 하면 부모 프로세스의 현재 디렉토리가 해당 프로세스의 현재 디렉토리로  설정 된다.

- 일반적으로 NULL값을 설정 한다.

 

  • lpStartupInfo

- 프로세스의 초기화 정보를 설정 한다.

- STARTUPINFO(또는 STARTUPINFOEX) 구조체 변수의 값을 설정 하여 주소를 전달 한다.

 

- 일반적으로 멤버 값들을 설정하지 않으나 구조체의 크기를 설정하는 cb의 값은 반드시 입력이 되어 있어야 한다.

- 설정하지 않은 멤버 들은 0으로 초기화하여 전달 한다. 

 

  • lpProcessInformation

- 프로세스의 생성 후 결과 정보를 받기 위한 파라메터이다.

- PROCESS_INFORMATION 구조체 변수의 주소를 전달 한다.

 

Return value : 성공 시 0이 아닌 값을 반환하고, 실패 시 0을 반환 한다.

   실패에 대한 자세한 정보는 GetLastError 함수를 통해 확인할 수 있다.

 

Header : WinBase.h(include Windows.h)

 

DLL : Kernel32.dll

'Win32 API' 카테고리의 다른 글

WriteFile  (0) 2015.03.11
ReadFile  (0) 2015.03.11
CreateFile  (0) 2015.03.10
TerminateProcess  (0) 2015.03.05
ExitProcess  (0) 2015.03.05

+ Recent posts