HANDLE WINAPI CreateThread(
__in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,
__in SIZE_T dwStackSize,
__in LPTHREAD_START_ROUTINE lpStartAddress,
__in_opt LPVOID lpParameter,
__in DWORD dwCreationFlags,
__out_opt LPDWORD lpThreadId
);
가장 기본적인 쓰레드 생성 함수
lpThreadAttributes : 핸들의 상속 여부, NULL이 전달되면 생성되는 핸들은 자식 프로세스 생성 시 상속 대상에서 제외
dwStackSize : 해당 쓰레드를 위한 스택이 별도로 생성, 이때 생성되는 쓰레드의 스택 크기를 지정
0 -> 디폴트 스택 사이즈(1M Byte) (너무 작은 사이즈 요구시 그냥 1M Byte로 해버림)
lpStartAddress : 쓰레드로 동작하기 위한 함수. 쓰레드의 main역할을 하는 함수를 지정하는 전달인자.
반환 타입이 DWORD이고 매개변수 타입은 LPVOID(void *)인 형태로 함수가 정의되어야 함
lpParameter : 쓰레드 함수에 전달한 인자를 지정하는 용도.
dwCreationFlags : 쓰레드의 생성 및 실행을 조절하기 위해 사용되는 전달인자.
0 - 생성과 동시에 실행 상태
CREATE_SUSPENDED - 생성과 동시에 Blocked상태(ResumeThread가 호출되면 실행을 시작)
lpThreadId - 쓰레드 ID를 전달받기 위한 변수의 주소값을 전달한다. 굳이 필요 없다면 NULL
(단! Windows ME이하 버전에서는 NULL을 전달할 수 없기 때문에 범용적인 사용을 위해서라도 주소값을 전달하는 것이 안전)
성공하면 새로운 쓰레드의 핸들을 반환, 실패하면 NULL
이젠 CreateThread대신 _beginthreadex를 쓴다. 같은 메모리에 동시접근을 방지하기 위해서....!!
쓰레드 선언 - unsigned int WINAPI ThreadProc( LPVOID lpParam )
호출 시 - (HANDLE)_beginthreadex(NULL,0,ThreadProc,NULL,CREATE_SUSPENDED,(unsigned*)&dwThreadID);
'My Study > Function' 카테고리의 다른 글
OpenProcess (0) | 2010.02.24 |
---|---|
ReadProcessMemory (0) | 2010.02.24 |
GetProcAddress (0) | 2010.02.24 |
SetCurrentDirectory (0) | 2010.02.24 |
GetWindowsDirectory (0) | 2010.02.24 |