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.
- Die Methoden der -Schnittstelle müssen nicht blockiert werden. Der Client sollte während eines Ereignisrückrufs niemals auf ein Synchronisierungsobjekt warten.
- Um unzustellbare Sperren zu vermeiden, sollte der Client niemals IMMDeviceEnumerator::RegisterEndpointNotificationCallback oder IMMDeviceEnumerator::UnregisterEndpointNotificationCallback in seiner Implementierung von IMMNotificationClient-Methoden aufrufen.
- Der Client sollte während eines Ereignisrückrufs niemals den endgültigen Verweis auf ein MMDevice-API-Objekt freigeben.
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
IMMDeviceEnumerator::GetDevice
IMMDeviceEnumerator::RegisterEndpointNotificationCallback