Share via


IAudioSessionManager2::RegisterSessionNotification-Methode (audiopolicy.h)

Die RegisterSessionNotification-Methode registriert die Anwendung, um eine Benachrichtigung zu erhalten, wenn eine Sitzung erstellt wird.

Syntax

HRESULT RegisterSessionNotification(
  IAudioSessionNotification *SessionNotification
);

Parameter

SessionNotification

Ein Zeiger auf die Implementierung der IAudioSessionNotification-Schnittstelle der Anwendung. Wenn der Methodenaufruf erfolgreich ist, wird die AddRef-Methode auf der IAudioSessionNotification-Schnittstelle der Anwendung aufgerufen.

Rückgabewert

Wenn die Methode erfolgreich ist, wird S_OK zurückgegeben. Wenn ein Fehler auftritt, können mögliche Rückgabecodes die in der folgenden Tabelle gezeigten Werte umfassen, sind jedoch nicht darauf beschränkt.

Rückgabewert Beschreibung
E_POINTER
SessionNotification ist NULL.
E_OUTOFMEMORY
Das interne Objekt konnte aufgrund unzureichendem Arbeitsspeicher nicht erstellt werden.

Hinweise

Die Anwendung kann sich registrieren, um eine Benachrichtigung zu erhalten, wenn eine Sitzung erstellt wird, über die Methoden der IAudioSessionNotification-Schnittstelle . Die Anwendung implementiert die IAudioSessionNotification-Schnittstelle . Die in dieser Schnittstelle definierten Methoden erhalten Rückrufe vom System, wenn eine Sitzung erstellt wird. Beispielcode, der zeigt, wie diese Schnittstelle implementiert wird, finden Sie unter

IAudioSessionNotification-Schnittstelle.

Um Benachrichtigungen zu erhalten, ruft die Anwendung die IAudioSessionManager2::RegisterSessionNotification-Methode auf, um die IAudioSessionNotification-Schnittstelle zu registrieren. Wenn die Anwendung keine Benachrichtigungen mehr benötigt, ruft sie die IAudioSessionManager2::UnregisterSessionNotification-Methode auf, um die Registrierung zu löschen.

Wichtig

Sie müssen IAudioSessionEnumerator::GetCount aufrufen, um Benachrichtigungen zu empfangen. Die Sitzungsaufzählungs-API verwirft neue Sitzungsbenachrichtigungen, bis die Anwendung zuerst die Liste der vorhandenen Sitzungen abgerufen hat. Dies ist, um eine Racebedingung zu verhindern, die auftreten kann, wenn eine Sitzungsbenachrichtigung eingeht, während die Anwendung, die die Sitzungs-APIs verwendet, gestartet wird. Das Aufrufen von GetCount löst die Enumerations-API aus, um mit dem Senden von Sitzungsbenachrichtigungen zu beginnen.

Hinweis Stellen Sie sicher, dass die Anwendung com mit MTA-Modell (Multithreaded Apartment) initialisiert, indem sie einen Nicht-UI-Thread aufruft CoInitializeEx(NULL, COINIT_MULTITHREADED) . Wenn MTA nicht initialisiert wird, empfängt die Anwendung keine Sitzungsbenachrichtigungen vom Sitzungs-Manager. Threads, die die Benutzeroberfläche einer Anwendung ausführen, sollten ein initialisiertes Apartmentthreadingmodell sein.
 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile audiopolicy.h

Weitere Informationen

IAudioSessionManager2