Konvensi Reference-Counting untuk Objek COM

Metode dalam antarmuka audio mengikuti serangkaian aturan umum untuk menghitung referensi pada objek COM yang mereka ambil sebagai parameter input atau kembali sebagai parameter output. Aturan ini, dan pengecualiannya, dirangkum di bawah ini. Untuk informasi selengkapnya tentang antarmuka COM, lihat bagian COM dari dokumentasi Microsoft Windows SDK.

Penghitungan Referensi pada Parameter Input

Saat memanggil metode yang mengambil referensi ke objek X sebagai parameter input, pemanggil harus memegang referensinya sendiri pada objek selama panggilan. Perilaku ini diperlukan untuk memastikan bahwa penunjuk metode ke objek X tetap valid sampai kembali. Jika objek Y yang mengimplementasikan metode ini perlu menyimpan referensi ke objek X di luar pengembalian dari metode ini, metode harus memanggil AddRef pada objek X sebelum kembali. Ketika objek Y nanti selesai menggunakan objek X, objek harus memanggil Rilis pada objek X.

Misalnya, metode IServiceGroup::AddMember memanggil AddRef pada objek IServiceSink yang ditambahkannya ke grup layanannya. Untuk melengkapi perilaku ini, metode IServiceGroup::RemoveMember memanggil Rilis pada objek IServiceSink yang dihapusnya dari grup layanan.

Penghitungan Referensi pada Parameter Output

Metode yang meneruskan referensi objek ke pemanggil melalui parameter output harus memanggil AddRef pada objek sebelum kembali (atau sebelum merilis referensinya sendiri ke objek). Perilaku ini diperlukan untuk memastikan bahwa pemanggil memegang referensi yang valid saat kembali dari panggilan. Pemanggil bertanggung jawab untuk memanggil Rilis pada objek setelah selesai menggunakannya.

Misalnya, metode IMiniportWaveCyclic::NewStream memanggil AddRef pada aliran, grup layanan, dan objek saluran DMA yang dihasilkannya ke pemanggil (driver port WaveCyclic). Pemanggil bertanggung jawab untuk merilis referensi ini ketika tidak lagi membutuhkannya. Untuk implementasi metode IMiniportWaveCyclic::NewStream yang menunjukkan perilaku ini, lihat adaptor sampel Sb16 di versi Microsoft Windows Driver Kit (WDK) sebelumnya.

Pengecualian untuk Aturan

Untuk deskripsi referensi tidak konvensional yang menghitung bahwa metode ini dilakukan pada parameter output DmaChannel-nya , lihat IMiniportWavePci::NewStream.