IDebugHostSymbols::CreateTypeSignatureForModuleRange 메서드(dbgmodel.h)
CreateTypeSignatureForModuleRange 메서드는 모듈 서명 및 형식 이름으로 구체적인 형식 집합을 일치시키는 데 사용할 수 있는 서명을 만듭니다. 이는 서명과 일치하도록 특정 모듈을 전달하는 대신 모듈 서명을 만드는 데 필요한 인수를 전달한다는 점을 제외하고 CreateTypeSignature 메서드와 유사합니다(CreateModuleSignature 메서드를 사용하여 모듈 서명을 만든 것처럼).
구문
HRESULT CreateTypeSignatureForModuleRange(
PCWSTR signatureSpecification,
PCWSTR moduleName,
PCWSTR minVersion,
PCWSTR maxVersion,
IDebugHostTypeSignature **typeSignature
);
매개 변수
signatureSpecification
이 서명이 적용되는 형식을 식별하는 서명 문자열입니다. 이 문자열의 형식은 디버깅 중인 언어와 관련이 있습니다. C/C++의 경우 NatVis 형식 사양과 동일합니다. 템플릿 인수에 와일드카드가 허용되는 형식 이름입니다(*로 지정됨).
moduleName
형식이 서명에 대한 일치 항목으로 간주되려면 포함하는 모듈이 일치해야 하는 이름(대/소문자를 구분하지 않음)입니다.
minVersion
서명에 대한 일치 항목으로 간주될 형식에 대한 포함 모듈의 최소 버전입니다. 이 인수의 형식은 CreateModuleSignature의 동일한 인수와 동일합니다.
maxVersion
서명에 대한 일치 항목으로 간주될 형식에 대한 포함 모듈의 최대 버전입니다. 이 인수의 형식은 CreateModuleSignature의 동일한 인수와 동일합니다.
typeSignature
새로 만든 형식 서명 개체가 여기에 반환됩니다.
반환 값
이 메서드는 성공 또는 실패를 나타내는 HRESULT를 반환합니다.
설명
예제 코드
ComPtr<IDebugHost> spHost; /* get the host */
ComPtr<IDebugHostSymbols> spSym;
if (SUCCEEDED(spHost.As(&spSym)))
{
ComPtr<IDebugHostTypeSignature> spSig;
if (SUCCEEDED(spSym->CreateTypeSignatureForModuleRange(
L"MyTemplateType<*>",
L"MyModule.dll",
L"6.3",
L"10.0.0.0",
&spSig)))
{
// spSig is a type signature which will match any template type with
// a base name of MyTemplateType and *ANY* template arguments that is
// within a module named "MyModule.dll" with a version >= 6.3(.0.0)
// and a version <= 10.0.0.0 (regardless of the process/context of the module)
//
// Note that the version arguments are optional. If absent, it indicates
// there is either no lower or no upper bound on the module version
// to match the signature.
}
}
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 |