Share via


Habilitar e desabilitar uma instância de interface do dispositivo

Depois de iniciar o dispositivo com êxito, o driver que registrou a interface chama IoSetDeviceInterfaceState para habilitar uma instância de interface. O driver passa o nome do link simbólico retornado por IoRegisterDeviceInterface junto com o valor booliano TRUE para habilitar a instância de interface.

Se o driver puder iniciar seu dispositivo com êxito, ele deverá chamar essa rotina durante o tratamento da solicitação de IRP_MN_START_DEVICE do gerenciador de Plug and Play (PnP).

Após a conclusão da solicitação de IRP_MN_START_DEVICE, o gerenciador PnP emite notificações de chegada da interface do dispositivo para todos os componentes do modo kernel ou do modo de usuário que os solicitaram. Para obter mais informações, consulte Registrando-se para notificação de alteração da interface do dispositivo.

Para desabilitar uma instância de interface do dispositivo, um driver chama IoSetDeviceInterfaceState, passando o SymbolicLinkName retornado por IoRegisterDeviceInterface e FALSE como o valor de Enable.

Um driver deve desabilitar as interfaces de um dispositivo ao manipular uma solicitação de IRP_MN_SURPRISE_REMOVAL ou IRP_MN_REMOVE_DEVICE para o dispositivo. Se um driver não desabilitar as interfaces de um dispositivo ao lidar com esses IRPs de remoção, ele não deverá tentar fazer isso posteriormente porque o gerenciador PnP desabilitará as interfaces quando remover o dispositivo.

Um driver não deve desabilitar as interfaces quando o dispositivo é interrompido (IRP_MN_STOP_DEVICE); Em vez disso, ele deve deixar todas as interfaces de dispositivo habilitadas e solicitações de E/S da fila até receber outra solicitação de IRP_MN_START_DEVICE . Da mesma forma, um driver não deve desabilitar suas interfaces quando o dispositivo é colocado em um estado de suspensão. Ele deve enfileirar solicitações de E/S até que o dispositivo seja ativado. Para obter mais informações, consulte Suporte a dispositivos que têm recursos de Wake-Up.