GetModuleFileNameExA 함수(psapi.h)

지정된 모듈을 포함하는 파일의 정규화된 경로를 검색합니다.

구문

DWORD GetModuleFileNameExA(
  [in]           HANDLE  hProcess,
  [in, optional] HMODULE hModule,
  [out]          LPSTR   lpFilename,
  [in]           DWORD   nSize
);

매개 변수

[in] hProcess

모듈을 포함하는 프로세스에 대한 핸들입니다.

핸들에는 PROCESS_QUERY_INFORMATIONPROCESS_VM_READ 액세스 권한이 있어야 합니다. 자세한 내용은 프로세스 보안 및 액세스 권한을 참조하세요.

Windows 10 이상, Windows Server 2016 이상: hModule 매개 변수가 NULL인 경우 핸들에는 PROCESS_QUERY_LIMITED_INFORMATION 액세스 권한만 필요합니다.

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

[in, optional] hModule

모듈에 대한 핸들입니다. 이 매개 변수가 NULL이면 GetModuleFileNameExhProcess에 지정된 프로세스의 실행 파일 경로를 반환합니다.

[out] lpFilename

모듈에 대한 정규화된 경로를 수신하는 버퍼에 대한 포인터입니다. 파일 이름의 크기가 nSize 매개 변수 값보다 크면 함수는 성공하지만 파일 이름은 잘리고 null로 종료됩니다.

[in] nSize

lpFilename 버퍼의 크기(문자)입니다.

반환 값

함수가 성공하면 반환 값은 버퍼에 복사된 문자열의 길이를 지정합니다.

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

설명

GetModuleFileNameEx 함수는 주로 디버거 및 다른 프로세스에서 모듈 정보를 추출해야 하는 유사한 애플리케이션에서 사용하도록 설계되었습니다. 대상 프로세스의 모듈 목록이 손상되었거나 아직 초기화되지 않았거나 DLL이 로드되거나 언로드된 결과로 함수 호출 중에 모듈 목록이 변경되면 GetModuleFileNameEx 가 실패하거나 잘못된 정보를 반환할 수 있습니다.

현재 프로세스에서 모듈의 이름을 검색하려면 GetModuleFileName 함수를 사용합니다. 현재 프로세스에 대한 핸들을 사용하여 GetModuleFileNameEx 를 호출하는 것보다 더 효율적이고 안정적입니다.

원격 프로세스에 대한 기본 실행 모듈의 이름을 검색하려면 GetProcessImageFileName 또는 QueryFullProcessImageName 함수를 사용합니다. NULL 모듈 핸들을 사용하여 GetModuleFileNameEx 함수를 호출하는 것보다 더 효율적이고 안정적입니다.

Windows 7 및 Windows Server 2008 R2부터 Psapi.h는 PSAPI 함수에 대한 버전 번호를 설정합니다. PSAPI 버전 번호는 함수를 호출하는 데 사용되는 이름과 프로그램이 로드해야 하는 라이브러리에 영향을 줍니다.

PSAPI_VERSION 2 이상인 경우 이 함수는 Psapi.h에서 K32GetModuleFileNameEx로 정의되고 Kernel32.lib 및 Kernel32.dll 내보냅니다. PSAPI_VERSION 1이면 이 함수는 Psapi.h에서 GetModuleFileNameEx로 정의되고 Psapi.lib에서 내보내고 K32GetModuleFileNameEx를 호출하는 래퍼로 Psapi.dll.

이전 버전의 Windows 및 Windows 7 이상 버전에서 실행해야 하는 프로그램은 항상 이 함수를 GetModuleFileNameEx로 호출해야 합니다. 기호의 올바른 해상도를 보장하려면 TargetLIBS 매크로에 Psapi.lib를 추가하고 -DPSAPI_VERSION=1로 프로그램을 컴파일합니다. 런타임 동적 연결을 사용하려면 Psapi.dll 로드합니다.

예제

예제는 프로세스에 대한 모든 모듈 열거를 참조하세요.

참고

psapi.h 헤더는 GETModuleFileNameEx를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 psapi.h
라이브러리 Windows 7 및 Windows Server 2008 R2의 Kernel32.lib; Windows 7 및 Windows Server 2008 R2의 Psapi.lib(PSAPI_VERSION=1인 경우) Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP의 Psapi.lib
DLL Windows 7 및 Windows Server 2008 R2의 Kernel32.dll Windows 7 및 Windows Server 2008 R2에서 Psapi.dll(PSAPI_VERSION=1인 경우) Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP의 Psapi.dll

추가 정보

EnumProcesses

GetModuleBaseName

GetModuleFileName

GetModuleHandle

LoadLibrary

모듈 정보

PSAPI 함수