共用方式為


IModelObject::SetContextForDataModel 方法 (dbgmodel.h)

SetContextForDataModel 方法是由數據模型的實作用來將實作數據放在實例物件上。 概念上,每個 IModelObject (呼叫此實例,以便簡單) 包含狀態的哈希表。 哈希表是由另一個 IModelObject 編製索引, (呼叫數據模型,以便簡化) ,該模型位於 實例的父模型階層中。 這個哈希中包含的值是一組由IUnknown 實例表示的參考計數狀態資訊。 一旦數據模型在 實例上設定此狀態,就可以儲存任意實作數據,這些實作數據可以在屬性 getter 等專案期間擷取。

通常,延伸模組 (或其他數據模型元件) 想要代表一些綜合建構,因為其中一個可能考慮的類型。 調試程式的進程對象公開是其中一個範例。 通常,實作會將類型定義的概念對應至數據模型。 資料模型會包含對象上公開之專案的屬性 getter (,例如:行程名稱、進程標識碼、線程計數、線程等等...) 。當建立此數據模型的實例時,會建立空白綜合物件,並將數據模型 (或我們可能會考慮類型定義) 附加為父模型。 在某些情況下,足夠的資訊可以唯一識別物件,並實作所有數據模型的屬性 getter,都可能可以直接放在實例物件上。 在我們的程式範例中,進程標識碼可能會儲存為實例上名為Id的密鑰。 呼叫數據模型上的 getter 時,例如針對進程名稱,例如,實作可以直接呼叫 GetKeyValue 方法來擷取進程標識碼。然後,從 PID 傳回名稱所需的實作即可。 在其他情況下,實作類型所需的狀態較複雜、包含其他原生建構,或其他原因無法設定為實例索引鍵。 在這種情況下,數據模型會建構 IUnknown 衍生類別、將此實作數據放在這個類別內,並在實例上呼叫 SetContextForDataModel 方法,以便將其實作數據與實例對象產生關聯。 當實例解構時,狀態類別上的參考計數將會釋放,並視需要釋放

語法

HRESULT SetContextForDataModel(
  IModelObject *dataModelObject,
  IUnknown     *context
);

參數

dataModelObject

IModelObject,代表儲存在實例對象上狀態的數據模型。 這實際上就是相關聯狀態物件的哈希索引鍵。

context

與實例相關聯的狀態。 此 (和任何其他介面的確切意義...它支援) 是進行呼叫以設定此狀態的數據模型。 唯一的需求是這類狀態是計算 COM 參考。

傳回值

這個方法會傳回 HRESULT,指出成功或失敗。

備註

程式碼範例

ComPtr<IModelObject> spObject;          /* get an object */
ComPtr<IModelObject> spDataModelObject; /* get an attached data model (from earlier
                                           AddParentModel or from GetParentModel) anywhere in 
                                           the ancestor tree */

// Context data must be IUnknown derived.  Otherwise, implementation is opaque to the data model.
class MyContextData :
    public Microsoft::WRL::RuntimeClass<
        Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::RuntimeClassType::ClassicCom>,
        IUnknown
        >
{
    /* put whatever you want here */
};

ComPtr<MyContextData> spContextData = Microsoft::WRL::Make<MyContextData>();
if (SUCCEEDED(spObject->SetContextForDataModel(spDataModelObject.Get(), spContextData.Get())))
{
    // There is now context data associated with spObject (an instance) for 
    // spDataModelObject (a parent model).  This can be fetched via
    // GetContextForDataModel.  Note that spObject and spDataModelObject only need t
    // to be related.  The model does not need to be an immediate parent.
}

規格需求

需求
標頭 dbgmodel.h

另請參閱

IModelObject 介面