Interfaccia IAudioSessionControl2 (audiopolicy.h)
L'interfaccia IAudioSessionControl2 può essere usata da un client per ottenere informazioni sulla sessione audio.
Per ottenere un riferimento all'interfaccia IAudioSessionControl2 , l'applicazione deve chiamare IAudioSessionControl::QueryInterface per richiedere il puntatore di interfaccia dall'interfaccia IAudioSessionControl dell'oggetto flusso. Esistono due modi in cui un'applicazione può ottenere un puntatore all'interfaccia IAudioSessionControl :
- Chiamando IAudioClient::GetService nel client audio dopo l'apertura di un flusso nel dispositivo. Il client audio apre un flusso per il rendering o l'acquisizione e lo associa a una sessione audio chiamando IAudioClient::Initialize.
- Chiamando IAudioSessionManager::GetAudioSessionControl per una sessione audio esistente senza aprire il flusso.
Il thread dell'applicazione che usa questa interfaccia deve essere inizializzato per COM. Per altre informazioni sull'inizializzazione COM, vedere la descrizione della funzione CoInitializeEx nella documentazione di Windows SDK.
Ereditarietà
L'interfaccia IAudioSessionControl2 eredita da IAudioSessionControl. IAudioSessionControl2 include anche questi tipi di membri:
Metodi
L'interfaccia IAudioSessionControl2 include questi metodi.
IAudioSessionControl2::GetProcessId Il metodo GetProcessId recupera l'identificatore del processo della sessione audio. |
IAudioSessionControl2::GetSessionIdentifier Il metodo GetSessionIdentifier recupera l'identificatore di sessione audio. |
IAudioSessionControl2::GetSessionInstanceIdentifier Il metodo GetSessionInstanceIdentifier recupera l'identificatore dell'istanza della sessione audio. |
IAudioSessionControl2::IsSystemSoundsSession Il metodo IsSystemSoundsSession indica se la sessione è una sessione audio di sistema. |
IAudioSessionControl2::SetDuckingPreference Il metodo SetDuckingPreference abilita o disabilita l'esperienza di attenuazione del flusso predefinita (anatratura automatica) fornita dal sistema. |
Commenti
Questa interfaccia supporta implementazioni personalizzate per l'attenuazione del flusso o l'anatraggio, una nuova funzionalità in Windows 7. Un'applicazione che riproduce un flusso multimediale può comportarsi in modo diverso quando viene aperto un nuovo flusso di comunicazione nel dispositivo di comunicazione predefinito. Ad esempio, il flusso multimediale originale può essere sospeso mentre il nuovo flusso di comunicazione è aperto. Per altre informazioni su questa funzionalità, vedere Default Ducking Experience.For more information about this feature, see Default Ducking Experience.
Un'applicazione può usare questa interfaccia per eseguire le attività seguenti:
- Specificare che vuole rifiutare esplicitamente l'esperienza di attenuazione del flusso predefinita fornita dal sistema.
- Ottiene l'identificatore di sessione audio associato al flusso. L'identificatore è necessario durante la registrazione della notifica. L'applicazione può registrarsi per ricevere notifiche di anatraggio dal sistema.
- Controllare se il flusso associato alla sessione audio è un suono di sistema.
Esempio
Il codice di esempio seguente mostra come ottenere un riferimento all'interfaccia IAudioSessionControl2 e chiamare i relativi metodi per determinare se il flusso associato alla sessione audio è un suono di sistema.
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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 [solo app desktop] |
Server minimo supportato | Windows Server 2008 R2 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | audiopolicy.h |