次の方法で共有


データの視覚化と表示

型ビジュアライザーとカスタム ビューアーは、開発者にとってすぐに意味のある方法でデータを表示します。 式エバリュエーター (EE) は、サードパーティの型ビジュアライザーをサポートするだけでなく、独自のカスタム ビューアーを提供することもできます。

Visual Studio は、 GetCustomViewerCount メソッドを呼び出すことによって、オブジェクトの型に関連付けられている型ビジュアライザーとカスタム ビューアーの数を決定します。 使用可能な型ビジュアライザーまたはカスタム ビューアーが少なくとも 1 つある場合、Visual Studio は GetCustomViewerList メソッドを呼び出して、それらのビジュアライザーとビューアーの一覧 (実際には、ビジュアライザーとビューアーを実装するリスト) を取得し、ユーザーに表示します。

型ビジュアライザーのサポート

型ビジュアライザーをサポートするために EE が実装する必要があるインターフェイスは多数あります。 これらのインターフェイスは、型ビジュアライザーを一覧表示するインターフェイスと、プロパティ データにアクセスするインターフェイスという 2 つの大まかなカテゴリに分類できます。

型ビジュアライザーの一覧表示

EE では、 IDebugProperty3::GetCustomViewerCountIDebugProperty3::GetCustomViewerListの実装における型ビジュアライザーの一覧表示がサポートされています。 これらのメソッドは、対応するメソッド GetCustomViewerCountGetCustomViewerList への呼び出しを渡します。

IEEVisualizerService は、CreateVisualizerService を呼び出すことによって取得されます。 このメソッドには、EvaluateSync に渡される IDebugBinder インターフェイスから取得される IDebugBinder3 インターフェイスが必要です。 IEEVisualizerServiceProvider::CreateVisualizerServiceには、に渡された IDebugSymbolProvider インターフェイスと IDebugParsedExpression::EvaluateSync インターフェイスも必要です。 IEEVisualizerService インターフェイスを作成するために必要な最後のインターフェイスは、EE が実装する IEEVisualizerDataProvider インターフェイスです。 このインターフェイスを使用すると、視覚化するプロパティに対する変更を行えます。 すべてのプロパティ データは、EE によって実装される IDebugObject インターフェイスにカプセル化されます。

プロパティ データへのアクセス

プロパティ データへのアクセスは、 IPropertyProxyEESide インターフェイスを介して行われます。 このインターフェイスを取得するために、Visual Studio はプロパティ オブジェクトの QueryInterface を呼び出して IPropertyProxyProvider インターフェイス ( IDebugProperty3 インターフェイスを実装する同じオブジェクトに実装) を取得し、 GetPropertyProxy メソッドを呼び出して IPropertyProxyEESide インターフェイスを取得します。

IPropertyProxyEESide インターフェイスとの間で送受信されるすべてのデータは、IEEDataStorage インターフェイスにカプセル化されます。 このインターフェイスはバイト配列を表し、Visual Studio と EE の両方によって実装されます。 プロパティのデータを変更する場合、Visual Studio は新しいデータを保持する IEEDataStorage オブジェクトを作成し、そのデータ オブジェクトを使用して CreateReplacementObject を呼び出して、新しい IEEDataStorage オブジェクトを取得します。このオブジェクトは、プロパティのデータを更新するために InPlaceUpdateObject に渡されます。 IPropertyProxyEESide::CreateReplacementObject を使用すると、EE は、 IEEDataStorage インターフェイスを実装する独自のクラスをインスタンス化できます。

カスタム ビューアーのサポート

DBG_ATTRIB_VALUE_CUSTOM_VIEWERフラグは、オブジェクトにカスタム ビューアーが関連付けられていることを示すために、DEBUG_PROPERTY_INFO構造体のdwAttrib フィールド (GetPropertyInfo の呼び出しによって返されます) に設定されます。 このフラグが設定されると、Visual Studio は QueryInterface を使用して IDebugProperty2 インターフェイスから IDebugProperty3 インターフェイスを取得します。

ユーザーがカスタム ビューアーを選択した場合、Visual Studio は、CLSID メソッドによって提供されるビューアーのIDebugProperty3::GetCustomViewerListを使用してカスタム ビューアーをインスタンス化します。 その後、Visual Studio によって DisplayValue が呼び出され、ユーザーに値が表示されます。

通常、 IDebugCustomViewer::DisplayValue はデータの読み取り専用ビューを表示します。 データの変更を許可するには、EE がプロパティ オブジェクトのデータの変更をサポートするカスタム インターフェイスを実装する必要があります。 IDebugCustomViewer::DisplayValueメソッドは、このカスタム インターフェイスを使用してデータの変更をサポートします。 このメソッドは、IDebugProperty2引数として渡されたpDebugProperty インターフェイスのカスタム インターフェイスを検索します。

型ビジュアライザーとカスタム ビューアーの両方のサポート

EE は、 GetCustomViewerCount メソッドと GetCustomViewerList メソッドで、型ビジュアライザーとカスタム ビューアー 両方をサポートできます。 最初に、EE は 、GetCustomViewerCount メソッドによって返される値に、それが提供するカスタム ビューアーの数を追加します。 次に、EE は、独自のカスタム ビューアーの CLSID、GetCustomViewerList メソッドによって返されるリストに追加します。