다음을 통해 공유


IDebugHostSymbols::FindModuleByName 메서드(dbgmodel.h)

FindModuleByName 메서드는 지정된 호스트 컨텍스트를 살펴보고 지정된 이름을 가진 모듈을 찾아 인터페이스를 반환합니다. 파일 확장명 여부에 관계없이 이름으로 모듈을 검색하는 것은 합법적입니다.

구문

HRESULT FindModuleByName(
  IDebugHostContext *context,
  PCWSTR            moduleName,
  IDebugHostModule  **module
);

매개 변수

context

이 호스트 컨텍스트는 지정된 이름과 일치하는 로드된 모듈을 검색합니다.

moduleName

검색할 모듈의 이름입니다. 파일 확장명을 사용하거나 사용하지 않고 이름을 지정할 수 있습니다.

module

모듈이 발견되면 모듈에 대한 인터페이스가 여기에 반환됩니다.

반환 값

이 메서드는 성공 또는 실패를 나타내는 HRESULT를 반환합니다.

설명

예제 코드

ComPtr<IDebugHost> spHost; /* get the host */

ComPtr<IDebugHostSymbols> spSym;
if (SUCCEEDED(spHost.As(&spSym)))
{
    // Find the "notepad.exe" module in the current UI context (process) 
    // of the debug host:
    ComPtr<IDebugHostModule> spModule;
    if (SUCCEEDED(spSym->FindModuleByName(USE_CURRENT_HOST_CONTEXT, 
                                          L"notepad.exe", 
                                          &spModule)))
    {
        // spModule is the module "notepad.exe"
    }
}

FindModuleByName, CreateTypeSignature 및 CreateTypeSignatureForModuleRange에서 기호 모듈 일치의 차이점

FindModuleByName을 사용하면 전달된 모듈 이름이 모듈의 실제 이미지 이름(예: My Module.dll) 또는 디버거 엔진에서 참조할 수 있는 모듈 이름(예: MyModule 또는 MyModule_<hex_base>)이 될 수 있습니다.

CreateTypeSignatureForModuleRange를 호출하고 name/nullptr/nullptr을 전달하면 모든 버전의 이름과 일치하는 모듈과 일치하는 서명을 만듭니다.

CreateTypeSignature 함수에 전달된 모듈 이름은 모듈의 실제 이미지 이름(예: MyModule.dll)만 수락합니다.

FindModuleByName을 호출한 다음 해당 모듈을 사용하여 CreateTypeSignature를 호출하면 전달된 모듈의 특정 instance 일치하는 서명이 생성됩니다. 로드된 모듈의 복사본이 두 개 있는 경우(예: 64비트 Windows에서 실행되는 32비트 프로세스의 ntdll) 전달된 특정 instance만 일치합니다. DLL이 언로드되고 다시 로드된 경우에도 더 이상 일치하지 않습니다. 서명은 디버거에서 알려진 모듈의 특정 instance 연결됩니다.

요구 사항

요구 사항
헤더 dbgmodel.h

추가 정보

IDebugHostSymbols 인터페이스

CreateTypeSignature

CreateTypeSignatureForModuleRange