Metode IModelObject::SetContextForDataModel (dbgmodel.h)

Metode SetContextForDataModel digunakan oleh implementasi model data untuk menempatkan data implementasi pada objek instans. Secara konseptual, setiap IModelObject (sebut ini instans untuk kesederhanaan) berisi tabel hash status. Tabel hash diindeks oleh IModelObject lain (panggil ini model data untuk kesederhanaan) yang ada dalam hierarki model induk instans. Nilai yang terkandung dalam hash ini adalah sekumpulan referensi yang dihitung informasi status yang diwakili oleh instans IUnknown. Setelah model data menetapkan status ini pada instans, model dapat menyimpan data implementasi arbitrer yang dapat diambil selama hal-hal seperti getter properti.

Sering kali ekstensi (atau komponen model data lainnya) ingin mewakili beberapa konstruksi sintetis seperti apa yang mungkin dipertimbangkan oleh seseorang. Pengeksposan debugger objek proses adalah salah satu contohnya. Sering kali, implementasi akan memetakan gagasan definisi jenis ke model data. Model data akan berisi getter properti untuk hal-hal yang terekspos pada objek (misalnya: nama proses, id proses, jumlah utas, utas, dll...). Ketika saatnya untuk membuat instans model data ini, objek sintetis kosong dibuat dan model data (atau apa yang mungkin kita anggap definisi jenis) dilampirkan sebagai model induk. Dalam beberapa kasus, informasi yang cukup untuk mengidentifikasi objek secara unik dan mengimplementasikan semua pencari properti model data mungkin dapat ditempatkan langsung pada objek instans. Dalam contoh proses kami, id proses mungkin disimpan sebagai kunci bernama Id pada instans. Ketika getter pada model data dipanggil, misalnya untuk nama proses, misalnya, implementasi cukup memanggil metode GetKeyValue untuk mengambil Id proses. Implementasi yang diperlukan untuk mengembalikan nama kemudian dapat melakukannya dari PID. Dalam kasus lain, status yang diperlukan untuk mengimplementasikan jenis ini lebih kompleks, berisi konstruksi asli lainnya, atau karena alasan lain tidak dapat ditetapkan sebagai kunci instans. Dalam kasus seperti itu, model data akan membangun kelas turunan IUnknown, menempatkan data implementasi dalam kelas ini, dan memanggil metode SetContextForDataModel pada instans untuk mengaitkan data implementasinya dengan objek instans. Ketika instans dimatikan, jumlah referensi pada kelas status akan dirilis dan akan dibebaskan sesuai kebutuhan

Sintaks

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

Parameter

dataModelObject

IModelObject yang mewakili model data yang statusnya disimpan pada objek instans. Ini, berlaku, kunci hash ke objek status terkait.

context

Status yang dikaitkan dengan instans. Arti pasti dari ini (dan antarmuka lainnya, dll... yang didukungnya) terserah model data yang melakukan panggilan untuk mengatur status ini. Satu-satunya persyaratan adalah bahwa status tersebut adalah referensi COM dihitung.

Menampilkan nilai

Metode ini mengembalikan HRESULT yang menunjukkan keberhasilan atau kegagalan.

Keterangan

Sampel Kode

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.
}

Persyaratan

Persyaratan Nilai
Header dbgmodel.h

Lihat juga

Antarmuka IModelObject