Registrieren eines benutzerdefinierten Debugmoduls
Das Debugmodul muss sich selbst als Klassenfactory registrieren, die COM-Konventionen befolgen und sich mit Visual Studio über den Visual Studio-Registrierungsunterschlüssel registrieren.
Hinweis
Sie finden ein Beispiel zum Registrieren eines Debugmoduls im TextInterpreter-Beispiel, das als Teil des Lernprogramms erstellt wird: Erstellen eines Debugmoduls mithilfe von ATL COM.
DLL-Serverprozess
Ein Debugmodul wird in der Regel in einer eigenen DLL als COM-Server eingerichtet. Daher muss das Debugmodul die CLSID seiner Klassenfactory bei COM registrieren, bevor Visual Studio darauf zugreifen kann. Anschließend muss sich das Debugmodul bei Visual Studio registrieren, um alle Eigenschaften (sonst als Metriken bezeichnet) einzurichten, die das Debugmodul unterstützt. Die Auswahl von Metriken, die in den Registrierungsunterschlüssel von Visual Studio geschrieben wurden, hängt von den Features ab, die das Debugmodul unterstützt.
SDK-Hilfsprogramme zum Debuggen beschreiben nicht nur die Registrierungsspeicherorte, die zum Registrieren eines Debugmoduls erforderlich sind. Außerdem wird die dbgmetric.lib-Bibliothek beschrieben, die eine Reihe nützlicher Funktionen und Deklarationen für C++-Entwickler enthält, die das Bearbeiten der Registrierung vereinfachen.
Beispiel
Im folgenden Beispiel (aus dem TextInterpreter-Beispiel) wird gezeigt, wie Die SetMetric
Funktion (aus dbgmetric.lib) zum Registrieren eines Debugmoduls mit Visual Studio verwendet wird. Die übergebenen Metriken werden auch in dbgmetric.lib definiert.
Hinweis
TextInterpreter ist ein einfaches Debugmodul; sie richtet keine anderen Features ein und registriert sie daher nicht. Ein vollständiges Debugmodul würde eine vollständige Liste von SetMetric
Aufrufen oder deren Entsprechung aufweisen, eine für jedes Feature, das vom Debugmodul unterstützt wird.
// 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);
}