Compartir a través de


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)

Consulte también

IoRegisterPlugPlayNotification

IoUnregisterPlugPlayNotification