Función IoReportTargetDeviceChange (wdm.h)

La rutina IoReportTargetDeviceChange notifica al administrador de PnP que se ha producido un evento personalizado en un dispositivo.

Sintaxis

NTSTATUS IoReportTargetDeviceChange(
  [in] PDEVICE_OBJECT PhysicalDeviceObject,
  [in] PVOID          NotificationStructure
);

Parámetros

[in] PhysicalDeviceObject

Puntero al PDO del dispositivo que se está notificando.

[in] NotificationStructure

Puntero a una estructura de TARGET_DEVICE_CUSTOM_NOTIFICATION proporcionada por el autor de la llamada que describe el evento personalizado. El administrador de PnP envía esta estructura a los controladores registrados para la notificación del evento.

NotificationStructure. FileObject debe ser NULL. NotificationStructure. El evento debe contener el GUID personalizado para el evento. Los demás campos de NotificationStructure deben rellenarse según corresponda para el evento personalizado.

El administrador de PnP rellena NotificationStructure. Campo FileObject cuando envía notificaciones a los registradores.

Valor devuelto

IoReportTargetDeviceChange devuelve STATUS_SUCCESS o un estado de error adecuado. Entre los posibles valores de estado de error se incluyen los siguientes.

Código devuelto Descripción
STATUS_INVALID_DEVICE_REQUEST
El autor de la llamada especificó un evento PnP del sistema, como GUID_TARGET_DEVICE_QUERY_REMOVE. Esta rutina solo es para eventos personalizados.

Comentarios

Después de que IoReportTargetDeviceChange notifique al administrador de PnP que se ha producido un evento personalizado en un dispositivo, el administrador de PnP envía una notificación del evento a los controladores registrados para la notificación en el dispositivo. No use esta rutina para notificar eventos PnP del sistema, como GUID_TARGET_DEVICE_REMOVE_COMPLETE.

Un controlador que define un evento de dispositivo personalizado llama a IoReportTargetDeviceChange para informar al administrador de PnP de que se ha producido el evento personalizado. La notificación personalizada se puede usar para eventos como un cambio de etiqueta de volumen.

Un controlador debe llamar a la forma asincrónica de esta rutina , IoReportTargetDeviceChangeAsynchronous, en lugar de esta rutina, para evitar interbloqueos.

Algunos componentes del modo kernel pueden llamar a esta rutina sincrónica. Por ejemplo, un sistema de archivos puede llamar a IoReportTargetDeviceChange para informar de un evento personalizado "obtener el volumen" cuando un componente intenta abrir el volumen para el acceso exclusivo. Los clientes que se registran para recibir notificaciones en volúmenes del sistema de archivos tienen cuidado de no solicitar una apertura exclusiva en una rutina de devolución de llamada de notificación PnP.

La estructura de notificación personalizada contiene un evento definido por el controlador con su propio GUID. Los escritores de controladores pueden generar GUID con Uuidgen.exe o Guidgen.exe (que se incluyen en el Microsoft Windows SDK).

Los autores de llamadas de IoReportTargetDeviceChange deben ejecutarse en IRQL = PASSIVE_LEVEL en el contexto de un subproceso del sistema. Para notificar un cambio de dispositivo de destino desde irQL > PASSIVE_LEVEL, llame a IoReportTargetDeviceChangeAsynchronous.

IoReportTargetDeviceChange no es compatible con Windows 98/Me; devuelve STATUS_NOT_IMPLEMENTED.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 2000.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (consulte la sección Comentarios)
Reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte también

IoReportTargetDeviceChangeAsynchronous

TARGET_DEVICE_CUSTOM_NOTIFICATION