Share via


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

La méthode CreateTypeSignatureForModuleRange crée une signature qui peut être utilisée pour faire correspondre un ensemble de types concrets par signature de module et par nom de type. Ceci est similaire à la méthode CreateTypeSignature, sauf qu’au lieu de passer un module spécifique correspondant à la signature, l’appelant transmet les arguments nécessaires pour créer une signature de module (comme si la signature de module avait été créée avec la méthode CreateModuleSignature).

Syntaxe

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

Paramètres

signatureSpecification

Chaîne de signature qui identifie les types auxquels cette signature s’applique. Le format de cette chaîne est spécifique à la langue en cours de débogage. Pour C/C++, cela équivaut à une spécification de type NatVis. Il s’agit d’un nom de type où les caractères génériques sont autorisés pour les arguments de modèle (spécifiés sous la forme d’un *).

moduleName

Nom auquel le module contenant doit correspondre (ne respectant pas la casse) pour que le type soit considéré comme une correspondance pour la signature.

minVersion

Version minimale du module contenant pour que le type soit considéré comme une correspondance pour la signature. Le format de cet argument est équivalent au même argument dans CreateModuleSignature

maxVersion

Version maximale du module contenant pour que le type soit considéré comme une correspondance pour la signature. Le format de cet argument est équivalent au même argument dans CreateModuleSignature

typeSignature

L’objet de signature de type nouvellement créé sera retourné ici.

Valeur retournée

Cette méthode retourne HRESULT qui indique la réussite ou l’échec.

Remarques

Exemple de Code

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

Différences dans la correspondance des modules de symboles dans FindModuleByName, CreateTypeSignature et CreateTypeSignatureForModuleRange

FindModuleByName permet au nom du module passé d’être soit le nom réel de l’image du module, par exemple My Module.dll, soit celui par lequel vous pouvez le référencer dans le moteur du débogueur (par exemple, MyModule ou MyModule_<hex_base>).

L’appel de CreateTypeSignatureForModuleRange et le passage d’un nom/nullptr/nullptr crée une signature qui correspond à n’importe quel module correspondant au nom de n’importe quelle version.

Le nom du module passé aux fonctions CreateTypeSignature n’accepte que le nom réel de l’image du module (par exemple, MyModule.dll).

L’appel de FindModuleByName, puis CreateTypeSignature avec ce module crée une signature qui correspondra uniquement au instance particulier du module qui lui est passé. S’il existe deux copies d’un module chargé (par exemple, ntdll dans un processus 32 bits s’exécutant sur Windows 64 bits), il ne correspondrait qu’à la instance spécifique passée. Elle ne correspondrait plus non plus si cette DLL était déchargée et rechargée. La signature est associée à un instance spécifique d’un module connu par le débogueur.

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h

Voir aussi

Interface IDebugHostSymbols

FindModuleByName

CreateTypeSignature