본문 바로가기

Application-level프로그래밍

(C)함수포인터의 typedef 사용법



다음과 같은 함수를 포인터로 받어오기 위해서

unsigned long __stdcall some_function (IN  HANDLE, IN  unsigned int, OUT PVOID, IN ULONG, OUT PULONG);


다음과 같이 선언된 함수포인터를 사용하는 방법은

unsigned long ( __stdcall *pFnSome_func )(IN  HANDLE, IN  unsigned int, OUT PVOID, IN ULONG, OUT PULONG);

불편할 수있다.


대신

다음과 같이 선언할 경우


typedef
unsigned long (__stdcall *pfnNtQueryInformationProcess)(IN  HANDLE,  IN  unsigned int, OUT PVOID, IN ULONG, OUT PULONG);


다음이 일종의 '타입'이 된다. 물론 위에서 선언한 함수포인터의 타입이다.

pfnNtQueryInformationProcess 

예를 들어 다음과 같은 부분에서 사용예를 확인할 수있다.


pfnNtQueryInformationProcess   NtQueryInfoProcess =NULL;

.... //중간 생략

NtQueryInfoProcess = (pfnNtQueryInformationProcess)  GetProcAddress(hNtDll, "NtQueryInformationProcess");
//pfnNtQueryInformationProcess 타입으로 타입 캐스팅하고 있음


마치 변수로 취급하는 기분이 들지 않는가?

'Application-level프로그래밍' 카테고리의 다른 글

(C)정적 2차원 배열 전달  (0) 2009.07.22
(C++)template 사용주의점 (naver 지식IN)  (0) 2009.07.08
(C) 함수포인터 캐스팅  (0) 2009.05.31
(C) 열거형  (0) 2009.05.31
(C)비트필드 구조체  (0) 2009.05.31