Función RegisterDeviceNotificationW (winuser.h)
Registra el dispositivo o el tipo de dispositivo para el que una ventana recibirá notificaciones.
Nota
Puedes usar CM_Register_Notification en lugar de RegisterDeviceNotification si el código tiene como destino Windows 8 o versiones más recientes de Windows. La ventaja de CM_Register_Notification es que no requiere que funcione un identificador de ventana.
Sintaxis
HDEVNOTIFY RegisterDeviceNotificationW(
[in] HANDLE hRecipient,
[in] LPVOID NotificationFilter,
[in] DWORD Flags
);
Parámetros
[in] hRecipient
Identificador de la ventana o servicio que recibirá eventos de dispositivo para los dispositivos especificados en el parámetro NotificationFilter. El mismo identificador de ventana se puede usar en varias llamadas para RegisterDeviceNotification.
Los servicios pueden especificar un identificador de ventana o un identificador de estado del servicio.
[in] NotificationFilter
Puntero a un bloque de datos que especifica el tipo de dispositivo para el que se deben enviar las notificaciones. Este bloque siempre comienza con la estructura DEV_BROADCAST_HDR. Los datos siguientes a este encabezado dependen del valor del miembro dbch_devicetype, que puede ser DBT_DEVTYP_DEVICEINTERFACE o DBT_DEVTYP_HANDLE. Para obtener más información, vea Comentarios.
[in] Flags
Este parámetro puede ser uno de los siguientes valores.
Además, puede especificar el siguiente valor.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es un identificador de notificación de dispositivo.
Si se produce un error en la función, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.
Observaciones
Las aplicaciones envían notificaciones de eventos mediante la función
Los servicios pueden usar la función RegisterDeviceNotification para registrarse para recibir notificaciones de dispositivo. Si un servicio especifica un identificador de ventana en el parámetro hRecipient, las notificaciones se envían al procedimiento de ventana. Si hRecipient es un identificador de estado del servicio, SERVICE_CONTROL_DEVICEEVENT notificaciones se envían al controlador de control de servicio. Para obtener más información sobre el controlador de control de servicio, consulte HandlerEx.
Asegúrese de controlar los eventos del dispositivo Plug and Play lo antes posible. De lo contrario, el sistema puede dejar de responder. Si el controlador de eventos es realizar una operación que pueda bloquear la ejecución (por ejemplo, E/S), es mejor iniciar otro subproceso para realizar la operación de forma asincrónica.
Los identificadores de notificación de dispositivo devueltos por registerDeviceNotification deben cerrarse llamando a la función UnregisterDeviceNotification cuando ya no sean necesarias.
Los eventos DBT_DEVICEARRIVAL y DBT_DEVICEREMOVECOMPLETE se transmiten automáticamente a todas las ventanas de nivel superior para los dispositivos de puerto. Por lo tanto, no es necesario llamar a RegisterDeviceNotification para los puertos y se produce un error en la función si el miembro dbch_devicetype es DBT_DEVTYP_PORT. Las notificaciones de volumen también se transmiten a ventanas de nivel superior, por lo que la función produce un error si dbch_devicetype es DBT_DEVTYP_VOLUME. El sistema no usa directamente los dispositivos definidos por OEM, por lo que la función produce un error si dbch_devicetype es DBT_DEVTYP_OEM.
Ejemplos
Para obtener un ejemplo, consulte Registro de notificaciones de dispositivo.
Nota
El encabezado winuser.h define RegisterDeviceNotification como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows XP |
servidor mínimo admitido | Windows Server 2003 |
de la plataforma de destino de |
Windows |
encabezado de |
winuser.h (incluya Windows.h) |
biblioteca de |
User32.lib |
DLL de |
User32.dll |
conjunto de API de |
ext-ms-win-ntuser-misc-l1-1-0 (introducido en Windows 8) |
Consulte también
funciones de administración de dispositivos
de notificaciones de dispositivo de