Función IoUnregisterPlugPlayNotificationEx (wdm.h)
La rutina IoUnregisterPlugPlayNotificationEx cancela el registro de la rutina de devolución de llamada de un controlador para las notificaciones de eventos de Plug and Play (PnP).
Sintaxis
NTSTATUS IoUnregisterPlugPlayNotificationEx(
[in] PVOID NotificationEntry
);
Parámetros
[in] NotificationEntry
Puntero a un valor opaco que representa el registro que se va a cancelar. El autor de la llamada obtuvo este valor llamando a la rutina IoRegisterPlugPlayNotification .
Valor devuelto
IoUnregisterPlugPlayNotificationEx devuelve STATUS_SUCCESS si el parámetro NotificationEntry es válido.
Comentarios
Un controlador en modo kernel llama a esta rutina para quitar un registro para recibir notificaciones PnP. Es decir, una llamada IoUnregisterPlugPlayNotificationEx cancela el registro de una rutina de devolución de llamada de controlador para una categoría de eventos PnP. El controlador obtuvo anteriormente este registro llamando a la rutina IoRegisterPlugPlayNotification .
Después de que se devuelva una llamada a IoUnregisterPlugPlayNotificationEx , se cancela el registro especificado y no se pueden producir más devoluciones de llamada.
La rutina IoUnregisterPlugPlayNotification es similar a IoUnregisterPlugPlayNotificationEx, salvo que no puede garantizar que no se puedan producir más devoluciones de llamada después de que se devuelva una llamada IoUnregisterPlugPlayNotification .
Con frecuencia, un controlador llama a IoUnregisterPlugPlayNotificationEx desde una rutina de devolución de llamada de notificación. En la mayoría de los casos, el controlador puede eliminar de forma segura el registro de la rutina de devolución de llamada de notificación de esta manera. Sin embargo, no es seguro que una rutina de devolución de llamada de notificación llame a IoUnregisterPlugPlayNotificationEx para anular el registro si se cumplen las dos condiciones:
El controlador establece la marca PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES en el valor del parámetro EventCategoryFlags proporcionado a la llamada IoRegisterPlugPlayNotification que registra la rutina de devolución de llamada de notificación.
La llamada IoRegisterPlugPlayNotification que registra la rutina de devolución de llamada de notificación aún no ha devuelto.
La rutina de devolución de llamada no debe llamar a ninguna rutina que pueda bloquear la ejecución del subproceso en el que se ejecuta la rutina de devolución de llamada. Por ejemplo, si una rutina de devolución de llamada mal diseñada coloca un elemento de trabajo que llama a IoUnregisterPlugPlayNotificationEx en la cola de elementos de trabajo y, a continuación, espera a que un subproceso de trabajo complete el elemento de trabajo, daría lugar a un interbloqueo del sistema operativo.
Los controladores deben cancelar primero el registro de una rutina de devolución de llamada de notificación y, a continuación, liberar cualquier búfer de contexto asociado a la rutina.
Un controlador no se puede descargar hasta que quite todos sus registros de notificación PnP porque cada registro activo contiene una referencia contada al objeto de controlador que representa la imagen cargada del controlador.
Para obtener más información, consulte Uso de la notificación PnP.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 7. |
Plataforma de destino | Universal |
Encabezado | wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Reglas de cumplimiento de DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |