본문 바로가기
dev/windows

[windows] 함수 동적 링크하기 (Run-Time Dynamic Linking)

by 최연탄 2017. 5. 23.
728x90
반응형

참고: https://msdn.microsoft.com/en-us/library/ms810279.aspx

특정 운영체제는 지원하지 않는 함수를 사용하고 싶을 때(예: Wow64DisableWow64FsRedirection) 컴파일 시간에 링크하는 대신 프로그램이 실행되는 도중 함수의 사용 가능 여부를 판단하여 실행하도록 할 수 있다.

1
2
3
4
5
6
7
typedef BOOL WINAPI fntype_Wow64DisableWow64FsRedirection(PVOID *OldValue);
auto pfnWow64DisableWow64FsRedirection = (fntype_Wow64DisableWow64FsRedirection*)GetProcAddress(GetModuleHandle(_T("kernel32.dll")), "Wow64DisableWow64FsRedirection");

if (pfnWow64DisableWow64FsRedirection)
{
	result = (*pfnWow64DisableWow64FsRedirection)(&OldValue);
}

GetModuleHandle을 이용해 사용하고자 하는 dll의 핸들을 얻은 다음 GetProcAddress를 이용해 함수포인터를 얻어온다.

반응형

댓글