Información general sobre notificaciones de PnP
El administrador de PnP proporciona un mecanismo para que se notifique a los controladores y aplicaciones cuando se produzcan determinados eventos en un dispositivo específico o en el sistema en general. Un controlador puede registrarse para recibir notificaciones de las siguientes categorías de eventos:
EventCategoryDeviceInterfaceChange
Cuando un controlador se registra para esta categoría de eventos en una interfaz de dispositivo, el administrador de PnP notifica al controlador de los siguientes eventos:
GUID_DEVICE_INTERFACE_ARRIVAL
Indica que se ha habilitado una interfaz de dispositivo de la clase especificada. Por ejemplo, un usuario agregó un nuevo disco a la máquina y el administrador de volúmenes habilitó un nuevo volumen (una interfaz de dispositivo de la clase "volumen").GUID_DEVICE_INTERFACE_REMOVAL
Indica que se ha deshabilitado una interfaz de dispositivo de la clase especificada.Consulte IoRegisterDeviceInterface y rutinas relacionadas para obtener más información sobre las interfaces de dispositivo.
EventCategoryTargetDeviceChange
Cuando un controlador se registra para esta categoría de eventos en un dispositivo, el administrador de PnP notifica al controlador cuando se producen los siguientes eventos en el dispositivo:
GUID_TARGET_DEVICE_QUERY_REMOVE
Indica que el administrador de PnP está a punto de quitar los controladores del dispositivo. Varias acciones pueden provocar este evento, como: un usuario ha solicitado quitar el dispositivo especificado de la máquina o un usuario ha emitido una solicitud de controlador de actualización para el dispositivo. Esta notificación solicita a los controladores del dispositivo que aprueben o quiten la operación de eliminación inminente.GUID_TARGET_DEVICE_REMOVE_COMPLETE
Indica que el dispositivo especificado se ha quitado de la máquina o que un usuario está cambiando los controladores del dispositivo.GUID_TARGET_DEVICE_REMOVE_CANCELLED
Indica que se ha cancelado una operación de eliminación inminente en el dispositivo especificado.GUID_XXX (eventos personalizados)
Indica que se ha producido un evento personalizado en el dispositivo especificado.Un escritor de controladores puede definir un evento personalizado para un dispositivo. Cuando el controlador (u otro componente relacionado) notifica al administrador de PnP que se ha producido el evento personalizado, el administrador de PnP notifica a los componentes registrados para las notificaciones de cambio de dispositivo de destino en el dispositivo.
A diferencia del registro de cambios en la interfaz de dispositivo, que se puede considerar un interés "pasivo" en la interfaz, el registro para los cambios de dispositivo de destino indica un interés "activo" en un dispositivo.
EventCategoryHardwareProfileChange
Esta categoría incluye los siguientes eventos:
GUID_HWPROFILE_QUERY_CHANGE
Indica que un usuario ha solicitado cambiar el perfil de hardware de la máquina. El administrador de PnP usa esta notificación para preguntar a los componentes registrados si puede cambiar el perfil de hardware sin interrumpir la operación del sistema. Normalmente, los componentes registrados se realizan correctamente en estas solicitudes de consulta.GUID_HWPROFILE_CHANGE_COMPLETE
Indica que el perfil de hardware de la máquina ha cambiado. Si un controlador mantiene la configuración específica del perfil, este controlador debe actualizar esa configuración después de un cambio de perfil de hardware.GUID_HWPROFILE_CHANGE_CANCELLED
Indica que se ha cancelado un cambio de perfil de hardware inminente.
La notificación PnP funciona de la siguiente manera para los componentes en modo kernel:
Un controlador se registra para recibir notificaciones en una categoría de eventos mediante una llamada a IoRegisterPlugPlayNotification.
Una rutina de devolución de llamada de notificación PnP permanece registrada hasta que el controlador quita explícitamente el registro.
El administrador de PnP llama a la rutina de devolución de llamada del controlador cuando se produce un evento en la categoría registrada.
El controlador quita el registro de devolución de llamada llamando a IoUnregisterPlugPlayNotification.
Los controladores no deben generar un evento sincrónico ni esperar a que se produzca un evento asincrónico durante el procesamiento de un cierre.
Para obtener más información sobre la notificación PnP, consulte las secciones siguientes:
Directrices para escribir rutinas de devolución de llamada de notificación PnP
Uso de la notificación de cambio de interfaz de dispositivo PnP
Uso de la notificación de cambio de dispositivo de destino de PnP