Metode IAudioClient::GetService (audioclient.h)

Metode GetService mengakses layanan tambahan dari objek klien audio.

Sintaks

HRESULT GetService(
  [in]  REFIID riid,
  [out] void   **ppv
);

Parameter

[in] riid

ID antarmuka untuk layanan yang diminta. Klien harus mengatur parameter ini ke salah satu nilai REFIID berikut:

IID_IAudioCaptureClient

IID_IAudioClientDuckingControl

IID_IAudioClock

IID_IAudioRenderClient

IID_IAudioSessionControl

IID_IAudioStreamVolume

IID_IChannelAudioVolume

IID_IMFTrustedOutput

IID_ISimpleAudioVolume

Untuk informasi selengkapnya, lihat Keterangan.

[out] ppv

Pointer ke variabel pointer tempat metode menulis alamat instans antarmuka yang diminta. Melalui metode ini, penelepon mendapatkan referensi yang dihitung ke antarmuka. Pemanggil bertanggung jawab untuk merilis antarmuka, ketika tidak lagi diperlukan, dengan memanggil metode Rilis antarmuka. Jika panggilan GetService gagal, *ppv adalah NULL.

Nilai kembali

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

Menampilkan kode Deskripsi
E_POINTER
Parameter ppv adalah NULL.
E_NOINTERFACE
Antarmuka yang diminta tidak tersedia.
AUDCLNT_E_NOT_INITIALIZED
Aliran audio belum diinisialisasi.
AUDCLNT_E_WRONG_ENDPOINT_TYPE
Pemanggil mencoba mengakses antarmuka IAudioCaptureClient pada titik akhir penyajian, atau antarmuka IAudioRenderClient pada titik akhir pengambilan.
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 dibuat tidak tersedia untuk digunakan.
AUDCLNT_E_SERVICE_NOT_RUNNING
Layanan audio Windows tidak berjalan.

Keterangan

Metode ini memerlukan inisialisasi sebelumnya dari antarmuka IAudioClient . Semua panggilan ke metode ini akan gagal dengan kesalahan AUDCLNT_E_NOT_INITIALIZED sampai klien menginisialisasi aliran audio dengan berhasil memanggil metode IAudioClient::Initialize .

Metode GetService mendukung antarmuka layanan berikut:

Di Windows 7, pengidentifikasi layanan baru, IID_IMFTrustedOutput, telah ditambahkan yang memfasilitasi penggunaan objek otoritas kepercayaan output (OTA). Objek-objek ini dapat beroperasi di dalam atau di luar jalur media yang dilindungi Media Foundation (PMP) dan mengirim konten di luar alur Media Foundation. Jika penelepon berada di luar PMP, maka OTA mungkin tidak beroperasi di PMP, dan pengaturan perlindungan kurang kuat. OTAs harus mengimplementasikan antarmuka IMFTrustedOutput . Dengan meneruskan IID_IMFTrustedOutput di GetService, aplikasi dapat mengambil pointer ke antarmuka IMFTrustedOutput objek. Untuk informasi selengkapnya tentang objek yang dilindungi dan IMFTrustedOutput, lihat "Jalur Media Terproteksi" dalam dokumentasi Media Foundation SDK.

Untuk informasi tentang menggunakan driver audio tepercaya dalam OTAs, lihat Audio Mode Pengguna Terlindungi (PUMA).

Perhatikan bahwa mengaktifkan IMFTrustedOutput melalui mekanisme ini berfungsi terlepas dari apakah pemanggil berjalan di PMP. Namun, jika penelepon tidak berjalan dalam proses yang dilindungi (artinya, pemanggil tidak berada dalam PMP Media Foundation) maka OTA audio mungkin tidak beroperasi di PMP dan pengaturan perlindungan kurang kuat.

Untuk mendapatkan ID antarmuka untuk antarmuka layanan, gunakan operator __uuidof . Misalnya, ID antarmuka IAudioCaptureClient didefinisikan sebagai berikut:


const IID IID_IAudioCaptureClient  __uuidof(IAudioCaptureClient)

Untuk informasi tentang operator __uuidof , lihat dokumentasi Windows SDK.

Untuk merilis objek IAudioClient dan membebaskan semua sumber daya terkait, klien harus merilis semua referensi ke objek layanan apa pun yang dibuat dengan memanggil GetService, selain memanggil Rilis pada antarmuka IAudioClient itu sendiri. Klien harus merilis layanan dari utas yang sama yang merilis objek IAudioClient .

Antarmuka IAudioSessionControl, IAudioStreamVolume, IChannelAudioVolume, dan ISimpleAudioVolume mengontrol dan memantau aspek sesi audio dan aliran mode bersama. Antarmuka ini tidak berfungsi dengan aliran mode eksklusif.

Untuk contoh kode yang memanggil metode GetService , lihat topik berikut:

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 audioclient.h

Lihat juga

Antarmuka IAudioCaptureClient

Antarmuka IAudioClient

IAudioClient::Initialize

Antarmuka IAudioClock

Antarmuka IAudioRenderClient

Antarmuka IAudioSessionControl

Antarmuka IAudioStreamVolume

Antarmuka IChannelAudioVolume

Antarmuka ISimpleAudioVolume