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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk