Compartir a través de


Método IDebugHostSymbols::CreateTypeSignatureForModuleRange (dbgmodel.h)

El método CreateTypeSignatureForModuleRange crea una firma que se puede usar para hacer coincidir un conjunto de tipos concretos mediante la firma del módulo y el nombre de tipo. Esto es similar al método CreateTypeSignature, excepto que, en lugar de pasar un módulo específico para que coincida con la firma, el autor de la llamada pasa los argumentos necesarios para crear una firma de módulo (como si la firma del módulo se creara con el método CreateModuleSignature).

Sintaxis

HRESULT CreateTypeSignatureForModuleRange(
  PCWSTR                  signatureSpecification,
  PCWSTR                  moduleName,
  PCWSTR                  minVersion,
  PCWSTR                  maxVersion,
  IDebugHostTypeSignature **typeSignature
);

Parámetros

signatureSpecification

Cadena de firma que identifica los tipos a los que se aplica esta firma. El formato de esta cadena es específico del lenguaje que se está depurando. Para C/C++, esto equivale a una especificación de tipo NatVis. Este es un nombre de tipo donde se permiten caracteres comodín para los argumentos de plantilla (especificados como *).

moduleName

El nombre que el módulo contenedor debe coincidir (sin distinción entre mayúsculas y minúsculas) para que el tipo se considere una coincidencia para la firma.

minVersion

Versión mínima del módulo contenedor para que el tipo se considere una coincidencia para la firma. El formato de este argumento es equivalente al mismo argumento en CreateModuleSignature.

maxVersion

Versión máxima del módulo contenedor para que el tipo se considere una coincidencia para la firma. El formato de este argumento es equivalente al mismo argumento en CreateModuleSignature.

typeSignature

El objeto de firma de tipo recién creado se devolverá aquí.

Valor devuelto

Este método devuelve HRESULT que indica éxito o error.

Comentarios

Código de ejemplo

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.
    }
}

Diferencias en la coincidencia de módulos de símbolos en FindModuleByName, CreateTypeSignature y CreateTypeSignatureForModuleRange

FindModuleByName permitirá que el nombre del módulo pasado sea el nombre de imagen real del módulo, por ejemplo, Mi Module.dll o el que puede hacer referencia a él en el motor del depurador (por ejemplo: MyModule o MyModule_<hex_base>).

Al llamar a CreateTypeSignatureForModuleRange y pasar un nombre,nullptr/nullptr/nullptr, se creará una firma que coincidirá con cualquier módulo que coincida con ese nombre de cualquier versión.

El nombre del módulo pasado a las funciones CreateTypeSignature solo aceptará el nombre de imagen real del módulo (por ejemplo, MyModule.dll).

Al llamar a FindModuleByName y, a continuación, CreateTypeSignature con ese módulo se creará una firma que coincidirá solo con la instancia concreta del módulo que se le ha pasado. Si hay dos copias de un módulo que se carga (por ejemplo, ntdll en un proceso de 32 bits que se ejecuta en Windows de 64 bits), solo coincidiría con la instancia específica pasada. Tampoco coincidiría si ese archivo DLL se descargara y se volvera a cargar. La firma está asociada a una instancia específica de un módulo, como lo conoce el depurador.

Requisitos

Requisito Valor
Header dbgmodel.h

Consulte también

Interfaz IDebugHostSymbols

FindModuleByName

CreateTypeSignature