Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Untuk gambaran umum peran objek klien dalam berinteraksi dengan mesin debugger, lihat Objek Klien.
Secara umum, metode klien hanya dapat dipanggil dari utas tempat klien dibuat. Biasanya, metode yang dipanggil dari utas yang salah akan segera gagal. Pengecualian penting untuk aturan ini adalah metode CreateClient; metode ini dapat dipanggil dari utas apa pun, dan mengembalikan klien baru yang dapat digunakan dalam utas tempatnya dipanggil. Pengecualian lain didokumenkan di bagian referensi.
String yang menjelaskan objek klien dikembalikan oleh metode GetIdentity atau dapat ditulis ke aliran output mesin menggunakan OutputIdentity.
Antarmuka COM
API mesin debugger berisi beberapa antarmuka COM seperti; mereka mengimplementasikan antarmuka IUnknown .
Antarmuka yang dijelaskan di bagian Antarmuka Mesin Debug diimplementasikan oleh klien (meskipun belum tentu pada versi terbaru). Anda dapat menggunakan metode COM IUnknown::QueryInterface untuk mendapatkan masing-masing antarmuka ini dari yang lain.
Klien mengimplementasikan antarmuka COM IUnknown dan menggunakannya untuk mempertahankan jumlah referensi dan pemilihan antarmuka. Namun, klien bukan objek COM terdaftar. Metode IUnknown::AddRef digunakan untuk menambah jumlah referensi pada objek, dan metode IUnknown::Release digunakan untuk mengurangi jumlah referensi. Ketika IUnknown::QueryInterface dipanggil, jumlah referensi bertambah, jadi ketika pointer antarmuka klien tidak lagi diperlukan IUnknown::Release harus dipanggil untuk mengurangi jumlah referensi.
Jumlah referensi akan diinisialisasi ke satu ketika objek klien dibuat menggunakan DebugCreate atau DebugConnect.
Lihat Platform SDK untuk informasi selengkapnya tentang kapan jumlah referensi harus bertambah dan berkurang.
IUnknown::QueryInterface, DebugCreate, dan DebugConnect masing-masing mengambil ID antarmuka sebagai salah satu argumennya. ID antarmuka ini dapat diperoleh menggunakan operator __uuidof . Contohnya:
IDebugClient * debugClient;
HRESULT Hr = DebugCreate( __uuidof(IDebugClient), (void **)&debugClient );
Penting Antarmuka IDebug* seperti antarmuka IDebugEventCallbacks, meskipun mirip dengan COM, bukan API COM yang tepat. Memanggil antarmuka ini dari kode terkelola adalah skenario yang tidak didukung. Masalah seperti pengumpulan sampah dan kepemilikan utas, memicu ketidakstabilan sistem ketika antarmuka dipanggil dengan kode yang dikelola.