Metodo IAudioSessionControl::RegisterAudioSessionNotification (audiopolicy.h)
Il metodo RegisterAudioSessionNotification registra il client per ricevere notifiche di eventi di sessione, incluse le modifiche nello stato del flusso.
Sintassi
HRESULT RegisterAudioSessionNotification(
[in] IAudioSessionEvents *NewNotifications
);
Parametri
[in] NewNotifications
Puntatore a un'interfaccia IAudioSessionEvents implementata dal client. Se il metodo ha esito positivo, chiama il metodo AddRef nell'interfaccia IAudioSessionEvents del client.
Valore restituito
Se il metodo ha esito positivo, viene restituito S_OK. Se ha esito negativo, i codici restituiti possibili includono, ma non sono limitati a, i valori visualizzati nella tabella seguente.
Codice restituito | Descrizione |
---|---|
|
Il parametro NewNotifications è NULL. |
|
Il dispositivo endpoint audio è stato scollegato o l'hardware audio o le risorse hardware associate sono state riconfigurate, disabilitate, rimosse o altrimenti non disponibili per l'uso. |
|
Il servizio audio Di Windows non è in esecuzione. |
Commenti
Questo metodo passa un'interfaccia IAudioSessionEvents implementata dal client alla gestione sessione. Dopo una chiamata riuscita a questo metodo, il gestore sessione chiama i metodi nell'interfaccia IAudioSessionEvents per notificare al client vari eventi di sessione. Tramite questi metodi, il client riceve notifiche degli eventi correlati alla sessione seguenti:
- Modifiche al nome visualizzato
- Modifiche a livello di volume
- Lo stato della sessione cambia (inattivo inattivo o attivo inattivo)
- Modifiche dei parametri di raggruppamento
- Disconnessione del client dalla sessione (causata dall'utente che rimuove il dispositivo dell'endpoint audio, arresta la gestione sessione o modifica del formato del flusso)
Prima che il client rilascia il riferimento finale all'interfaccia IAudioSessionEvents , deve chiamare UnregisterAudioSessionNotification per annullare la registrazione dell'interfaccia. In caso contrario, l'applicazione perde le risorse mantenute dagli oggetti IAudioSessionEvents e IAudioSessionControl . Si noti che RegisterAudioSessionNotification chiama il metodo IAudioSessionEvents::AddRef e UnregisterAudioSessionNotification chiama il metodo IAudioSessionEvents::Release . Se il client esegue l'errore rilasciando il relativo riferimento all'interfaccia IAudioSessionEvents prima di chiamare UnregisterAudioSessionNotification, il gestore sessione non rilascia mai il riferimento all'interfaccia IAudioSessionEvents . Ad esempio, un'implementazione IAudioSessionEvents non progettata correttamente potrebbe chiamare UnregisterAudioSessionNotification dal distruttore per l'oggetto IAudioSessionEvents . In questo caso, il client non chiamerà UnregisterAudioSessionNotification finché il gestore sessione rilascia il riferimento all'interfaccia IAudioSessionEvents e il gestore sessione non rilascia il relativo riferimento all'interfaccia IAudioSessionEvents finché il client chiama UnregisterAudioSessionNotification. Per altre informazioni sui metodi AddRef e Release , vedere la discussione sull'interfaccia IUnknown nella documentazione di Windows SDK.
Inoltre, il client deve chiamare UnregisterAudioSessionNotification prima di rilasciare tutti i relativi riferimenti agli oggetti IAudioSessionControl e IAudioSessionManager. A meno che il client non mantenga un riferimento a almeno uno di questi due oggetti, il gestore sessione perde l'archiviazione allocata per contenere le informazioni di registrazione. Dopo aver registrato un'interfaccia di notifica, il client continua a ricevere notifiche solo se esiste almeno uno di questi due oggetti.
Per un esempio di codice che chiama il metodo RegisterAudioSessionNotification , vedere Eventi audio per applicazioni audio legacy.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [app desktop | App UWP] |
Server minimo supportato | Windows Server 2008 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | audiopolicy.h |
Vedi anche
Interfaccia IAudioSessionControl
IAudioSessionControl::UnregisterAudioSessionNotification