Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il metodo CreateTypeSignature crea una firma che può essere usata per trovare una corrispondenza con un set di tipi concreti contenente il nome del modulo e del tipo. Il formato della stringa di firma del nome del tipo è specifico del linguaggio di cui è in corso il debug (e l'host di debug). Per C/C++, la stringa di firma equivale a una specifica del tipo NatVis. Ovvero, la stringa di firma è un nome di tipo in cui i caratteri jolly (specificati come *) sono consentiti per gli argomenti del modello.
Sintassi
HRESULT CreateTypeSignature(
PCWSTR signatureSpecification,
IDebugHostModule *module,
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 *).
module
Se specificato, solo i tipi contenuti all'interno del modulo specificato corrispondono alla firma. Se non specificato, i tipi in qualsiasi modulo possono potenzialmente corrispondere alla firma.
typeSignature
L'oggetto firma del tipo creato viene restituito qui.
Valore restituito
Questo metodo restituisce HRESULT che indica l'esito positivo o negativo.
Osservazioni
codice di esempio
ComPtr<IDebugHost> spHost; /* get the host */
ComPtr<IDebugHostSymbols> spSym;
if (SUCCEEDED(spHost.As(&spSym)))
{
// Create a type signature for MyTemplateType<*>
ComPtr<IDebugHostTypeSignature> spSig1;
if (SUCCEEDED(spSym->CreateTypeSignature(L"MyTemplateType<*>",
nullptr,
&spSig1)))
{
// spSig1 is a type signature which will match any concrete template
// type with a base name of MyTemplateType and *ANY* template arguments.
// This is true regardless of the module in which the type is contained.
}
ComPtr<IDebugHostModule> spMyModule;
if (SUCCEEDED(spSym->FindModuleByName(USE_CURRENT_HOST_CONTEXT,
L"MyModule.dll",
&spMyModule)))
{
// Create a type signature for MyTemplateType<*> within MyModule.dll.
ComPtr<IDebugHostTypeSignature> spSig2;
if (SUCCEEDED(spSym->CreateTypeSignature(L"MyTemplateType<*>",
nullptr,
&spSig2)))
{
// spSig2 is a type signature which will match any concrete
// template type with a base name of MyTemplateType and *ANY*
// template arguments that is within the particular MyModule.dll
// that's in the current UI context (e.g.: process) of the debugger.
// This means if the host is debugging multiple processes
// and you switch processes, a MyTemplateType<*> in an identically
// named and versioned MyModule.dll will *NOT* match this signature.
}
}
}
Differenze nei moduli di simboli corrispondenti 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.dllo quello a cui è possibile farvi riferimento nel motore del debugger , ad esempio MyModule o MyModule_<hex_base>.
Chiamando CreateTypeSignatureForModuleRange e passando 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, corrisponderebbe solo all'istanza specifica passata. Non corrisponderebbe più anche se la DLL fosse scaricata e ricaricata. La firma è associata a un'istanza specifica di un modulo noto dal debugger.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | dbgmodel.h |