Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Esse IRP retorna os valores de sequência de energia de um dispositivo.
Código principal
Quando enviado
Um driver envia esse IRP como uma otimização para determinar se o dispositivo realmente inseriu um estado de energia específico. O suporte para esse IRP é opcional.
Para enviar esse IRP, um driver deve chamar IoAllocateIrp para alocar o IRP, especificando o código IRP principal IRP_MJ_POWER e o código IRP secundário IRP_MN_POWER_SEQUENCE. Em seguida, o driver deve chamar IoCallDriver (Windows Vista) ou PoCallDriver (Windows Server 2003, Windows XP e Windows 2000) para passar o IRP para o próximo driver inferior. O power manager não pode enviar esse IRP.
Os remetentes desse IRP devem estar em execução em IRQL <= DISPATCH_LEVEL.
Parâmetros de Entrada
Nenhum.
Parâmetros de saída
Parameters.PowerSequence aponta para uma estrutura POWER_SEQUENCE com os seguintes membros:
SequenceD1
Número de vezes que o dispositivo esteve no estado de energia D1 ou inferior.
SequenceD2
Número de vezes que o dispositivo esteve no estado de energia D2 ou inferior.
SequenceD3
Número de vezes que o dispositivo esteve no estado de energia D3.
Os valores de sequência acompanham o número mínimo de vezes que um dispositivo esteve no estado de energia correspondente ou em um estado de energia inferior.
O driver de barramento incrementa os valores em SequenceD1, SequenceD2 e SequenceD3 pelo menos cada vez que o dispositivo entra no estado de energia correspondente ou em um estado de energia inferior.
Bloco de Status de E/S
Um driver define Irp-IoStatus.Status> como STATUS_SUCCESS para indicar que ele retornou as informações solicitadas ou para STATUS_NOT_IMPLEMENTED para indicar que ele não dá suporte a esse IRP.
Operação
Esse IRP retorna os valores de sequência de energia de um dispositivo. Opcionalmente, os motoristas de barramento podem lidar com isso; drivers de função e filtro podem, opcionalmente, enviá-lo.
Para um dispositivo que leva muito tempo para alterar o estado, esse IRP fornece uma otimização útil. Sempre que o dispositivo altera seu estado de energia, seu driver de barramento incrementa o valor de sequência para esse estado de energia. O driver do barramento inicializa os valores de sequência no momento da inicialização e os incrementa continuamente posteriormente; eles não precisam ser redefinidos para zero.
Um proprietário de política de dispositivo pode enviar esse IRP uma vez para obter os valores de sequência antes de desligar o dispositivo e, mais uma vez, obter novos valores ao restaurar a energia para o dispositivo. Comparando os dois conjuntos de valores, o driver pode determinar se o dispositivo realmente inseriu o estado de menor potência. Se o dispositivo não perder energia, o driver poderá evitar uma reinicialização demorada quando o dispositivo retornar ao estado D0.
Por exemplo, se o dispositivo demorar muito para restaurar a energia ao atingir o estado D2, o driver poderá armazenar o valor SequenceD2 antes de definir o estado do dispositivo como D2 ou inferior. Posteriormente, quando a energia está sendo restaurada para o dispositivo, o driver pode comparar o novo valor SequenceD2 com seu valor armazenado para determinar se o estado do dispositivo realmente caiu abaixo de D2. Se os valores corresponderem, o dispositivo não inseriu o estado de energia D2 ou um estado inferior e o driver poderá evitar a reinicialização do dispositivo.
Requisitos
parâmetro |
Wdm.h (inclua Wdm.h, Ntddk.h ou Ntifs.h) |