Compartir a través de


Uso de notificaciones personalizadas de PnP

Un controlador puede usar el mecanismo de notificación de cambio de dispositivo de destino para recibir notificaciones de eventos personalizados en un dispositivo.

El programador que define el evento personalizado debe hacer lo siguiente:

  1. Defina un nuevo GUID para el evento personalizado.

    Genere el GUID con Uuidgen o Guidgen (que se incluyen en el Microsoft Windows SDK). Publique el GUID en un archivo de encabezado y documentación adecuados.

  2. Escriba código para desencadenar el evento personalizado.

    En el modo kernel, un controlador llama a IoReportTargetDeviceChange con el GUID personalizado y un puntero al PDO para el dispositivo. Los eventos personalizados solo se pueden desencadenar desde el modo kernel.

Un escritor de controladores usa una notificación personalizada con un procedimiento similar al siguiente:

  1. El controlador (o aplicación) se registra para recibir notificaciones del evento personalizado.

    En el modo kernel, un controlador llama a IoRegisterPlugPlayNotification y registra un eventCategoryTargetDeviceChange en el dispositivo.

    En el modo de usuario, una aplicación se registra mediante RegisterDeviceNotification. Consulte Windows SDK para obtener más información.

  2. Un componente en modo kernel desencadena el evento personalizado.

  3. El administrador de PnP llama a rutinas de notificación registradas en el dispositivo.

    El administrador de PnP llama a las rutinas de devolución de llamada del modo de usuario registradas y, a continuación, llama a las rutinas de devolución de llamada en modo kernel.

  4. Una vez completada la notificación en modo de usuario, las rutinas de devolución de llamada de notificación del controlador en modo kernel responden al evento personalizado.

    Consulte Directrices para escribir rutinas de devolución de llamada de notificación PnP para obtener instrucciones generales sobre rutinas de devolución de llamada de notificación. Además de esas directrices, una rutina de devolución de llamada de notificación personalizada no debe abrir un identificador para un dispositivo desde el subproceso rutinario de devolución de llamada.