視覺化及檢視資料
如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件。
類型的視覺化檢視和自訂檢視器中的開發人員快速有意義的方式呈現的資料。 運算式評估工具 (EE) 可以支援協力廠商類型的視覺化檢視,以及提供它自己的自訂檢視器。
Visual Studio判斷類型的視覺化檢視和自訂檢視器的數目與類型相關聯的物件藉由呼叫GetCustomViewerCount方法。 如果沒有至少一種類型的視覺化檢視或自訂檢視器可用,Visual Studio 會呼叫GetCustomViewerList方法來擷取這些視覺化檢視和檢視器的清單 (事實上,一份CLSID
之實作的視覺化檢視和檢視器) 並呈現給使用者。
支援的型別視覺化檢視
有好幾個 EE 必須實作以支援類型的視覺化檢視的介面。 這些介面可以分成兩大類︰ 這些類型的視覺化檢視和存取屬性資料清單。
清單類型的視覺化檢視
列出在實作這些型別視覺化檢視的 EE 支援IDebugProperty3::GetCustomViewerCount
和IDebugProperty3::GetCustomViewerList
。 這些方法都會傳遞至對應的方法呼叫GetCustomViewerCount和GetCustomViewerList。
IEEVisualizerService可以呼叫CreateVisualizerService。 此方法需要IDebugBinder3介面,取自IDebugBinder介面傳遞至EvaluateSync。 IEEVisualizerServiceProvider::CreateVisualizerService
也需要IDebugSymbolProvider和IDebugAddress介面傳遞給IDebugParsedExpression::EvaluateSync
。 若要建立所需的最後一個介面IEEVisualizerService
介面是IEEVisualizerDataProvider EE 實作的介面。 這個介面允許所視覺化的屬性進行變更。 所有屬性資料都封裝在IDebugObject EE 也實作的介面。
存取屬性的資料
存取屬性資料透過IPropertyProxyEESide介面。 若要取得此介面,Visual Studio 會呼叫QueryInterface要取得的屬性物件上IPropertyProxyProvider介面 (實作的相同物件上實作IDebugProperty3介面),然後呼叫GetPropertyProxy方法,以取得IPropertyProxyEESide
介面。
所有的資料傳遞傳入與傳出IPropertyProxyEESide
介面會封裝在IEEDataStorage介面。 此介面會表示為位元組陣列,而且由 Visual Studio 和 EE 實作。 屬性的資料變更時,Visual Studio 會建立IEEDataStorage
物件保存新資料並呼叫CreateReplacementObject與該資料物件,以取得新IEEDataStorage
物件,反而會傳遞至InPlaceUpdateObject更新屬性的資料。 IPropertyProxyEESide::CreateReplacementObject
可讓自己實作的類別具現化 EEIEEDataStorage
介面。
支援的自訂檢視器
旗標DBG_ATTRIB_VALUE_CUSTOM_VIEWER
中設定dwAttrib
欄位DEBUG_PROPERTY_INFO結構 (呼叫所傳回的GetPropertyInfo) 來表示此物件具有與其相關聯的自訂檢視器。 當設定這個旗標時,會取得 Visual Studio IDebugProperty3介面從IDebugProperty2介面使用QueryInterface。
如果使用者選取自訂檢視器時,Visual Studio 會具現化使用檢視器的自訂檢視器CLSID
所提供的IDebugProperty3::GetCustomViewerList
方法。 Visual Studio 接著會呼叫DisplayValue向使用者顯示的值。
一般來說,IDebugCustomViewer::DisplayValue
呈現資料的唯讀檢視。 若要讓資料的變更,EE 必須實作自訂介面屬性物件上支援變更的資料。 IDebugCustomViewer::DisplayValue
方法會使用此自訂介面來支援變更的資料。 方法會尋找自訂介面IDebugProperty2
介面當做傳入pDebugProperty
引數。
同時支援輸入視覺化檢視和自訂檢視器
類型的視覺化檢視和自訂檢視器中的,可支援 EE GetCustomViewerCount和GetCustomViewerList方法。 首先,EE 將加上數在提供的自訂檢視器所傳回的值GetCustomViewerCount方法。 第二,EE 附加CLSID
自己自訂的檢視所傳回的清單進行之GetCustomViewerList方法。