Compartir a través de


Registro para la notificación de cambio de dispositivo de destino

Un controlador se registra para recibir notificaciones de eventos de cambio de dispositivo de destino PnP mediante una llamada a IoRegisterPlugPlayNotification.

La siguiente información se aplica a llamar a esta rutina para la notificación de cambio de dispositivo de destino:

  • Especifique un EventCategory de EventCategoryTargetDeviceChange.

  • EventCategoryData debe apuntar al objeto de archivo del dispositivo en el que se solicita la notificación.

    Si la rutina de devolución de llamada del controlador requiere acceso al objeto de archivo, el controlador debe sacar una referencia en el objeto de archivo antes de llamar a IoRegisterPlugPlayNotification.

    Si la rutina de devolución de llamada del controlador no requiere acceso al objeto de archivo, el controlador no necesita hacer referencia al objeto .

    Una vez cerrado el objeto de archivo, el controlador sigue recibiendo notificaciones para el dispositivo hasta que el controlador quite su registro de notificaciones. Este diseño permite al controlador recibir notificaciones de eventos de GUID_TARGET_DEVICE_REMOVE_CANCELLED, por ejemplo.

  • Especifique un contexto definido por el controlador que el administrador de PnP pasará a la rutina de devolución de llamada.

    Un controlador puede usar el parámetro Context para mantener información sobre el estado actual del objeto de archivo (por ejemplo, se ha cerrado o eliminado).

    Un controlador también puede usar el contexto para almacenar la ruta de acceso que usó para abrir originalmente el dispositivo. Un controlador puede usar esta ruta de acceso para volver a abrir el dispositivo después de una operación de eliminación cancelada. (Consulte Control de un evento GUID_TARGET_DEVICE_REMOVE_CANCELLED para obtener más información).

Un controlador quita un registro de notificación llamando a IoUnregisterPlugPlayNotification con notificationEntry devuelto por IoRegisterPlugPlayNotification. Si el controlador extraió una referencia en el objeto de archivo cuando se registró para la notificación y esa referencia sigue pendiente, el controlador debe liberar la referencia después de quitar el registro.