모듈 정보

모듈은 실행 파일 또는 DLL입니다. 각 프로세스의 모듈 하나 이상으로 구성 됩니다. EnumProcessModules 함수를 호출하여 프로세스에 대한 모듈 핸들 목록을 검색할 수 있습니다. 이 함수는 지정된 프로세스에 대한 모듈 핸들로 HMODULE 값 배열을 채웁니다. 첫 번째 모듈은 실행 파일입니다. 이러한 모듈 핸들은 다른 프로세스에서 발생할 가능성이 높으므로 GetModuleFileName과 같은 함수와 함께 사용할 수 없습니다. 그러나 PSAPI 함수를 사용하여 다른 프로세스에서 모듈에 대한 정보를 가져올 수 있습니다.

다음 절차에서는 다른 프로세스에서 모듈 정보를 가져오는 방법을 설명합니다.

다른 프로세스에서 모듈 정보를 가져오려면

  1. GetModuleBaseName 함수를 호출합니다. 이 함수는 프로세스 핸들과 모듈 핸들을 입력으로 사용하고 버퍼를 모듈의 기본 이름(예: Kernel32.dll)으로 채웁니다. 관련 함수인 GetModuleFileNameEx는 입력과 동일한 매개 변수를 사용하지만 모듈의 전체 경로(예: C:\Windows\System32\Kernel32.dll)를 반환합니다.
  2. GetModuleInformation 함수를 호출합니다. 이 함수는 프로세스 핸들과 모듈 핸들을 사용하고 모듈의 로드 주소, 모듈이 차지하는 선형 주소 공간의 크기 및 진입점에 대한 포인터로 MODULEINFO 구조를 채웁니다.

애플리케이션에 현재 프로세스에 대한 모듈 정보가 필요한 경우 PSAPI 모듈 함수 대신 GetModuleFileName 함수를 사용해야 합니다. 이렇게 하면 두 가지 방법으로 애플리케이션 성능이 향상됩니다. GetModuleFileName 함수는 PSAPI 모듈 함수보다 더 효율적이며, 애플리케이션은 PSAPI 함수를 사용하지 않는 경우 psapi.dll 로드하지 않을 수 있습니다.

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