共用方式為


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 介面