BOOL WINAPI DuplicateHandle( _In_ HANDLE hSourceProcessHandle, -----① _In_ HANDLE hSourceHandle, -----② _In_ HANDLE hTargetProcessHandle, -----③ _Out_ LPHANDLE lpTargetHandle, -----④ _In_ DWORD dwDesiredAccess, -----⑤ _In_ BOOL bInheritHandle, -----⑥ _In_ DWORD dwOptions -----⑦ );
함수 설명 :
실행중에 있는 프로세스의 핸들을 얻을때 GetCurrentProcess를 사용하여 얻는다. 하지만 이 핸들값음 Pseudo 핸들이라 하여 핸들 테이블에 있는 값이 아니기 때문이다. 따라서 DuplicateHandle을 이용하면 핸들 테이블에 있는 핸들값을 얻을 수있다.
1. hSourceProcessHandle :
복제할 핸들을 가지고 있는 프로세스를 지정한다. PROCESS_DUP_HANDLE 핸들 엑세스 권한이 있어야 한다.
2. hSourceHandle :
복제할 핸들의 종류를 지정한다.
3. hTatgetProcessHandle :
복제된 핸들값을 소유할 프로세스를 지정한다. PROCESS_DUP_HANDLE 액세스 권한이 필요함.
4. lpTargetHandle :
복제된 핸들값을 리턴 받는다.
5. dwDesiredAccess :
복제된 핸들의 접근 권한을 지정한다. 하지만 dwOption의 인자로 DUPLICATE_SAME_ACCESS을 지정할 경우 이 값은 무시된다.
6. bInheritHandle :
복제된 핸들의 상속 여부를 지정한다. TRUE면 자식에 상속되고 FALSE면 상속되지 않는다.
7. dwOption :
값 |
의미 |
DUPLICATE_CLOSE_SOURCE |
소스 핸들을 닫는다. |
DUPLICATE_SAME_ACCESS |
dwDesiredAccess 을 무시한다. 중복 핸들은소스 핸들과 동일한 액세스 권한을 가진다. |
'Programming > Windows&C#' 카테고리의 다른 글
[Windows/WinAPI] WindowAPI / FillMemory (0) | 2014.01.03 |
---|---|
[Windows/WinAPI] WindowsAPI / CreateNamedPipe (0) | 2013.11.20 |
[Windows/WinAPI] 자식 프로세스를 만들고 값을 리턴받음 (2) | 2013.11.16 |
[Windows/WinAPI] _beginthread, _beginthreadex (0) | 2013.11.14 |
[Windows/WinAPI] Thread 생성 _beginthreadex사용 (실습7) (0) | 2013.11.14 |