Estados de energia do dispositivo USB
Este artigo descreve os estados de dispositivo do WDM (Windows Driver Model) que devem ser utilizados para os estados de energia do dispositivo USB, conforme indicado na seção 9.1 da especificação do Barramento Serial Universal 2.0.
Os estados de energia do dispositivo USB (conforme especificado na seção 9.1 da especificação Universal Serial Bus 2.0) podem ser agrupados em três categorias gerais:
- Conectado: o dispositivo está conectado, mas não totalmente alimentado.
- Ligado: o dispositivo está em um dos estados totalmente alimentados: Padrão, Endereço ou Configurado.
- Suspenso: o dispositivo está no estado Ocioso e operando com pouca energia.
Não existe uma correlação direta entre os estados de energia do dispositivo estabelecidos no modelo de energia WDM e os definidos pelo padrão USB. Por exemplo, os termos suspenso e ocioso têm significados específicos na especificação USB, porém, esses termos são usados com frequência de forma diferente no modelo de energia WDM. Os drivers de cliente do Windows podem colocar um dispositivo USB no estado Suspenso. Para obter mais informações, consulte Suspensão seletiva USB. Quando um driver cliente estiver pronto para suspender seu dispositivo, ele instruirá o driver de barramento a deixá-lo ocioso. Para ver uma discussão de solicitações de inatividade, consulte Suspensão seletiva de USB.
Os estados de energia do dispositivo no modelo WDM podem ser resumidos da seguinte forma:
- D0 — O estado de funcionamento. O dispositivo é totalmente alimentado.
- D1/D2 — Os estados de repouso intermediários. Esses estados permitem que o dispositivo seja armado para o despertar remoto.
- D3 — O estado de repouso mais profundo. Os dispositivos no estado D3 não podem ser configurados para ativação remota.
Para ver uma discussão completa dos estados de energia do dispositivo no modelo de energia WDM, consulte Estados de energia do dispositivo.
O modelo de energia WDM usa o termo armar dispositivos para o despertar remoto. Armar é uma operação de software que normalmente, mas nem sempre, leva à operação de hardware de habilitar o recurso de despertar remoto em um dispositivo USB. A operação do software WDM que arma um dispositivo para o despertar remoto é o IRP de despertar de espera (IRP_MN_WAIT_WAKE). Para obter mais informações sobre este IRP, consulte Trabalhar com dispositivos que têm recursos de ativação.
Para obter uma explicação da relação entre essa operação de software e a ativação do recurso de despertar remoto USB, consulte Despertar remoto de dispositivos USB.
Essa seção contém os seguintes procedimentos:
- Alterando o estado de energia de um dispositivo não composto
- Alterando o estado de energia de um dispositivo composto
- Tópicos relacionados
Alterando o estado de energia de um dispositivo não composto
O gerenciador de políticas de energia para um dispositivo USB é responsável por definir o estado de energia do dispositivo. O gerenciador de política de energia define o estado de energia emitindo um IRP de energia WDM (IRP_MN_SET_POWER). Para obter mais informações sobre o gerenciador de política de energia, consulte Propriedade de política de energia.
As ações executadas pelo driver de barramento dependem do nível de energia do dispositivo solicitado pelo gerenciador de políticas de energia. A seguir estão listadas as ações que o driver de barramento executa para cada nível de solicitação de energia definida:
D0
O driver de barramento executa as seguintes tarefas:
- Garante que todos os hubs USB upstream estejam alimentados e prontos para receber solicitações.
- Retomará a porta desmarcando o recurso PORT_SUSPEND, se a porta USB do dispositivo estiver suspensa.
- Concluirá o IRP ocioso do dispositivo com STATUS_SUCCESS, se houver um pendente.
- Desarmará o dispositivo para despertar remoto se ele estiver armado.
D1/D2
O driver de barramento executa as seguintes tarefas:
- Armará o dispositivo para o despertar remoto, se um IRP de despertar de espera (IRP_MN_WAIT_WAKE) estiver pendente.
- Suspende a porta USB do dispositivo definindo o recurso PORT_SUSPEND.
D3
O driver de barramento executa as seguintes tarefas:
- Suspende a porta USB do dispositivo definindo o recurso PORT_SUSPEND.
- Concluirá o IRP de despertar de espera do dispositivo com STATUS_POWER_STATE_INVALID, se houver um pendente.
- Concluirá o IRP inativo do dispositivo (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) com STATUS_POWER_STATE_INVALID, se estiver pendente.
Alterando o estado de energia de um dispositivo composto
Um driver cliente para uma interface em um dispositivo composto deve compartilhar o estado de energia do dispositivo composto com os drivers cliente para as outras interfaces no dispositivo. Assim, um driver cliente para uma interface não pode colocar o dispositivo composto em um estado de energia mais baixo sem impactar outras interfaces no dispositivo. O Driver pai genérico de USB (Usbccgp.sys) leva as seguintes ações quando um driver cliente da interface envia uma solicitação IRP_MN_SET_POWER.
D0
O driver de barramento executa as seguintes tarefas:
- Garante que todos os hubs USB upstream estejam alimentados e prontos para receber solicitações.
- Retomará a porta desmarcando o recurso PORT_SUSPEND, se a porta USB do dispositivo estiver suspensa.
- Concluirá o IRP ocioso do driver cliente com STATUS_SUCCESS, se houver um pendente.
D1/D2
O driver de barramento não toma nenhuma atitude.
D3
O driver de barramento executa as seguintes tarefas:
- Concluirá o IRP de despertar de espera do driver do cliente (IRP_MN_WAIT_WAKE) com STATUS_POWER_STATE_INVALID, se houver um pendente.
- Concluirá o IRP inativo do driver cliente (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) com STATUS_POWER_STATE_INVALID, se estiver pendente.
O driver pai genérico suspende a porta USB para o dispositivo quando uma das seguintes condições é verdadeira:
- O sistema está em transição para um estado de menor potência.
- Os drivers cliente para todas as funções no dispositivo composto começaram a suspensão seletiva.