Controlar eventos de cambio de interfaz de dispositivo
Cuando un controlador o un componente en modo de usuario habilita o deshabilita una instancia de interfaz de dispositivo, el administrador de PnP llama a todas las rutinas de devolución de llamada de notificación registradas para eventos EventCategoryDeviceInterfaceChange en la clase de interfaz de dispositivo. Para indicar el motivo de la notificación, el administrador de PnP establece el miembro Event del parámetro NotificationStructure de la rutina de devolución de llamada en GUID_DEVICE_INTERFACE_ARRIVAL o GUID_DEVICE_INTERFACE_REMOVAL.
Al controlar un evento de GUID_DEVICE_INTERFACE_ARRIVAL, una rutina de devolución de llamada de notificación debe:
Realice tareas definidas por el controlador para controlar la nueva interfaz.
Normalmente, una rutina de devolución de llamada de notificación abre directamente el dispositivo en el contexto de la devolución de llamada. Sin embargo, si abrir el dispositivo puede hacer que se produzcan eventos PnP posteriores (por ejemplo, la enumeración de dispositivos secundarios), la rutina de devolución de llamada debe poner en cola una rutina de trabajo para abrir el dispositivo; de lo contrario, se puede producir un interbloqueo.
Una rutina de devolución de llamada podría habilitar una interfaz propia en respuesta a la disponibilidad de la nueva interfaz.
Al controlar un evento de GUID_DEVICE_INTERFACE_REMOVAL, una rutina de devolución de llamada de notificación debe:
- Deshaga las operaciones que haya realizado cuando se habilitó la interfaz. Cierre los identificadores de archivo que se abrieron en respuesta al evento de llegada de la interfaz.
Además de EventCategoryDeviceInterfaceChange, el controlador también debe registrarse para EventCategoryTargetDeviceChange y cerrar el identificador de archivo de la devolución de llamada del evento GUID_TARGET_DEVICE_QUERY_REMOVE . Mantener abierto el identificador de archivo va a vetar el proceso de eliminación y hacer que la eliminación ordenada se cancele.