다음을 통해 공유


GetModuleBaseNameA 함수(psapi.h)

지정된 모듈의 기본 이름을 검색합니다.

구문

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

매개 변수

[in] hProcess

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

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

[in, optional] hModule

모듈에 대한 핸들입니다. 이 매개 변수가 NULL이면 이 함수는 호출 프로세스를 만드는 데 사용되는 파일의 이름을 반환합니다.

[out] lpBaseName

모듈의 기본 이름을 수신하는 버퍼에 대한 포인터입니다. 기본 이름이 nSize 매개 변수에 지정된 최대 문자 수보다 긴 경우 기본 이름이 잘립니다.

[in] nSize

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

반환 값

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

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

설명

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

현재 프로세스에서 모듈의 기본 이름을 검색하려면 GetModuleFileName 함수를 사용하여 전체 모듈 이름을 검색한 다음 과 같은 strrchr(szmodulename, '\') 함수 호출을 사용하여 모듈 이름 문자열 내에서 기본 이름의 시작 부분으로 검색합니다. 이는 현재 프로세스에 대한 핸들을 사용하여 GetModuleBaseName 을 호출하는 것보다 더 효율적이고 안정적입니다.

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

GetModuleBaseName 함수는 LOAD_LIBRARY_AS_DATAFILE 플래그와 함께 로드된 모듈의 기본 이름을 검색하지 않습니다. 자세한 내용은 LoadLibraryEx를 참조하세요.

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

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

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

예제

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

참고

psapi.h 헤더는 GETModuleBaseName을 유니코드 전처리기 상수의 정의에 따라 이 함수의 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

GetModuleFileNameEx

모듈 정보

PSAPI 함수

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l