IDebugHostSymbols::CreateTypeSignatureForModuleRange-Methode (dbgmodel.h)
Die CreateTypeSignatureForModuleRange-Methode erstellt eine Signatur, die verwendet werden kann, um einer Gruppe konkreter Typen nach Modulsignatur und Typnamen zuzuordnen. Dies ähnelt der CreateTypeSignature-Methode, mit der Ausnahme, dass der Aufrufer die argumente übergibt, die zum Erstellen einer Modulsignatur erforderlich sind (als ob die Modulsignatur mit der CreateModuleSignature-Methode erstellt wurde).
Syntax
HRESULT CreateTypeSignatureForModuleRange(
PCWSTR signatureSpecification,
PCWSTR moduleName,
PCWSTR minVersion,
PCWSTR maxVersion,
IDebugHostTypeSignature **typeSignature
);
Parameter
signatureSpecification
Die Signaturzeichenfolge, die die Typen angibt, für die diese Signatur gilt. Das Format dieser Zeichenfolge ist spezifisch für die zu debuggende Sprache. Bei C/C++ entspricht dies einer NatVis-Typspezifikation. Dies ist ein Typname, bei dem Für Vorlagenargumente (angegeben als *) Wildcards zulässig sind.
moduleName
Der Name, mit dem das enthaltende Modul übereinstimmen muss (Groß-/Kleinschreibung wird nicht beachtet), damit der Typ als Übereinstimmung für die Signatur betrachtet wird.
minVersion
Die Mindestversion des enthaltenden Moduls, damit der Typ als Übereinstimmung für die Signatur betrachtet wird. Das Format dieses Arguments entspricht demselben Argument in CreateModuleSignature
maxVersion
Die maximale Version des enthaltenden Moduls, damit der Typ als Übereinstimmung für die Signatur betrachtet wird. Das Format dieses Arguments entspricht demselben Argument in CreateModuleSignature
typeSignature
Das neu erstellte Typsignaturobjekt wird hier zurückgegeben.
Rückgabewert
Diese Methode gibt HRESULT zurück, das Erfolg oder Fehler angibt.
Bemerkungen
Beispielcode-
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.
}
}
Unterschiede beim Abgleich von Symbolmodulen in FindModuleByName, CreateTypeSignature und CreateTypeSignatureForModuleRange
FindModuleByName- ermöglicht dem übergebenen Modulnamen entweder den tatsächlichen Bildnamen des Moduls, z. B. "Mein Module.dll" oder den Namen, auf den Sie im Debuggermodul verweisen können (z. B.: MyModule oder MyModule_<hex_base>).
Durch Aufrufen von CreateTypeSignatureForModuleRange und Übergeben eines Namens/nullptr/nullptr/nullptr wird eine Signatur erstellt, die mit jedem Modul übereinstimmt, das diesem Namen einer beliebigen Version entspricht.
Der an die CreateTypeSignature-Funktionen übergebene Modulname akzeptiert nur den tatsächlichen Bildnamen des Moduls (z. B. MyModule.dll).
Wenn Sie FindModuleByName- aufrufen und dann CreateTypeSignature- mit diesem Modul eine Signatur erstellen, die nur mit der bestimmten Instanz des an das Modul übergebenen Moduls übereinstimmt. Wenn es zwei Kopien eines Moduls gibt, das geladen wird (z. B. ntdll in einem 32-Bit-Prozess, der unter 64-Bit-Windows ausgeführt wird), stimmt es nur mit der übergebenen instanz überein. Es würde auch nicht mehr übereinstimmen, wenn diese DLL entladen und neu geladen wurde. Die Signatur ist einer bestimmten Instanz eines Moduls zugeordnet, das vom Debugger bezeichnet wird.
Anforderungen
Anforderung | Wert |
---|---|
Header- | dbgmodel.h |