Compartilhar via


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

Confira também

Interface IDebugHostSymbols

FindModuleByName

CreateTypeSignature