Registrare il modulo di debug personalizzato
Il motore di debug necessario registrarsi come class factory utilizzando le convenzioni nonché il log di COM con Visual Studio con la sottochiave del Registro di sistema di Visual Studio.
Nota
Un esempio di come registrare un modulo di debug è disponibile nell'esempio di TextInterpreter, che viene compilato come parte di Tutorial: Building a Debug Engine Using ATL COM.
processo server di DLL
In genere, un motore di debug è implementata nel proprio DLL come server COM. Ciò significa che il motore di debug necessario registrare il CLSID del relativo class factory tramite COM prima di Visual Studio possa accedervi. Quindi il motore di debug necessario registrarsi con Visual Studio stesso per definire tutte le proprietà (altrimenti noto come metrica) dei supporti di motore di debug. La scelta della metrica scritta la sottochiave del Registro di sistema di Visual Studio per il modulo di debug dipende dalle funzionalità dei supporti di motore di debug.
Supporto di SDK per il debug viene descritto non solo alle posizioni del Registro di sistema necessarie per registrare il modulo di debug; vengono inoltre descritti la libreria di dbgmetric.lib, che contiene una serie di funzioni e dichiarazioni utili per gli sviluppatori di C++ che rendono modificando il Registro di sistema più semplice.
Esempio
Ecco (nell'esempio di TextInterpreter) rappresentazione di esempio tipica come utilizzare la funzione di SetMetric (da dbgmetric.lib), per registrare il modulo di debug con Visual Studio. Le metriche passata è anche definita in dbgmetric.lib.
Nota
TextInterpreter è un motore di debug di base; non fa mezzo-e non fa registro-qualsiasi altre funzionalità.Un più motore di debug completo includerà un intero elenco di chiamate o relativi equivalenti, una di SetMetric per ogni funzionalità dei supporti di motore di debug.
// Define base registry subkey to Visual Studio.
static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0";
HRESULT CTextInterpreterModule::RegisterServer(BOOL bRegTypeLib, const CLSID * pCLSID)
{
SetMetric(metrictypeEngine, __uuidof(Engine), metricName, L"Text File", false, strRegistrationRoot);
SetMetric(metrictypeEngine, __uuidof(Engine), metricCLSID, CLSID_Engine, false, strRegistrationRoot);
SetMetric(metrictypeEngine, __uuidof(Engine), metricProgramProvider, CLSID_MsProgramProvider, false, strRegistrationRoot);
return base::RegisterServer(bRegTypeLib, pCLSID);
}