Visualisation et l’affichage des donnéesVisualizing and Viewing Data

Visualiseurs de types et les visionneuses personnalisées présentent les données de façon significative rapidement à un développeur.Type visualizers and custom viewers present data in a way that is quickly meaningful to a developer. L’évaluateur d’expression (EE) peut prendre en charge les visualiseurs de types de tiers ainsi que fournir ses propres visionneuses personnalisées.The expression evaluator (EE) can support third-party type visualizers as well as supply its own custom viewers.

Visual StudioVisual Studio Détermine le nombre de visualiseurs de types et les visionneuses personnalisées sont associées avec le type d’objet en appelant le GetCustomViewerCount (méthode). determines how many type visualizers and custom viewers are associated with the object's type by calling the GetCustomViewerCount method. Si le visualiseur d’au moins un type ou la visionneuse personnalisée est disponible, Visual Studio appelle le GetCustomViewerList méthode pour récupérer une liste de ces visualiseurs et les visionneuses (en fait, une liste de CLSIDs qui implémentent le les visualiseurs et les visionneuses) et les affiche à l’utilisateur.If there is at least one type visualizer or custom viewer available, Visual Studio calls the GetCustomViewerList method to retrieve a list of those visualizers and viewers (actually, a list of CLSIDs that implement the visualizers and viewers) and presents them to the user.

Prise en charge les visualiseurs de typesSupporting Type Visualizers

Il existe un nombre d’interfaces qui le EE doit implémenter pour prendre en charge les visualiseurs de types.There are a number of interfaces that the EE must implement to support type visualizers. Ces interfaces peuvent être décomposées en deux grandes catégories : ceux qui liste les visualiseurs de types et ceux qui accèdent aux données de la propriété.These interfaces can be broken down into two broad categories: those that list the type visualizers and those that access the property data.

Visualiseurs de types de listeListing Type Visualizers

Prend en charge de la EE répertoriant les visualiseurs de types dans son implémentation de IDebugProperty3::GetCustomViewerCount et IDebugProperty3::GetCustomViewerList.The EE supports listing the type visualizers in its implementation of IDebugProperty3::GetCustomViewerCount and IDebugProperty3::GetCustomViewerList. Ces méthodes passent l’appel aux méthodes correspondantes GetCustomViewerCount et GetCustomViewerList.These methods pass the call to the corresponding methods GetCustomViewerCount and GetCustomViewerList.

Le IEEVisualizerService est obtenu en appelant CreateVisualizerService.The IEEVisualizerService is obtained by calling CreateVisualizerService. Cette méthode requiert le IDebugBinder3 interface, qui est obtenue à partir de la IDebugBinder interface passé à EvaluateSync.This method requires the IDebugBinder3 interface, which is obtained from the IDebugBinder interface passed to EvaluateSync. IEEVisualizerServiceProvider::CreateVisualizerService requiert également le IDebugSymbolProvider et IDebugAddress les interfaces qui ont été passés à IDebugParsedExpression::EvaluateSync.IEEVisualizerServiceProvider::CreateVisualizerService also requires the IDebugSymbolProvider and IDebugAddress interfaces which were passed to IDebugParsedExpression::EvaluateSync. L’interface final requise pour créer le IEEVisualizerService interface est le IEEVisualizerDataProvider interface, ce qui met en œuvre le Java EE.The final interface required to create the IEEVisualizerService interface is the IEEVisualizerDataProvider interface, which the EE implements. Cette interface permet des modifications à apporter à la propriété qui est visualisée.This interface allows changes to be made to the property being visualized. Toutes les données de propriété est encapsulé dans un IDebugObject interface, qui est également implémentée par le Java EE.All property data is encapsulated in an IDebugObject interface, which is also implemented by the EE.

L’accès aux données de propriétéAccessing Property Data

L’accès aux données de la propriété est effectuée via le IPropertyProxyEESide interface.Accessing property data is done through the IPropertyProxyEESide interface. Pour obtenir cette interface, Visual Studio appelle QueryInterface sur l’objet de propriété à obtenir le IPropertyProxyProvider interface (implémentée sur le même objet qui implémente le IDebugProperty3 interface), puis appelle la GetPropertyProxy méthode pour obtenir le IPropertyProxyEESide interface.To obtain this interface, Visual Studio calls QueryInterface on the property object to get the IPropertyProxyProvider interface (implemented on the same object that implements the IDebugProperty3 interface) and then calls the GetPropertyProxy method to obtain the IPropertyProxyEESide interface.

Toutes les données passées dans et hors de la IPropertyProxyEESide interface est encapsulé dans le IEEDataStorage interface.All data passed into and out of the IPropertyProxyEESide interface is encapsulated in the IEEDataStorage interface. Cette interface représente un tableau d’octets et est implémentée par Visual Studio et le Java EE.This interface represents an array of bytes and is implemented by both Visual Studio and the EE. Lorsque les données d’une propriété doit être modifiée, Visual Studio crée un IEEDataStorage objet contenant les nouvelles données et les appels CreateReplacementObject avec cet objet de données afin d’obtenir un nouveau IEEDataStorage objet qui, à son tour, est passé à InPlaceUpdateObject pour mettre à jour les données de la propriété.When a property's data is to be changed, Visual Studio creates an IEEDataStorage object holding the new data and calls CreateReplacementObject with that data object in order to obtain a new IEEDataStorage object that, in turn, is passed to InPlaceUpdateObject to update the property's data. IPropertyProxyEESide::CreateReplacementObject permet la EE d’instancier sa propre classe qui implémente le IEEDataStorage interface.IPropertyProxyEESide::CreateReplacementObject allows the EE to instantiate its own class that implements the IEEDataStorage interface.

Prise en charge des visionneuses personnaliséesSupporting Custom Viewers

L’indicateur DBG_ATTRIB_VALUE_CUSTOM_VIEWER est défini dans le dwAttrib champ le DEBUG_PROPERTY_INFO structure (retourné par un appel à GetPropertyInfo) pour indiquer que l’objet a une visionneuse personnalisée associée avec elle.The flag DBG_ATTRIB_VALUE_CUSTOM_VIEWER is set in the dwAttrib field of the DEBUG_PROPERTY_INFO structure (returned by a call to GetPropertyInfo) to indicate that the object has a custom viewer associated with it. Lorsque cet indicateur est défini, Visual Studio obtient les IDebugProperty3 de l’interface à partir de la IDebugProperty2 à l’aide de l’interface QueryInterface.When this flag is set, Visual Studio obtains the IDebugProperty3 interface from the IDebugProperty2 interface using QueryInterface.

Si l’utilisateur sélectionne une visionneuse personnalisée, Visual Studio instancie la visionneuse personnalisée à l’aide de la visionneuse CLSID fourni par le IDebugProperty3::GetCustomViewerList (méthode).If the user selects a custom viewer, Visual Studio instantiates the custom viewer using the viewer's CLSID supplied by the IDebugProperty3::GetCustomViewerList method. Visual Studio appelle ensuite une valeur d’affichage pour afficher la valeur à l’utilisateur.Visual Studio then calls DisplayValue to show the value to the user.

Normalement, IDebugCustomViewer::DisplayValue présente une vue en lecture seule des données.Normally, IDebugCustomViewer::DisplayValue presents a read-only view of the data. Pour autoriser les modifications apportées aux données, le EE doit implémenter une interface personnalisée qui prend en charge les données de modification sur un objet de propriété.To allow changes to the data, the EE must implement a custom interface that supports changing data on a property object. Le IDebugCustomViewer::DisplayValue méthode utilise cette interface personnalisée pour prendre en charge la modification des données.The IDebugCustomViewer::DisplayValue method uses this custom interface to support changing the data. La méthode recherche l’interface personnalisée le IDebugProperty2 interface transmis en tant que le pDebugProperty argument.The method looks for the custom interface on the IDebugProperty2 interface passed in as the pDebugProperty argument.

Prise en charge de Type visualiseurs et les visionneuses personnaliséesSupporting Both Type Visualizers and Custom Viewers

Un EE peut prendre en charge les visualiseurs de types et des visionneuses personnalisées dans le GetCustomViewerCount et GetCustomViewerList méthodes.An EE can support both type visualizers and custom viewers in the GetCustomViewerCount and GetCustomViewerList methods. Tout d’abord, le EE ajoute le nombre de visionneuses personnalisées, il fournit à la valeur retournée par la GetCustomViewerCount (méthode).First, the EE adds the number of custom viewers that it is supplying to the value returned by the GetCustomViewerCount method. En second lieu, le EE ajoute le CLSIDs de ses propres visionneuses personnalisées pour la liste retournée par la GetCustomViewerList (méthode).Second, the EE appends the CLSIDs of its own custom viewers to the list returned by the GetCustomViewerList method.

Voir aussiSee Also

Tâches de débogage Debugging Tasks
Visualiseur de type et visionneuse personnaliséeType Visualizer and Custom Viewer