Share via


Metodo IDebugHostSymbols::CreateTypeSignatureForModuleRange (dbgmodel.h)

Il metodo CreateTypeSignatureForModuleRange crea una firma che può essere usata per trovare una corrispondenza con un set di tipi concreti in base alla firma del modulo e al nome del tipo. È simile al metodo CreateTypeSignature, ad eccezione del fatto che anziché passare un modulo specifico per la firma, il chiamante passa gli argomenti necessari per creare una firma del modulo( come se la firma del modulo fosse stata creata con il metodo CreateModuleSignature).

Sintassi

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

Parametri

signatureSpecification

Stringa di firma che identifica i tipi a cui si applica questa firma. Il formato di questa stringa è specifico del linguaggio di cui è in corso il debug. Per C/C++, equivale a una specifica del tipo NatVis. Si tratta di un nome di tipo in cui i caratteri jolly sono consentiti per gli argomenti del modello (specificati come *).

moduleName

Il nome che il modulo contenitore deve corrispondere (senza distinzione tra maiuscole e minuscole) affinché il tipo venga considerato una corrispondenza per la firma.

minVersion

Versione minima del modulo contenitore per il tipo da considerare una corrispondenza per la firma. Il formato di questo argomento equivale allo stesso argomento in CreateModuleSignature

maxVersion

Versione massima del modulo contenitore per il tipo da considerare una corrispondenza per la firma. Il formato di questo argomento equivale allo stesso argomento in CreateModuleSignature

typeSignature

L'oggetto firma del tipo appena creato verrà restituito qui.

Valore restituito

Questo metodo restituisce HRESULT che indica l'esito positivo o negativo.

Commenti

Codice di esempio

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

Differenze nella corrispondenza dei moduli di simboli in FindModuleByName, CreateTypeSignature e CreateTypeSignatureForModuleRange

FindModuleByName consentirà al nome del modulo passato di essere il nome dell'immagine reale del modulo, ad esempio My Module.dll o quello a cui è possibile farvi riferimento nel motore del debugger ,ad esempio MyModule o MyModule_<hex_base>.

La chiamata a CreateTypeSignatureForModuleRange e il passaggio di un nome/nullptr/nullptr creerà una firma che corrisponderà a qualsiasi modulo corrispondente a tale nome di qualsiasi versione.

Il nome del modulo passato alle funzioni CreateTypeSignature accetterà solo il nome dell'immagine reale del modulo, ad esempio MyModule.dll.

Chiamando FindModuleByName e quindi CreateTypeSignature con tale modulo verrà creata una firma che corrisponderà solo all'istanza specifica del modulo passato. Se sono presenti due copie di un modulo caricato ,ad esempio ntdll in un processo a 32 bit in esecuzione in Windows a 64 bit, corrisponderà solo all'istanza specifica passata. Inoltre, non corrisponderebbe più se la DLL fosse scaricata e ricaricata. La firma è associata a un'istanza specifica di un modulo noto dal debugger.

Requisiti

Requisito Valore
Intestazione dbgmodel.h

Vedi anche

Interfaccia IDebugHostSymbols

FindModuleByName

CreateTypeSignature