Bagikan melalui


Antarmuka IAudioSessionControl2 (audiopolicy.h)

Antarmuka IAudioSessionControl2 dapat digunakan oleh klien untuk mendapatkan informasi tentang sesi audio.

Untuk mendapatkan referensi ke antarmuka IAudioSessionControl2 , aplikasi harus memanggil IAudioSessionControl::QueryInterface untuk meminta penunjuk antarmuka dari antarmuka IAudioSessionControl objek aliran. Ada dua cara aplikasi bisa mendapatkan penunjuk ke antarmuka IAudioSessionControl :

Ketika aplikasi ingin merilis instans antarmuka IAudioSessionControl2 , aplikasi harus memanggil metode Rilis antarmuka dari utas yang sama dengan panggilan ke IAudioClient::GetService yang membuat objek.

Utas aplikasi yang menggunakan antarmuka ini harus diinisialisasi untuk COM. Untuk informasi selengkapnya tentang inisialisasi COM, lihat deskripsi fungsi CoInitializeEx dalam dokumentasi Windows SDK.

Warisan

Antarmuka IAudioSessionControl2 mewarisi dari IAudioSessionControl. IAudioSessionControl2 juga memiliki jenis anggota ini:

Metode

Antarmuka IAudioSessionControl2 memiliki metode ini.

 
IAudioSessionControl2::GetProcessId

Metode GetProcessId mengambil pengidentifikasi proses sesi audio.
IAudioSessionControl2::GetSessionIdentifier

Metode GetSessionIdentifier mengambil pengidentifikasi sesi audio.
IAudioSessionControl2::GetSessionInstanceIdentifier

Metode GetSessionInstanceIdentifier mengambil pengidentifikasi instans sesi audio.
IAudioSessionControl2::IsSystemSoundsSession

Metode IsSystemSoundsSession menunjukkan apakah sesi tersebut merupakan sesi suara sistem.
IAudioSessionControl2::SetDuckingPreference

Metode SetDuckingPreference memungkinkan atau menonaktifkan pengalaman pelemahan aliran default (auto-ducking) yang disediakan oleh sistem.

Keterangan

Antarmuka ini mendukung implementasi kustom untuk redaman aliran atau bebek, fitur baru di Windows 7. Aplikasi yang memutar aliran media dapat membuatnya bersifat berbeda ketika aliran komunikasi baru dibuka pada perangkat komunikasi default. Misalnya, aliran media asli dapat dijeda saat aliran komunikasi baru terbuka. Untuk informasi selengkapnya tentang fitur ini, lihat Pengalaman Ducking Default.

Aplikasi dapat menggunakan antarmuka ini untuk melakukan tugas-tugas berikut:

  • Tentukan bahwa ia ingin menolak pengalaman redaman aliran default yang disediakan oleh sistem.
  • Dapatkan pengidentifikasi sesi audio yang terkait dengan aliran. Pengidentifikasi diperlukan selama pendaftaran pemberitahuan. Aplikasi dapat mendaftarkan dirinya untuk menerima pemberitahuan bebek dari sistem.
  • Periksa apakah aliran yang terkait dengan sesi audio adalah suara sistem.

Contoh

Contoh kode berikut menunjukkan cara mendapatkan referensi ke antarmuka IAudioSessionControl2 dan memanggil metodenya untuk menentukan apakah aliran yang terkait dengan sesi audio adalah suara sistem.

HRESULT SetDuckingForSystemSounds()
{
 
    HRESULT hr = S_OK;
    
    IMMDevice* pDevice = NULL;
    IMMDeviceEnumerator* pEnumerator = NULL;
    IAudioSessionControl* pSessionControl = NULL;
    IAudioSessionControl2* pSessionControl2 = NULL;
    IAudioSessionManager* pSessionManager = NULL;

    CHECK_HR( hr = CoInitialize(NULL));

    // Create the device enumerator.
    CHECK_HR( hr = CoCreateInstance(
        __uuidof(MMDeviceEnumerator), 
        NULL, CLSCTX_ALL, 
        __uuidof(IMMDeviceEnumerator), 
        (void**)&pEnumerator));

    // Get the default audio device.
    CHECK_HR( hr = pEnumerator->GetDefaultAudioEndpoint(
                    eRender, eConsole, &pDevice));

    // Get the audio client.
    CHECK_HR( hr = pDevice->Activate(
        __uuidof(IID_IAudioSessionManager), CLSCTX_ALL,
        NULL, (void**)&pSessionManager));

    // Get a reference to the session manager.
    CHECK_HR( hr = pSessionManager->GetAudioSessionControl (GUID_NULL, FALSE, &pSessionControl));
    
    // Get the extended session control interface pointer.
    CHECK_HR( hr = pSessionControl->QueryInterface(
        __uuidof(IAudioSessionControl2), (void**) &pSessionControl2));

    // Check whether this is a system sound.
    CHECK_HR( hr = pSessionControl2->IsSystemSoundsSession());

    // If it is a system sound, opt out of the default
    // stream attenuation experience.
    CHECK_HR( hr = pSessionControl2->SetDuckingPreference(TRUE));

done:

    // Clean up.
    SAFE_RELEASE(pSessionControl2);
    SAFE_RELEASE(pSessionControl);
    SAFE_RELEASE(pEnumerator);
    SAFE_RELEASE(pDevice);


    return hr;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 R2 [hanya aplikasi desktop]
Target Platform Windows
Header audiopolicy.h

Lihat juga

Antarmuka Audio Inti

IAudioSessionControl

Menggunakan Perangkat Komunikasi