다음을 통해 공유


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에서 내보내고 Psapi.dll K32GetModuleBaseName호출하는 래퍼로 내보냅니다.

이전 버전의 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