Transições de estado para dispositivos PnP
Em um sistema PnP, um dispositivo faz a transição por vários estados PnP conforme ele é configurado, iniciado, possivelmente interrompido para reequilibrar recursos e, possivelmente, removido. Esta seção fornece uma visão geral dos estados do dispositivo PnP. A visão geral é um roteiro para grande parte do suporte PnP necessário em um driver. Outras partes desta documentação descrevem cada transição de estado em detalhes.
A figura a seguir mostra os estados PnP de um dispositivo e como um dispositivo faz a transição de um estado para outro.
Começando na parte superior esquerda da figura anterior, um dispositivo PnP está fisicamente presente no sistema porque o usuário acabou de inserir o dispositivo ou o dispositivo estava presente no momento da inicialização. O dispositivo ainda não é conhecido pelo software do sistema.
Para iniciar a configuração de software para o dispositivo, o gerenciador PnP e o driver de barramento pai enumeram o dispositivo. O gerenciador PnP, possivelmente com a ajuda de componentes do modo de usuário, identifica os drivers para o dispositivo, incluindo o driver de função e quaisquer drivers de filtro opcionais. O gerenciador PnP chamará a rotina DriverEntry de cada driver se o driver ainda não estiver carregado. Para obter mais informações sobre como relatar e enumerar um dispositivo PnP, consulte Adicionando um dispositivo PnP a um sistema em execução.
Depois que um driver é inicializado, ele deve estar pronto para inicializar seus dispositivos. O gerenciador PnP chama a rotina AddDevice de um driver para cada dispositivo que o driver controla.
Quando um driver recebe uma solicitação de IRP_MN_START_DEVICE do gerenciador PnP, o driver inicia o dispositivo e está pronto para processar solicitações de E/S para o dispositivo. Para obter informações sobre como lidar com uma solicitação de IRP_MN_START_DEVICE , consulte Iniciando um dispositivo.
Se o gerenciador PnP precisar reconfigurar os recursos de hardware de um dispositivo ativo, ele enviará IRP_MN_QUERY_STOP_DEVICE e IRP_MN_STOP_DEVICE solicitações para os drivers do dispositivo. Depois de reconfigurar os recursos de hardware, o gerenciador PnP direciona os drivers para reiniciar o dispositivo enviando uma solicitação de IRP_MN_START_DEVICE . Para obter informações sobre como lidar com IRPs de parada, consulte Parando um dispositivo. (Os drivers de um dispositivo configurado para inicialização podem receber IRP_MN_QUERY_STOP_DEVICE e IRP_MN_STOP_DEVICE solicitações antes de o dispositivo ser iniciado, embora essa etapa não seja mostrada na figura anterior.)
No Windows 98/Me, o gerenciador de PnP também envia solicitações de IRP_MN_QUERY_STOP_DEVICE e IRP_MN_STOP_DEVICE quando um dispositivo está sendo desabilitado. Os drivers nesses sistemas também recebem uma solicitação de IRP_MN_STOP_DEVICE após um início com falha.
Quando um dispositivo PnP está sendo fisicamente removido do sistema ou já foi removido, o gerenciador PnP envia vários IRPs de remoção para os drivers do dispositivo, direcionando-os para remover a representação de software do dispositivo (objetos de dispositivo e assim por diante). Para obter informações sobre como lidar com a remoção de IRPs, consulte Removendo um dispositivo.
Em algum momento, depois que todos os dispositivos de um driver tiverem sido removidos, o gerenciador PnP chamará a rotina Descarregue do driver e descarregará o driver.