Regla PnpSurpriseRemove (wdm)

La regla PnpSurpriseRemove especifica que el controlador no llama a IoDeleteDevice o IoDetachDevice mientras procesa una solicitud de IRP_MN_SURPRISE_REMOVAL .

El administrador de PnP envía la solicitud de IRP_MN_SURPRISE_REMOVAL para notificar a los controladores que un dispositivo ya no está disponible para las operaciones de E/S y que probablemente se haya quitado inesperadamente del equipo.

  • Todos los controladores PnP deben controlar IRP_MN_SURPRISE_REMOVAL solicitud.
  • El controlador no debe llamar a IoDeleteDevice o IoDetachDevice en objetos de dispositivo hasta que el IRP de IRP_MN_SURPRISE_REMOVAL se realice correctamente y se cierren todos los identificadores abiertos en el dispositivo.
  • A continuación, el administrador de PnP envía una solicitud de IRP_MN_REMOVE_DEVICE a la pila de dispositivos. En respuesta a la eliminación de IRP, los controladores desasocian sus objetos de dispositivo de la pila y los eliminan.

Para obtener más información sobre cómo un controlador debe responder a IRP_MN_SURPRISE_REMOVAL solicitud, consulte Control de una solicitud de IRP_MN_SURPRISE_REMOVAL.

Modelo de controlador: WDM

Cómo probar

En tiempo de compilación

Ejecute el comprobador de controladores estáticos y especifique la regla PnpSurpriseRemove .

Usa los pasos siguientes para ejecutar un análisis de tu código:
  1. Prepara el código (usa declaraciones de tipos de rol).
  2. Ejecuta el comprobador de controlador estático.
  3. Consulta y analiza los resultados.

Para obtener más información, consulte Uso del comprobador de controladores estáticos para buscar defectos en controladores.

Se aplica a

IoDeleteDeviceIoDetachDevice

Consulte también

Control de una solicitud de IRP_MN_SURPRISE_REMOVALanálisis de un controlador mediante herramientas de verificación y análisis de códigoIRP_MN_SURPRISE_REMOVALIRP_MN_REMOVE_DEVICE