Partilhar via


Tratamento de um pedido de IRP_MN_REMOVE_DEVICE

O gestor PnP usa este IRP para orientar os drivers a remover a representação de software de um dispositivo (objetos de dispositivo, entre outros). O gestor PnP envia este IRP quando um dispositivo foi removido de forma ordenada (por exemplo, iniciado por um utilizador no programa Unplug or Eject Hardware), de surpresa (um utilizador retira o dispositivo da ranhura sem aviso prévio) ou quando o utilizador solicita a atualização de controladores.

No Windows 2000 e sistemas posteriores, o gerenciador PnP envia esse IRP quando o Gerenciador de dispositivos desativa o dispositivo. No Windows 98/Me, o gestor PnP envia IRPs de parada em vez disso. Consulte Parando um dispositivo para obter detalhes.

O gerenciador PnP faz o seguinte antes de enviar esse IRP para os drivers de um dispositivo:

  • Envia IRP_MN_REMOVE_DEVICE solicitações para os filhos do dispositivo, se houver.

  • Notifica todos os componentes de modo de usuário e drivers de modo kernel registrados para notificação de que o dispositivo está sendo removido. O gestor PnP chama todos os componentes em modo de utilizador que foram registados para notificação do dispositivo de destino num identificador para o dispositivo e chama todos os drivers em modo kernel que foram registados para EventCategoryTargetDeviceChange.

  • (No Windows 2000 e sistemas posteriores) Se um sistema de arquivos estiver montado no dispositivo, o gerenciador PnP enviará uma solicitação de remoção para o sistema de arquivos e quaisquer filtros do sistema de arquivos. Em resposta, um sistema de arquivos normalmente desmonta o volume.

O controlador superior numa pilha de dispositivos manipula um IRP de remoção e passa-o para o controlador imediatamente inferior. O controlador do barramento principal para um dispositivo é o último controlador a executar as suas operações de remoção de dispositivo. Um driver processa a remoção de IRPs na sua rotina DispatchPnP .

Antes de um driver retornar com sucesso a uma solicitação IRP_MN_REMOVE_DEVICE, ele deve garantir que todos os recursos para o dispositivo estejam liberados. Este IRP pode ser a última chamada antes de o controlador ser descarregado.

Remover um dispositivo pode criar a necessidade de remover uma série de outros dispositivos. O gerenciador PnP coordena a remoção dos objetos de dispositivo adicionais do nível superior até o nível do dispositivo raiz.

Esta secção descreve:

Remover um dispositivo num driver de função

Remover um dispositivo num driver de filtro

Removendo um dispositivo em um driver de ônibus