Partager via


Visualisant et l'affichage de données

Tapez les données actuelles de visualiseurs et de visionneuses personnalisés d'une manière qui soit rapidement explicite à un développeur. L'évaluateur (EE) d'expression peut prendre en charge des tiers visualiseurs de type ainsi que fournir ses propres visionneuses personnalisées.

Visual Studio détermine le nombre de visualiseurs de type et de visionneuses personnalisées sont associées au type d'objet en appelant la méthode d' IDebugProperty3 : : GetCustomViewerCount . S'il y a au moins une visualiseur de type ou visionneuse de personnalisé disponible, Visual Studio appelle la méthode d' IDebugProperty3 : : GetCustomViewerList pour récupérer une liste de ces visualiseurs et visionneuses (en réalité, une liste d' CLSIDdes objets qui implémentent les visualiseurs et les visionneuses) et les présente à l'utilisateur.

visualiseurs de prise en charge de type

Il existe un nombre quelconque d'interfaces que l'évaluateur d'expression doit implémenter pour prendre en charge les visualiseurs de type. Ces interfaces peuvent être décomposées en deux grandes catégories : ceux qui répertorient les visualiseurs de type et ceux qui accèdent aux données de propriété.

répertorier des visualiseurs de type

L'évaluateur d'expression prend en charge répertorier les visualiseurs de type dans son implémentation d' IDebugProperty3::GetCustomViewerCount et d' IDebugProperty3::GetCustomViewerList. ces méthodes passent l'appel aux méthodes correspondantes IEEVisualizerService : : GetCustomViewerCount et IEEVisualizerService : : GetCustomViewerList.

IEEVisualizerService est obtenu en appelant IEEVisualizerServiceProvider : : CreateVisualizerService. Cette méthode requiert l'interface d' IDebugBinder3 , obtenue à partir de l'interface d' IDebugBinder passée à IDebugParsedExpression : : EvaluateSync. IEEVisualizerServiceProvider::CreateVisualizerService requiert également les interfaces d' IDebugSymbolProvider et d' IDebugAddress passées à IDebugParsedExpression::EvaluateSync. L'interface finale requise pour créer l'interface d' IEEVisualizerService est l'interface d' IEEVisualizerDataProvider , que l'évaluateur d'expression implémente. Cette interface autorise les modifications à effectuer à la propriété qui est visualisée. Toutes les données de propriété est encapsulée dans une interface d' IDebugObject , qui est également implémentée par l'évaluateur d'expression.

Accès aux données de propriété

L'accès aux données des propriétés s'effectue via l'interface d' IPropertyProxyEESide . Pour obtenir cette interface, les appels QueryInterface de Visual Studio à l'objet de propriété pour obtenir l'interface d' IPropertyProxyProvider (implémentée sur le même objet qui implémente l'interface d' IDebugProperty3 ) et appelle ensuite la méthode d' IPropertyProxyProvider : : GetPropertyProxy pour obtenir l'interface d' IPropertyProxyEESide .

Toutes les données passée dans ou hors de l'interface d' IPropertyProxyEESide est encapsulée dans l'interface d' IEEDataStorage . Cette interface représente un tableau d'octets et est implémentée par Visual Studio et l'évaluateur d'expression. Lorsque les données d'une propriété doit être modifiée, Visual Studio crée un objet d' IEEDataStorage maintenant les nouvelles données et appelle IPropertyProxyEESide : : CreateReplacementObject à cet objet de données pour obtenir un objet d' IEEDataStorage qui, à son tour, est passé à IPropertyProxyEESide : : InPlaceUpdateObject pour mettre à jour les données de la propriété. IPropertyProxyEESide::CreateReplacementObject permet à l'évaluateur d'expression pour instancier sa propre classe qui implémente l'interface d' IEEDataStorage .

visionneuses personnalisées de prise en charge

La balise DBG_ATTRIB_VALUE_CUSTOM_VIEWER est définie dans le domaine de dwAttrib de la structure de DEBUG_PROPERTY_INFORMATION (retournée par un appel à IDebugProperty2 : : GetPropertyInfo) pour indiquer que l'objet a une visionneuse personnalisée qui lui est associée. Lorsque cette balise est définie, Visual Studio obtient l'interface d' IDebugProperty3 de l'interface d' IDebugProperty2 à l'aide de QueryInterface.

Si l'utilisateur sélectionne une visionneuse personnalisée, Visual Studio instancie la visionneuse personnalisée à l'aide de CLSID de la visionneuse fourni par la méthode d' IDebugProperty3::GetCustomViewerList . Visual Studio appelle ensuite IDebugCustomViewer : : DisplayValue pour afficher la valeur à l'utilisateur.

Normalement, IDebugCustomViewer::DisplayValue présente une vue en lecture seule de données. Pour autoriser des modifications apportées aux données, l'évaluateur d'expression doit implémenter une interface personnalisée qui prend en charge la modification des données sur un objet de propriété. La méthode d' IDebugCustomViewer::DisplayValue utilise cette interface personnalisée pour prendre en charge la modification des données. La méthode recherche l'interface personnalisée sur l'interface d' IDebugProperty2 passée comme argument d' pDebugProperty .

Prendre en charge les visualiseurs de type et des visionneuses personnalisées

L'évaluateur d'expression peut prendre en charge les visualiseurs de type et des visionneuses personnalisées dans les méthodes d' IDebugProperty3 : : GetCustomViewerCount et d' IDebugProperty3 : : GetCustomViewerList . Tout d'abord, l'évaluateur d'expression ajoute le nombre de visionneuses personnalisées qu'il fournit à la valeur retournée par la méthode d' IEEVisualizerService : : GetCustomViewerCount . Ensuite, l'évaluateur d'expression ajoute CLSIDs de ses propres visionneuses personnalisées à la liste retournée par la méthode d' IEEVisualizerService : : GetCustomViewerList .

Voir aussi

Concepts

tâches de débogage

Visualiseur de type et visionneuse de personnalisé