IMMNotificationClient-Schnittstelle (mmdeviceapi.h)

Die IMMNotificationClient-Schnittstelle stellt Benachrichtigungen bereit, wenn ein Audioendpunktgerät hinzugefügt oder entfernt wird, wenn sich der Zustand oder die Eigenschaften eines Endpunktgeräts ändern oder wenn eine Änderung der Standardrolle vorliegt, die einem Endpunktgerät zugewiesen ist. Im Gegensatz zu den anderen Schnittstellen in diesem Abschnitt, die von der MMDevice-API-Systemkomponente implementiert werden, implementiert ein MMDevice-API-Client die IMMNotificationClient-Schnittstelle . Um Benachrichtigungen zu empfangen, übergibt der Client einen Zeiger an seine IMMNotificationClient-Schnittstelle instance als Parameter an die IMMDeviceEnumerator::RegisterEndpointNotificationCallback-Methode.

Nach der Registrierung seiner IMMNotificationClient-Schnittstelle empfängt der Client Ereignisbenachrichtigungen in Form von Rückrufen über die Methoden der Schnittstelle.

Jede Methode in der IMMNotificationClient-Schnittstelle empfängt als einer ihrer Eingabeparameter eine Endpunkt-ID-Zeichenfolge , die das Audioendpunktgerät identifiziert, das gegenstand der Benachrichtigung ist. Die Zeichenfolge identifiziert das Gerät eindeutig in Bezug auf alle anderen Audioendpunktgeräte im System. Die Methoden in der IMMNotificationClient-Schnittstellenimplementierung sollten diese Zeichenfolge als undurchsichtig behandeln. Das heißt, keine der Methoden sollte versuchen, den Inhalt der Zeichenfolge zu analysieren, um Informationen über das Gerät zu erhalten. Der Grund dafür ist, dass das Zeichenfolgenformat nicht definiert ist und sich möglicherweise von einer Implementierung des MMDevice-API-Systemmoduls zur nächsten ändert.

Ein Client kann die Endpunkt-ID-Zeichenfolge, die er als Eingabeparameter in einem Aufruf einer IMMNotificationClient-Methode empfängt, auf zwei Arten verwenden:

  • Der Client kann eine instance des Geräts erstellen, das von der Endpunkt-ID-Zeichenfolge identifiziert wird. Dazu ruft der Client die IMMDeviceEnumerator::GetDevice-Methode auf und gibt die Endpunkt-ID-Zeichenfolge als Eingabeparameter an.
  • Der Client kann die Endpunkt-ID-Zeichenfolge mit der Endpunkt-ID-Zeichenfolge eines vorhandenen Geräts instance vergleichen. Um die zweite Endpunkt-ID-Zeichenfolge abzurufen, ruft der Client die IMMDevice::GetId-Methode des geräts instance auf. Wenn die beiden Zeichenfolgen übereinstimmen, identifizieren sie dasselbe Gerät.
Bei der Implementierung der IMMNotificationClient-Schnittstelle sollte der Client diese Regeln beachten, um Deadlocks und nicht definiertes Verhalten zu vermeiden: Ein Codebeispiel, das die IMMNotificationClient-Schnittstelle implementiert, finden Sie unter Geräteereignisse.

Vererbung

Die IMMNotificationClient-Schnittstelle erbt von der IUnknown-Schnittstelle . IMMNotificationClient verfügt auch über folgende Membertypen:

Methoden

Die IMMNotificationClient-Schnittstelle verfügt über diese Methoden.

 
IMMNotificationClient::OnDefaultDeviceChanged

Die OnDefaultDeviceChanged-Methode benachrichtigt den Client, dass das Standard-Audioendpunktgerät für eine bestimmte Geräterolle geändert wurde.
IMMNotificationClient::OnDeviceAdded

Die OnDeviceAdded-Methode gibt an, dass ein neues Audioendpunktgerät hinzugefügt wurde.
IMMNotificationClient::OnDeviceRemoved

Die OnDeviceRemoved-Methode gibt an, dass ein Audioendpunktgerät entfernt wurde.
IMMNotificationClient::OnDeviceStateChanged

Die OnDeviceStateChanged-Methode gibt an, dass sich der Zustand eines Audioendpunktgeräts geändert hat.
IMMNotificationClient::OnPropertyValueChanged

Die OnPropertyValueChanged-Methode gibt an, dass sich der Wert einer Eigenschaft geändert hat, die zu einem Audioendpunktgerät gehört.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile mmdeviceapi.h

Weitere Informationen

Kernaudioschnittstellen

IMMDevice::GetId

IMMDeviceEnumerator::GetDevice

IMMDeviceEnumerator::RegisterEndpointNotificationCallback

IMMDeviceEnumerator::UnregisterEndpointNotificationCallback

MMDevice-API