IDataModelManager::GetModelForTypeSignature メソッド (dbgmodel.h)

GetModelForTypeSignature メソッドは、RegisterModelForTypeSignature メソッドの前の呼び出しを使用して、特定の型シグネチャに対して登録されたデータ モデルを返します。 このメソッドから返されるデータ モデルは、渡された型シグネチャに一致するすべての型の正規ビジュアライザーと見なされます。 正規のビジュアライザーとして、そのデータ モデルが型の表示を引き継ぎます。 表示エンジンは、既定では、データ モデルによって提示されるオブジェクトのビューを優先して、オブジェクトのネイティブ/言語コンストラクトを非表示にします。

構文

HRESULT GetModelForTypeSignature(
  IDebugHostTypeSignature *typeSignature,
  IModelObject            **dataModel
);

パラメーター

typeSignature

dataModel が正規ビジュアライザーとして登録される型シグネチャ。 シグネチャに一致するネイティブ/言語型 (およびより適切に一致する型シグネチャがない) で作成されたオブジェクトには、返されたデータ モデルが親として自動的にアタッチされます。

dataModel

指定された型シグネチャに一致するすべての型インスタンスの正規ビジュアライザーとして登録されるデータ モデル (およびより適切に一致する型シグネチャがない)。

戻り値

このメソッドは、成功または失敗を示す HRESULT を返します。

注釈

サンプル コード

ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IDebugHost> spHost;           /* get the debug host */

ComPtr<IModelObject> spDataModel;    /* create a data model (see 
                                        CreateDataModelObject) */

ComPtr<IDebugHostSymbols> spSym;
if (SUCCEEDED(spHost.As(&spSym)))
{
    // Create a signature to match MyType<*>
    ComPtr<IDebugHostTypeSignature> spTypeSignature;
    if (SUCCEEDED(spSym->CreateTypeSignature(L"MyType<*>", nullptr, &spTypeSignature)))
    {
        // Register the model for std::vector<*>
        if (SUCCEEDED(spManager->RegisterModelForTypeSignature(spTypeSignature.Get(),
                                                               spDataModel.Get()))
        {
            // Every instance matching MyType<*> will now have spDataModel 
            // attached as the parent.  Further, such parent is considered 
            // the canonical visualizer for all types matching MyType<*> since it 
            // was registered via RegisterModelForTypeSignature instead of
            // RegisterExtensionForTypeSignature.
            //
            // Demonstrate that we can find the canonical visualizer under 
            // this registration.
            ComPtr<IModelObject> spCanonicalVisualizerModel;
            if (SUCCEEDED(spManager->GetModelForTypeSignature(
                spTypeSignature.Get(), 
                &spCanonicalVisualizerModel)))
            {
                // spCanonicalVisualizerModel is the same as spDataModel since 
                // it was registered as such.
            }
        }
    }
}

要件

要件
Header dbgmodel.h

こちらもご覧ください

IDataModelManager インターフェイス