Função PoRegisterDeviceForIdleDetection (ntifs.h)
A rotina PoRegisterDeviceForIdleDetection habilita ou cancela a detecção ociosa e define valores de tempo limite ociosos para um dispositivo.
Sintaxe
PULONG PoRegisterDeviceForIdleDetection(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG ConservationIdleTime,
[in] ULONG PerformanceIdleTime,
[in] DEVICE_POWER_STATE State
);
Parâmetros
[in] DeviceObject
Um ponteiro para o DEVICE_OBJECT criado pelo driver para o dispositivo. Esse parâmetro pode apontar para um PDO (objeto de dispositivo físico) ou um FDO (objeto de dispositivo funcional).
[in] ConservationIdleTime
Define o valor de tempo limite (em segundos) a ser aplicado quando a política de energia do sistema otimiza para conservação de energia. Especifique zero para desabilitar a detecção ociosa quando a política de conservação estiver em vigor.
[in] PerformanceIdleTime
Define o valor de tempo limite (em segundos) a ser aplicado quando a política de energia do sistema otimiza para o desempenho. Especifique zero para desabilitar a detecção ociosa quando a política de desempenho estiver em vigor.
[in] State
Especifica o estado de energia do dispositivo a ser solicitado em uma solicitação de IRP_MN_SET_POWER quando ConservationIdleTime ou PerformanceIdleTime tiver sido atendido. Os valores possíveis são os valores DEVICE_POWER_STATE .
Retornar valor
PoRegisterDeviceForIdleDetection retorna um ponteiro para o contador ocioso para indicar que a detecção ociosa foi habilitada. Ele retorna NULL para indicar que a detecção ociosa foi desabilitada, que um contador ocioso não pôde ser alocado ou que um ou ambos os valores de tempo limite eram inválidos.
Comentários
PoRegisterDeviceForIdleDetection permite que os drivers usem o mecanismo de detecção ociosa fornecido pelo power manager. Os drivers chamam PoRegisterDeviceForIdleDetection por qualquer um dos seguintes motivos:
- Para habilitar a detecção ociosa para o dispositivo e definir valores iniciais de tempo limite ocioso.
- Para alterar os valores de tempo limite ociosos de um dispositivo.
- Para desabilitar a detecção ociosa para um dispositivo.
Depois de habilitar um dispositivo para detecção ociosa, um driver chama PoSetDeviceBusy sempre que o dispositivo está em uso, passando o ponteiro ocioso não NULL retornado por PoRegisterDeviceForIdleDetection. Chamar PoSetDeviceBusy reinicia a contagem regressiva ociosa. Observe que um driver não deve passar um ponteiro NULL para PoSetDeviceBusy.
Sempre que o dispositivo satisfaz o valor de tempo limite ocioso atual, o power manager envia uma solicitação IRP_MN_SET_POWER para a parte superior da pilha do dispositivo, especificando o estado de energia do dispositivo. Em resposta ao IRP, cada driver executa todas as tarefas específicas do dispositivo necessárias antes da transição do estado de energia e, em seguida, passa o IRP para o driver mais baixo. Quando o IRP atinge o motorista do ônibus, esse driver coloca o dispositivo no estado de energia inferior solicitado e conclui o IRP.
PoRegisterDeviceForIdleDetection define valores de tempo limite para conservação e desempenho. O valor ConservationIdleTime se aplica quando a política de energia do sistema otimiza para conservação; o valor PerformanceIdleTime se aplica quando a política de energia do sistema otimiza o desempenho. Normalmente, a política aplicável depende da fonte de alimentação: ao executar com energia AC, o sistema otimiza o desempenho e, ao executar uma bateria, o sistema otimiza para conservação.
Determinados dispositivos podem especificar valores de tempo limite de -1 para usar os tempos limite de política de energia padrão para sua classe de dispositivo. Os valores de tempo limite padrão fornecem uma melhor integração do sistema para classes de dispositivo padrão com suporte. No momento, o WDM dá suporte a esse recurso para dispositivos do tipo FILE_DEVICE_DISK e FILE_DEVICE_MASS_STORAGE. PoRegisterDeviceForIdleDetection retornará NULL se -1 for especificado para um dispositivo de um tipo sem suporte. Para obter informações sobre tipos de dispositivo, consulte Especificando tipos de dispositivo.
Somente uma detecção ociosa pode ser definida por dispositivo. Chamadas subsequentes para PoRegisterDeviceForIdleDetection alteram os valores de detecção ociosos.
Se ConservationIdleTime e PerformanceIdleTime forem zero, essa rotina cancelará toda a detecção ociosa para o dispositivo e retornará NULL.
PoRegisterDeviceForIdleDetection pode liberar um driver da necessidade de executar sua própria detecção ociosa. No entanto, os drivers também podem implementar sua própria detecção ociosa.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 |
Plataforma de Destino | Universal |
Cabeçalho | ntifs.h (inclui Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de