可视化的和查看的数据

键入可视化工具和自定义浏览器当前数据使用快速是对开发人员的方法。 表达式计算器 (EE)可以支持第三方类型可视化工具以及提供自己的自定义浏览器。

Visual Studio 多少类型可视化工具和自定义浏览器与目标类型通过调用 IDebugProperty3:: GetCustomViewerCount 方法。 如果具有类型的可视化工具或提供至少自定义的浏览器, Visual Studio 会调用 IDebugProperty3:: GetCustomViewerList 方法检索这些可视化工具和浏览器列表 (实际上, CLSID实现可视化工具和浏览器) 的列表并将它们提供给用户。

支持类型可视化工具

具有 EE 必须实现支持类型可视化工具的接口。 这些接口可以分解为两大类:列出该类型可视化工具以及访问属性的数据进行一些。

列表类型可视化工具

EE 支持列表在其 IDebugProperty3::GetCustomViewerCountIDebugProperty3::GetCustomViewerList的实现的类型可视化工具。 这些方法通过调用相应的方法 IEEVisualizerService:: GetCustomViewerCountIEEVisualizerService:: GetCustomViewerList

IEEVisualizerService 通过调用 IEEVisualizerServiceProvider:: CreateVisualizerService获取。 此方法要求 IDebugBinder3 接口,从 IDebugBinder 接口来获得传递给 IDebugParsedExpression:: EvaluateSyncIEEVisualizerServiceProvider::CreateVisualizerService 还需要传递给 IDebugParsedExpression::EvaluateSyncIDebugSymbolProviderIDebugAddress 接口。 所需的最终接口创建 IEEVisualizerService 接口是 IEEVisualizerDataProvider 接口, EE 实现。 此接口允许更改对可视化的属性。 所有属性数据在 IDebugObject 接口封装,由 EE 还实现。

访问数据的属性

访问数据的属性通过 IPropertyProxyEESide 接口完成。 若要获取此接口, Visual Studio 缩放在属性获取对象的 QueryInterfaceIPropertyProxyProvider 接口 (实现在同一对象实现 IDebugProperty3 接口) 然后调用 IPropertyProxyProvider:: GetPropertyProxy 方法获取 IPropertyProxyEESide 接口。

所有数据传递到和在 IPropertyProxyEESide 接口之外在 IEEDataStorage 接口中封装。 此接口表示字节并由 Visual Studio et-ee 实现。 当将更改时特性的数据, Visual Studio 创建包含新数据的一 IEEDataStorage 对象并调用与的 IPropertyProxyEESide:: CreateReplacementObject 数据对象以获取,因此,传递给 IPropertyProxyEESide:: InPlaceUpdateObject 更新属性的数据的新 IEEDataStorage 对象。 IPropertyProxyEESide::CreateReplacementObject 允许 EE 实例化实现接口 IEEDataStorage 自己的类。

支持自定义浏览器

标志 DBG_ATTRIB_VALUE_CUSTOM_VIEWER 在 dwAttrib 设置 DEBUG_PROPERTY_INFO 结构字段 (返回调用 IDebugProperty2:: GetPropertyInfo) 指示对象具有自定义浏览器与它。 在此标志设置为时,使用 QueryInterface, Visual Studio 从 IDebugProperty2 接口的 IDebugProperty3 接口。

如果用户选择自定义浏览器, Visual Studio 将实例化自定义浏览器使用 IDebugProperty3::GetCustomViewerList 方法提供的浏览器的 CLSID 。 Visual Studio 然后调用 IDebugCustomViewer:: DisplayValue 显示值给用户。

通常, IDebugCustomViewer::DisplayValue 显示数据的只读视图。 若要允许对数据所做的更改, EE 必须实现支持有关属性对象的更改数据的自定义接口。 IDebugCustomViewer::DisplayValue 方法使用此自定义接口支持更改数据。 方法查找在 pDebugProperty 作为参数传递给方法的 IDebugProperty2 接口的自定义接口。

支持类型可视化工具和自定义浏览器

EE 可以支持类型可视化工具和在 IDebugProperty3:: GetCustomViewerCountIDebugProperty3:: GetCustomViewerList 方法的自定义浏览器。 首先, EE 将它提供给 IEEVisualizerService:: GetCustomViewerCount 方法返回的值自定义浏览器的数目。 接下来, EE 追加 CLSID自己的自定义浏览器保存到 IEEVisualizerService:: GetCustomViewerList 方法返回的列表。

请参见

概念

调试任务

键入可视化工具和自定义浏览器