Interfaccia IMMNotificationClient (mmdeviceapi.h)
L'interfaccia IMMNotificationClient fornisce notifiche quando un dispositivo endpoint audio viene aggiunto o rimosso, quando lo stato o le proprietà di un dispositivo endpoint cambiano o quando viene apportata una modifica al ruolo predefinito assegnato a un dispositivo endpoint. Diversamente dalle altre interfacce di questa sezione, implementate dal componente di sistema dell'API MMDevice, un client API MMDevice implementa l'interfaccia IMMNotificationClient . Per ricevere notifiche, il client passa un puntatore all'istanza dell'interfaccia IMMNotificationClient come parametro del metodo IMMDeviceEnumerator::RegisterEndpointNotificationCallback .
Dopo aver registrato l'interfaccia IMMNotificationClient , il client riceve le notifiche degli eventi sotto forma di callback tramite i metodi dell'interfaccia.
Ogni metodo nell'interfaccia IMMNotificationClient riceve, come uno dei parametri di input, una stringa ID endpoint che identifica il dispositivo endpoint audio oggetto della notifica. La stringa identifica in modo univoco il dispositivo rispetto a tutti gli altri dispositivi endpoint audio nel sistema. I metodi nell'implementazione dell'interfaccia IMMNotificationClient devono considerare questa stringa come opaca. Ovvero, nessuno dei metodi deve tentare di analizzare il contenuto della stringa per ottenere informazioni sul dispositivo. Il motivo è che il formato stringa non è definito e potrebbe passare da un'implementazione del modulo di sistema API MMDevice alla successiva.
Un client può usare la stringa ID endpoint che riceve come parametro di input in una chiamata a un metodo IMMNotificationClient in due modi:
- Il client può creare un'istanza del dispositivo identificata dalla stringa ID dell'endpoint. Il client esegue questa operazione chiamando il metodo IMMDeviceEnumerator::GetDevice e specificando la stringa ID endpoint come parametro di input.
- Il client può confrontare la stringa dell'ID endpoint con la stringa ID endpoint di un'istanza del dispositivo esistente. Per ottenere la seconda stringa id endpoint, il client chiama il metodo IMMDevice::GetId dell'istanza del dispositivo. Se le due stringhe corrispondono, identificano lo stesso dispositivo.
- I metodi dell'interfaccia devono essere non bloccanti. Il client non deve mai attendere su un oggetto di sincronizzazione durante un callback di eventi.
- Per evitare blocchi non recapitabili, il client non deve mai chiamare IMMDeviceEnumerator::RegisterEndpointNotificationCallback o IMMDeviceEnumerator::UnregisterEndpointNotificationCallback nell'implementazione dei metodi IMMNotificationClient .
- Il client non deve mai rilasciare il riferimento finale su un oggetto API MMDevice durante un callback di eventi.
Ereditarietà
L'interfaccia IMMNotificationClient eredita dall'interfaccia IUnknown . IMMNotificationClient include anche questi tipi di membri:
Metodi
L'interfaccia IMMNotificationClient include questi metodi.
IMMNotificationClient::OnDefaultDeviceChanged Il metodo OnDefaultDeviceChanged notifica al client che il dispositivo endpoint audio predefinito per un determinato ruolo del dispositivo è cambiato. |
IMMNotificationClient::OnDeviceAdded Il metodo OnDeviceAdded indica che è stato aggiunto un nuovo dispositivo endpoint audio. |
IMMNotificationClient::OnDeviceRemoved Il metodo OnDeviceRemoved indica che un dispositivo endpoint audio è stato rimosso. |
IMMNotificationClient::OnDeviceStateChanged Il metodo OnDeviceStateChanged indica che lo stato di un dispositivo endpoint audio è cambiato. |
IMMNotificationClient::OnPropertyValueChanged Il metodo OnPropertyValueChanged indica che il valore di una proprietà appartenente a un dispositivo endpoint audio è stato modificato. |
Requisiti
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2008 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | mmdeviceapi.h |
Vedi anche
IMMDeviceEnumerator::GetDevice
IMMDeviceEnumerator::RegisterEndpointNotificationCallback