Freigeben über


IDebugHostSymbols::CreateTypeSignatureForModuleRange-Methode (dbgmodel.h)

Die CreateTypeSignatureForModuleRange-Methode erstellt eine Signatur, die verwendet werden kann, um eine Reihe konkreter Typen anhand der Modulsignatur und des Typnamens abzugleichen. Dies ähnelt der CreateTypeSignature-Methode, mit der Ausnahme, dass der Aufrufer anstelle eines bestimmten Moduls, das mit der Signatur übereinstimmt, die Argumente übergibt, die zum Erstellen einer Modulsignatur erforderlich sind (als ob die Modulsignatur mit der CreateModuleSignature-Methode erstellt würde).

Syntax

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

Parameter

signatureSpecification

Die Signaturzeichenfolge, die die Typen identifiziert, für die diese Signatur gilt. Das Format dieser Zeichenfolge ist spezifisch für die Zu debuggende Sprache. Für 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 (ohne Beachtung der Groß-/Kleinschreibung), damit der Typ als Übereinstimmung für die Signatur betrachtet wird.

minVersion

Die Mindestversion des enthaltenden Moduls für den Typ, der als Übereinstimmung für die Signatur betrachtet werden soll. Das Format dieses Arguments entspricht demselben Argument in CreateModuleSignature.

maxVersion

Die maximale Version des enthaltenden Moduls für den Typ, der als Übereinstimmung für die Signatur betrachtet werden soll. 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 den Erfolg oder Fehler angibt.

Hinweise

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 lässt zu, dass der übergebene Modulname entweder der reale Imagename des Moduls ist, z. B. My Module.dll, oder der Name, auf den Sie in der Debugger-Engine verweisen können (z. B. MyModule oder MyModule_<hex_base>).

Wenn Sie CreateTypeSignatureForModuleRange aufrufen und einen Namen/nullptr/nullptr übergeben, wird eine Signatur erstellt, die mit jedem Modul übereinstimmt, das mit diesem Namen einer beliebigen Version übereinstimmt.

Der an die CreateTypeSignature-Funktionen übergebene Modulname akzeptiert nur den tatsächlichen Bildnamen des Moduls (z. B. MyModule.dll).

Wenn Sie FindModuleByName und dann CreateTypeSignature mit diesem Modul aufrufen, wird eine Signatur erstellt, die nur der bestimmten instance des moduls entspricht, das an dieses Modul übergeben wird. Wenn zwei Kopien eines Moduls geladen werden (z. B. ntdll in einem 32-Bit-Prozess, der unter 64-Bit-Windows ausgeführt wird), entspricht es nur der spezifischen übergebenen instance. Es würde auch nicht mehr übereinstimmen, wenn diese DLL entladen und neu geladen würde. Die Signatur ist einer bestimmten instance eines Moduls zugeordnet, wie vom Debugger bekannt.

Anforderungen

Anforderung Wert
Header dbgmodel.h

Weitere Informationen

IDebugHostSymbols-Schnittstelle

FindModuleByName

CreateTypeSignature