GetProcAddress 함수(libloaderapi.h)

지정된 DLL(동적 연결 라이브러리)에서 내보낸 함수(프로시저라고도 함) 또는 변수의 주소를 검색합니다.

구문

FARPROC GetProcAddress(
  [in] HMODULE hModule,
  [in] LPCSTR  lpProcName
);

매개 변수

[in] hModule

함수 또는 변수를 포함하는 DLL 모듈에 대한 핸들입니다. LoadLibrary, LoadLibraryEx, LoadPackagedLibrary 또는 GetModuleHandle 함수는 이 핸들을 반환합니다.

GetProcAddress 함수는 LOAD_LIBRARY_AS_DATAFILE 플래그를 사용하여 로드된 모듈에서 주소를 검색하지 않습니다. 자세한 내용은 LoadLibraryEx를 참조하세요.

[in] lpProcName

함수 또는 변수 이름 또는 함수의 서수 값입니다. 이 매개 변수가 서수 값인 경우 하위 단어에 있어야 합니다. 상위 단어는 0이어야 합니다.

반환 값

함수가 성공하면 반환 값은 내보낸 함수 또는 변수의 주소입니다.

함수가 실패하면 반환 값은 NULL입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

lpProcName이 가리키는 함수 이름의 맞춤법 및 대/소문자는 원본 DLL의 모듈 정의(.def) 파일의 EXPORTS 문과 동일해야 합니다. 내보낸 함수 이름은 코드에서 이러한 함수를 호출할 때 사용하는 이름과 다를 수 있습니다. 이 차이는 SDK 헤더 파일에 사용되는 매크로에 의해 숨겨집니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

lpProcName 매개 변수는 EXPORTS 문에서 함수와 연결된 서수 값을 지정하여 DLL 함수를 식별할 수 있습니다. GetProcAddress 는 지정된 서수가 .def 파일에서 내보낸 가장 높은 서수 값까지의 범위 1에 있는지 확인합니다. 그런 다음 함수는 서수로 인덱스로 사용하여 함수 테이블에서 함수의 주소를 읽습니다.

.def 파일에서 함수 번호가 1에서 N(N은 내보낸 함수의 수)으로 연속적으로 번호가 지정되지 않은 경우 지정된 서수가 있는 함수가 없더라도 GetProcAddress가 잘못된 NULL이 아닌 주소를 반환하는 경우 오류가 발생할 수 있습니다.

함수가 DLL 모듈에 없는 경우(예: 함수가 Windows Vista에서만 사용할 수 있지만 애플리케이션이 Windows XP에서 실행 중일 수 있는 경우) 다음 코드 조각과 같이 함수를 사용할 수 없는 경우를 처리하도록 애플리케이션을 서수 값이 아닌 이름으로 지정하고 애플리케이션을 디자인합니다.


typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);

// Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.

   PGNSI pGNSI;
   SYSTEM_INFO si;

   ZeroMemory(&si, sizeof(SYSTEM_INFO));
   
   pGNSI = (PGNSI) GetProcAddress(
      GetModuleHandle(TEXT("kernel32.dll")), 
      "GetNativeSystemInfo");
   if(NULL != pGNSI)
   {
      pGNSI(&si);
   }
   else 
   {
       GetSystemInfo(&si);
   }


이 코드 조각을 포함하는 전체 예제는 시스템 버전 가져오기를 참조하세요.

예제

예제는 Run-Time 동적 연결 사용을 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 libloaderapi.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

동적 연결 라이브러리 함수

FreeLibrary

GetModuleHandle

LoadLibrary

LoadLibraryEx

LoadPackagedLibrary

런타임 동적 연결