Share via


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
E_POINTER
Il parametro NewNotifications è NULL.
AUDCLNT_E_DEVICE_INVALIDATED
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.
AUDCLNT_E_SERVICE_NOT_RUNNING
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)
Quando le notifiche non sono più necessarie, il client può chiamare il metodo IAudioSessionControl::UnregisterAudioSessionNotification per terminare le notifiche.

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

Interfaccia IAudioSessionEvents

IAudioSessionManager