Delen via


Een aangepaste foutopsporingsengine registreren

De foutopsporingsengine moet zichzelf registreren als een klassefactory, volgens COM-conventies en zich registreren bij Visual Studio via de registersubsleutel van Visual Studio.

Opmerking

U vindt een voorbeeld van het registreren van een foutopsporingsengine in het TextInterpreter-voorbeeld, dat is gebouwd als onderdeel van de zelfstudie: Een foutopsporingsengine bouwen met behulp van ATL COM.

DLL-serverproces

Een foutopsporingsengine wordt doorgaans ingesteld in een eigen DLL als com-server. Als zodanig moet de foutopsporingsengine de CLSID van de klassefactory registreren bij COM voordat Visual Studio er toegang toe heeft. Vervolgens moet de foutopsporingsengine zichzelf registreren bij Visual Studio om eigenschappen vast te stellen (ook wel metrische gegevens genoemd) die de foutopsporingsengine ondersteunt. De keuze van metrische gegevens die naar de registersubsleutel van Visual Studio zijn geschreven, is afhankelijk van de functies die door de engine voor foutopsporing worden ondersteund.

SDK-helpers voor foutopsporing beschrijven niet alleen de registerlocaties die nodig zijn om een foutopsporingsengine te registreren; het beschrijft ook de library dbgmetric.lib , die een aantal nuttige functies en declaraties bevat voor C++-ontwikkelaars die het register gemakkelijker bewerken.

Example

In het volgende voorbeeld (uit het TextInterpreter-voorbeeld) ziet u hoe u de SetMetric functie (van dbgmetric.lib) gebruikt om een foutopsporingsengine te registreren bij Visual Studio. De metrische gegevens die worden doorgegeven, worden ook gedefinieerd in dbgmetric.lib.

Opmerking

TextInterpreter is een eenvoudige foutopsporingsengine; het is niet ingesteld en registreert daarom geen andere functies. Een volledigere foutopsporingsengine zou een hele lijst met SetMetric aanroepen of hun equivalent hebben, één voor elke functie die door de foutopsporingsengine wordt ondersteund.

// 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);
}