Funzione RegisterDeviceNotificationA (winuser.h)
Registra il dispositivo o il tipo di dispositivo per cui una finestra riceverà notifiche.
Nota
È possibile usare CM_Register_Notification anziché RegisterDeviceNotification se il codice è destinato Windows 8 o versioni successive di Windows. Il vantaggio di CM_Register_Notification è che non richiede un handle di finestra per funzionare.
Sintassi
HDEVNOTIFY RegisterDeviceNotificationA(
[in] HANDLE hRecipient,
[in] LPVOID NotificationFilter,
[in] DWORD Flags
);
Parametri
[in] hRecipient
Handle alla finestra o al servizio che riceverà gli eventi del dispositivo per i dispositivi specificati nel parametro NotificationFilter . Lo stesso handle della finestra può essere usato in più chiamate a RegisterDeviceNotification.
I servizi possono specificare un handle di gestione dello stato della finestra o del servizio.
[in] NotificationFilter
Puntatore a un blocco di dati che specifica il tipo di dispositivo per cui inviare le notifiche. Questo blocco inizia sempre con la struttura DEV_BROADCAST_HDR . I dati seguenti di questa intestazione dipendono dal valore del membro dbch_devicetype , che può essere DBT_DEVTYP_DEVICEINTERFACE o DBT_DEVTYP_HANDLE. Per altre informazioni, vedere la sezione Osservazioni.
[in] Flags
Questo parametro può avere uno dei valori seguenti.
È inoltre possibile specificare il valore seguente.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è un handle di notifica del dispositivo.
Se la funzione ha esito negativo, il valore restituito è NULL. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
Le applicazioni inviano notifiche di evento usando la funzione BroadcastSystemMessage . Qualsiasi applicazione con una finestra di primo livello può ricevere notifiche di base elaborando il messaggio di WM_DEVICECHANGE . Le applicazioni possono usare la funzione RegisterDeviceNotification per registrare per ricevere notifiche del dispositivo.
I servizi possono usare la funzione RegisterDeviceNotification per registrare per ricevere notifiche del dispositivo. Se un servizio specifica un handle di finestra nel parametro hRecipient , le notifiche vengono inviate alla procedura della finestra. Se hRecipient è un handle di stato del servizio, SERVICE_CONTROL_DEVICEEVENT le notifiche vengono inviate al gestore del controllo del servizio. Per altre informazioni sul gestore del controllo del servizio, vedere HandlerEx.
Assicurarsi di gestire Plug and Play eventi del dispositivo il più rapidamente possibile. In caso contrario, il sistema potrebbe non rispondere. Se il gestore eventi consiste nell'eseguire un'operazione che può bloccare l'esecuzione (ad esempio I/O), è consigliabile avviare un altro thread per eseguire l'operazione in modo asincrono.
Gli handle di notifica del dispositivo restituiti da RegisterDeviceNotification devono essere chiusi chiamando la funzione UnregisterDeviceNotification quando non sono più necessari.
Gli eventi DBT_DEVICEARRIVAL e DBT_DEVICEREMOVECOMPLETE vengono trasmessi automaticamente a tutte le finestre di primo livello per i dispositivi porta. Pertanto, non è necessario chiamare RegisterDeviceNotification per le porte e la funzione ha esito negativo se il membro dbch_devicetype è DBT_DEVTYP_PORT. Le notifiche del volume vengono trasmesse anche a finestre di primo livello, quindi la funzione ha esito negativo se dbch_devicetype è DBT_DEVTYP_VOLUME. I dispositivi definiti dall'OEM non vengono usati direttamente dal sistema, quindi la funzione ha esito negativo se dbch_devicetype è DBT_DEVTYP_OEM.
Esempio
Per un esempio, vedere Registrazione per la notifica del dispositivo.
Nota
L'intestazione winuser.h definisce RegisterDeviceNotification come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP |
Server minimo supportato | Windows Server 2003 |
Piattaforma di destinazione | Windows |
Intestazione | winuser.h (include Windows.h) |
Libreria | User32.lib |
DLL | User32.dll |
Set di API | ext-ms-win-ntuser-misc-l1-1-0 (introdotto in Windows 8) |