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 |