Bagikan melalui


IAudioSessionControl::RegisterAudioSessionNotification method (audiopolicy.h)

Metode RegisterAudioSessionNotification mendaftarkan klien untuk menerima pemberitahuan peristiwa sesi, termasuk perubahan dalam status aliran.

Sintaks

HRESULT RegisterAudioSessionNotification(
  [in] IAudioSessionEvents *NewNotifications
);

Parameter

[in] NewNotifications

Arahkan ke antarmuka IAudioSessionEvents yang diimplementasikan klien. Jika metode berhasil, metode ini memanggil metode AddRef pada antarmuka IAudioSessionEvents klien.

Nilai kembali

Jika metode berhasil, metode akan mengembalikan S_OK. Jika gagal, kemungkinan kode pengembalian disertakan, tetapi tidak terbatas pada, nilai yang diperlihatkan dalam tabel berikut.

Menampilkan kode Deskripsi
E_POINTER
Parameter NewNotifications adalah NULL.
AUDCLNT_E_DEVICE_INVALIDATED
Perangkat titik akhir audio telah dicabut, atau perangkat keras audio atau sumber daya perangkat keras terkait telah dikonfigurasi ulang, dinonaktifkan, dihapus, atau tidak tersedia untuk digunakan.
AUDCLNT_E_SERVICE_NOT_RUNNING
Layanan audio Windows tidak berjalan.

Keterangan

Metode ini meneruskan antarmuka IAudioSessionEvents yang diterapkan klien ke manajer sesi. Mengikuti panggilan yang berhasil ke metode ini, manajer sesi memanggil metode di antarmuka IAudioSessionEvents untuk memberi tahu klien tentang berbagai peristiwa sesi. Melalui metode ini, klien menerima pemberitahuan tentang peristiwa terkait sesi berikut:

  • Perubahan nama tampilan
  • Perubahan tingkat volume
  • Perubahan status sesi (tidak aktif menjadi aktif, atau aktif menjadi tidak aktif)
  • Mengelompokkan perubahan parameter
  • Pemutusan sambungan klien dari sesi (disebabkan oleh pengguna yang menghapus perangkat titik akhir audio, mematikan manajer sesi, atau mengubah format aliran)
Ketika pemberitahuan tidak lagi diperlukan, klien dapat memanggil metode IAudioSessionControl::UnregisterAudioSessionNotification untuk mengakhiri pemberitahuan.

Sebelum klien merilis referensi terakhirnya ke antarmuka IAudioSessionEvents , klien harus memanggil UnregisterAudioSessionNotification untuk membatalkan pendaftaran antarmuka. Jika tidak, aplikasi membocorkan sumber daya yang dipegang oleh objek IAudioSessionEvents dan IAudioSessionControl . Perhatikan bahwa RegisterAudioSessionNotification memanggil metode IAudioSessionEvents::AddRef klien, dan UnregisterAudioSessionNotification memanggil metode IAudioSessionEvents::Release . Jika klien melakukan kesalahan dengan merilis referensinya ke antarmuka IAudioSessionEvents sebelum memanggil UnregisterAudioSessionNotification, manajer sesi tidak pernah merilis referensinya ke antarmuka IAudioSessionEvents . Misalnya, implementasi IAudioSessionEvents yang dirancang dengan buruk mungkin memanggil UnregisterAudioSessionNotification dari destruktor untuk objek IAudioSessionEvents . Dalam hal ini, klien tidak akan memanggil UnregisterAudioSessionNotification sampai manajer sesi merilis referensinya ke antarmuka IAudioSessionEvents , dan manajer sesi tidak akan merilis referensinya ke antarmuka IAudioSessionEvents hingga klien memanggil UnregisterAudioSessionNotification. Untuk informasi selengkapnya tentang metode AddRef dan Rilis , lihat diskusi antarmuka IUnknown dalam dokumentasi Windows SDK.

Selain itu, klien harus memanggil UnregisterAudioSessionNotification sebelum merilis semua referensinya ke objek IAudioSessionControl dan IAudioSessionManager . Kecuali klien mempertahankan referensi ke setidaknya salah satu dari dua objek ini, manajer sesi membocorkan penyimpanan yang dialokasikan untuk menyimpan informasi pendaftaran. Setelah mendaftarkan antarmuka pemberitahuan, klien terus menerima pemberitahuan hanya selama setidaknya satu dari dua objek ini ada.

Untuk contoh kode yang memanggil metode RegisterAudioSessionNotification , lihat Peristiwa Audio untuk Aplikasi Audio Warisan.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header audiopolicy.h

Lihat juga

Antarmuka IAudioSessionControl

IAudioSessionControl::UnregisterAudioSessionNotification

Antarmuka IAudioSessionEvents

IAudioSessionManager