GetModuleFileNameA 함수(libloaderapi.h)

지정된 모듈이 포함된 파일의 정규화된 경로를 검색합니다. 모듈은 현재 프로세스에 의해 로드되어 있어야 합니다.

다른 프로세스에서 로드한 모듈에 대한 파일을 찾으려면 GetModuleFileNameEx 함수를 사용합니다.

구문

DWORD GetModuleFileNameA(
  [in, optional] HMODULE hModule,
  [out]          LPSTR   lpFilename,
  [in]           DWORD   nSize
);

매개 변수

[in, optional] hModule

경로가 요청되는 로드된 모듈에 대한 핸들입니다. 이 매개 변수가 NULL이면 GetModuleFileName 은 현재 프로세스의 실행 파일 경로를 검색합니다.

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

[out] lpFilename

모듈의 정규화된 경로를 수신하는 버퍼에 대한 포인터입니다. 경로 길이가 nSize 매개 변수가 지정한 크기보다 작으면 함수가 성공하고 경로가 null로 끝나는 문자열로 반환됩니다.

경로의 길이가 nSize 매개 변수가 지정한 크기를 초과하면 함수가 성공하고 종료 null 문자를 포함하여 문자열이 nSize 문자로 잘립니다.

Windows XP: 문자열은 nSize 문자로 잘리며 null로 종료되지 않습니다.

반환된 문자열은 모듈을 로드할 때 지정한 것과 동일한 형식을 사용합니다. 따라서 경로는 길거나 짧은 파일 이름이 될 수 있으며 접 \\?\두사를 사용할 수 있습니다. 자세한 내용은 파일 이름 지정을 참조하세요.

[in] nSize

TCHARlpFilename 버퍼 크기입니다.

반환 값

함수가 성공하면 반환 값은 종료 null 문자를 포함하지 않고 버퍼에 복사되는 문자열의 길이(문자)입니다. 버퍼가 너무 작아 모듈 이름을 보유할 수 없는 경우 문자열은 null 종료 문자를 포함하여 nSize 문자로 잘리고, 함수는 nSize를 반환하고, 함수는 마지막 오류를 ERROR_INSUFFICIENT_BUFFER 설정합니다.

Windows XP: 버퍼가 너무 작아 모듈 이름을 보유할 수 없는 경우 함수는 nSize를 반환합니다. 마지막 오류 코드는 ERROR_SUCCESS 유지됩니다. nSize가 0이면 반환 값이 0이고 마지막 오류 코드가 ERROR_SUCCESS.

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

설명

두 프로세스에서 DLL이 로드되는 경우 한 프로세스의 파일 이름이 다른 프로세스의 파일 이름과 다를 수 있습니다.

전역 변수 _pgmptr 는 실행 파일의 전체 경로로 자동으로 초기화되며 실행 파일의 전체 경로 이름을 검색하는 데 사용할 수 있습니다.

예제

예제는 서비스 설치를 참조하세요.

참고

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

요구 사항

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

참고 항목

동적 연결 라이브러리 함수

GetModuleFileNameEx

GetModuleHandle

LoadLibrary

LoadLibraryEx