Método IDebugHostSymbols::CreateTypeSignatureForModuleRange (dbgmodel.h)
O método CreateTypeSignatureForModuleRange cria uma assinatura que pode ser usada para corresponder a um conjunto de tipos concretos por assinatura de módulo e nome do tipo. Isso é semelhante ao método CreateTypeSignature, exceto que, em vez de passar um módulo específico para corresponder à assinatura, o chamador passa os argumentos necessários para criar uma assinatura de módulo (como se a assinatura do módulo tivesse sido criada com o método CreateModuleSignature).
Sintaxe
HRESULT CreateTypeSignatureForModuleRange(
PCWSTR signatureSpecification,
PCWSTR moduleName,
PCWSTR minVersion,
PCWSTR maxVersion,
IDebugHostTypeSignature **typeSignature
);
Parâmetros
signatureSpecification
A cadeia de caracteres de assinatura que identifica os tipos aos quais essa assinatura se aplica. O formato dessa cadeia de caracteres é específico para o idioma que está sendo depurado. Para C/C++, isso é equivalente a uma especificação de tipo NatVis. Esse é um nome de tipo em que caracteres curinga são permitidos para argumentos de modelo (especificado como um *).
moduleName
O nome que o módulo recipiente deve corresponder (não diferencia maiúsculas de minúsculas) para que o tipo seja considerado uma correspondência para a assinatura.
minVersion
A versão mínima do módulo recipiente para o tipo a ser considerado uma correspondência para a assinatura. O formato desse argumento é equivalente ao mesmo argumento em CreateModuleSignature
maxVersion
A versão máxima do módulo recipiente para o tipo a ser considerado uma correspondência para a assinatura. O formato desse argumento é equivalente ao mesmo argumento em CreateModuleSignature
typeSignature
O objeto de assinatura de tipo recém-criado será retornado aqui.
Retornar valor
Esse método retorna HRESULT que indica êxito ou falha.
Comentários
Código de exemplo
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.
}
}
Diferenças na correspondência do módulo de símbolo em FindModuleByName, CreateTypeSignature e CreateTypeSignatureForModuleRange
FindModuleByName permitirá que o nome do módulo passado seja o nome real da imagem do módulo, por exemplo, Meu Module.dll ou aquele pelo qual você pode referenciá-lo no mecanismo do depurador (por exemplo: MyModule ou MyModule_<hex_base>).
Chamar CreateTypeSignatureForModuleRange e passar um nome/nullptr/nullptr criará uma assinatura que corresponderá a qualquer módulo que corresponda a esse nome de qualquer versão.
O nome do módulo passado para as funções CreateTypeSignature aceitará apenas o nome da imagem real do módulo (por exemplo: MyModule.dll).
Chamar FindModuleByName e CreateTypeSignature com esse módulo criará uma assinatura que corresponderá apenas à instância específica do módulo passada para ele. Se houver duas cópias de um módulo que é carregado (por exemplo: ntdll em um processo de 32 bits em execução no Windows de 64 bits), ele corresponderá apenas à instância específica passada. Também não corresponderia mais se essa DLL fosse descarregada e recarregada. A assinatura está associada a uma instância específica de um módulo, conforme conhecido pelo depurador.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | dbgmodel.h |