Daten visuell darstellen und Anzeigen
Geben Sie vorhandene Daten der Schnellansichten und der benutzerdefinierten Viewer auf eine Weise ein, die dem Entwickler schnell sinnvoll ist. Die Ausdrucksauswertung (EE) kann schnellansichten Typ von Drittanbietern unterstützen, sowie seine eigenen benutzerdefinierten Viewer angeben.
Visual Studio bestimmt, wie viele Typ schnellansichten und benutzerdefinierten Viewer mit dem Typ zugeordnet werden, indem die IDebugProperty3::GetCustomViewerCount-Methode aufruft. Wenn mindestens eine schnellansicht Typ oder verfügbaren benutzerdefinierten Viewer wird, ruft Visual Studio die IDebugProperty3::GetCustomViewerList-Methode auf, um eine Liste der Schnellansichten and Viewer abzurufen (tatsächlich eine Liste von CLSIDs, das die Schnellansichten sowie die Viewer implementieren) und stellt sie dem Benutzer dar.
Typ-Schnellansichten unterstützen
Es gibt mehrere Schnittstellen, die die EE Typ implementieren muss, um schnellansichten zu unterstützen. Diese Schnittstellen können in zwei große Kategorien aufgegliedert werden: Typ der die schnellansichten auflisten und die, die die Eigenschaftendaten zugreifen.
Typ-Schnellansichten auflisten
Die EE unterstützt das Auflisten der Typ schnellansichten in seiner Implementierung von IDebugProperty3::GetCustomViewerCount und IDebugProperty3::GetCustomViewerList. Diese Methoden führen den Aufruf der entsprechenden Methoden IEEVisualizerService::GetCustomViewerCount und IEEVisualizerService::GetCustomViewerList.
IEEVisualizerService wird abgerufen, indem IEEVisualizerServiceProvider::CreateVisualizerServiceaufruft. Diese Methode muss die IDebugBinder3-Schnittstelle, die von der IDebugBinder-Schnittstelle abgerufen wird, die IDebugParsedExpression::EvaluateSyncübergeben wird. IEEVisualizerServiceProvider::CreateVisualizerService erfordert außerdem die IDebugSymbolProviderIDebugAddress und Schnittstellen, die IDebugParsedExpression::EvaluateSyncübergeben wurden. Die endgültige Schnittstelle, die IEEVisualizerService-Schnittstelle zu erstellen, die erforderlich ist, ist die IEEVisualizerDataProvider-Schnittstelle, die die EE implementiert. Diese Schnittstelle ermöglicht die Eigenschaft festgelegt werden soll, Änderungen, visualisiert wird. Alle Eigenschaftendaten wird in einer Schnittstelle IDebugObject gekapselt, die auch von der EE implementiert wird.
Zugreifen auf Eigenschaft-Bezugspunkte
Eigenschaftendaten zuzugreifen kann über die IPropertyProxyEESide-Schnittstelle. Zum Abrufen dieser Schnittstelle ruft Visual Studio-Aufrufe QueryInterface für das Eigenschaftenobjekt in der IPropertyProxyProvider-Schnittstelle abzurufen (implementiert im gleichen Objekt, das die IDebugProperty3-Schnittstelle implementiert) und dann die IPropertyProxyProvider::GetPropertyProxy zum Abrufen der Methode auf IPropertyProxyEESide-Schnittstelle.
Alle Daten, die in die und aus IPropertyProxyEESide-Schnittstelle Bereichs übergeben werden, wird in der IEEDataStorage-Schnittstelle gekapselt. Diese Schnittstelle stellt ein Bytearray dar und wird vom Visual Studio und der EE implementiert. Wenn die Daten einer Eigenschaft geändert werden soll, erstellt Visual Studio ein IEEDataStorage-Objekt, das die neuen Daten enthält, und ruft IPropertyProxyEESide::CreateReplacementObject diesem Datenobjekt, um ein neues IEEDataStorage-Objekt an, das wiederum auf IPropertyProxyEESide::InPlaceUpdateObject übergeben wird, um die Daten der Eigenschaft zu aktualisieren. IPropertyProxyEESide::CreateReplacementObject kann die EE, um eine eigene Klasse zu instanziieren, die die IEEDataStorage-Schnittstelle implementiert.
Unterstützung von benutzerdefinierten Viewer
Das Flag DBG_ATTRIB_VALUE_CUSTOM_VIEWER wird auf dem dwAttrib Feld der DEBUG_PROPERTY_INFORMATION Struktur zurückgegeben wird (durch einen Aufruf von IDebugProperty2::GetPropertyInfo) festgelegt, um anzugeben, dass das Objekt einen benutzerdefinierten Viewer verfügt, der mit ihm zugeordnet ist. Wenn dieses Flag festgelegt ist, ruft Visual Studio die IDebugProperty3-Schnittstelle aus der IDebugProperty2-Schnittstelle mit QueryInterface.
Wenn der Benutzer einen benutzerdefinierten Viewer wählt, instanziiert Visual Studio den benutzerdefinierten Viewer mit CLSID des Viewers, das von der IDebugProperty3::GetCustomViewerList-Methode angegeben ist. Visual Studio ruft dann IDebugCustomViewer::DisplayValue an, um den Wert für den Benutzer anzuzeigen.
Normalerweise stellt IDebugCustomViewer::DisplayValue eine schreibgeschützte Ansicht der Daten dar. Um Änderungen an den Daten zu ermöglichen, muss die EE eine benutzerdefinierte Schnittstelle implementieren die das Ändern von Daten für ein Eigenschaftenobjekt unterstützt. Die IDebugCustomViewer::DisplayValue-Methode verwendet diese benutzerdefinierte Schnittstelle, um die Änderung der Daten zu unterstützen. Die Methode sucht nach der benutzerdefinierten Schnittstelle für die IDebugProperty2-Schnittstelle pDebugProperty das als ein Argument übergeben wird.
Typ-Schnellansichten und benutzerdefinierten Viewer unterstützen
Eine EE Typ kann schnellansichten und benutzerdefinierten Viewer in IDebugProperty3::GetCustomViewerCount und IDebugProperty3::GetCustomViewerList-Methoden unterstützen. Zuerst fügt die EE die Anzahl von benutzerdefinierten Viewern hinzu, die den Wert angibt, der von der IEEVisualizerService::GetCustomViewerCount-Methode zurückgegeben wird. Anschließend fügt die EE das CLSIDs seiner eigenen benutzerdefinierten Viewer zur Liste an, die von der IEEVisualizerService::GetCustomViewerList-Methode zurückgegeben wird.