Método IDebugHostSymbols::CreateTypeSignatureForModuleRange (dbgmodel.h)
El método CreateTypeSignatureForModuleRange crea una firma que se puede usar para buscar coincidencias con un conjunto de tipos concretos por firma de módulo y 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 idioma que se está depurando. Para C/C++, esto equivale a una especificación de tipo NatVis. Este es un nombre de tipo en el que se permiten caracteres comodín para argumentos de plantilla (especificados como *).
moduleName
El nombre que el módulo contenedor debe coincidir (no distingue mayúsculas de 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
La versión máxima del módulo contenedor para el tipo que se va a considerar 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.
Observaciones
de 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, My 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 name/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 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 cargado (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, tal como lo conoce el depurador.
Requisitos
Requisito | Valor |
---|---|
encabezado de | dbgmodel.h |