Share via


IDataModelManager2::RegisterExtensionForTypeSignature 方法 (dbgmodel.h)

RegisterExtensionForTypeSignature 方法類似於 RegisterModelForTypeSignature 方法,但有一個主要差異。 傳遞給這個方法的數據模型不是任何類型的標準可視化檢視,而且不會接管該類型原生/語言檢視的顯示。 傳遞至這個方法的數據模型會自動新增為符合所提供類型簽章之任何具象類型的父系。

不同於 RegisterModelForTypeSignature 方法,將相同或模棱兩可的類型簽章註冊為指定類型 (或一組類型) 沒有限制。 每個類型簽章符合指定具體類型實例的延伸模組,都會讓透過此方法註冊的數據模型自動附加至新建立的物件做為父模型。 實際上,這可讓任意數目的用戶端使用新的欄位或功能來擴充類型 (或一組類型) 。

語法

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

參數

typeSignature

所提供數據模型將註冊為延伸模組的類型簽章。 每個與這個簽章相符的原生/語言對象,都會自動附加指定的數據模型作為父模型。

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->RegisterExtensionForTypeSignature(
            spTypeSignature.Get(), 
            spDataModel.Get())
            )
        {
            // Every instance matching MyType<*> will now have spDataModel 
            // attached as the parent.  This data model is considered an "extension"
            // (adding properties).  It will not be counted as a visualizer and 
            // will not "take over" the display of the type
        }
    }
}

IDataModelManager2 介面

規格需求

需求
標頭 dbgmodel.h