Função WdfDeviceAssignS0IdleSettings (wdfdevice.h)
[Aplica-se a KMDF e UMDF]
O método WdfDeviceAssignS0IdleSettings fornece informações fornecidas pelo driver que a estrutura usa quando um dispositivo está ocioso e o sistema está em seu estado de trabalho (S0).
Sintaxe
NTSTATUS WdfDeviceAssignS0IdleSettings(
[in] WDFDEVICE Device,
[in] PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
);
Parâmetros
[in] Device
Um identificador para um objeto de dispositivo de estrutura.
[in] Settings
Um ponteiro para uma estrutura de WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS fornecida pelo chamador.
Retornar valor
Se a operação for bem-sucedida, WdfDeviceAssignS0IdleSettings retornará STATUS_SUCCESS. Os valores de retorno adicionais incluem:
Código de retorno | Descrição |
---|---|
|
O driver de chamada não é o proprietário da política de energia do dispositivo. |
|
Um valor configurações inválido é detectado. |
|
O tamanho da estrutura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS está incorreto. |
|
Esse valor será retornado se ocorrer um dos seguintes procedimentos:
|
O método pode retornar outros valores NTSTATUS.
Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.
Comentários
Se o driver definir o membro IdleTimeoutType de WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS como SystemManagedIdleTimeout ou SystemManagedIdleTimeoutWithHint, ele deverá chamar WdfDeviceAssignS0IdleSettings antes de retornar de EvtDeviceD0Entry. Normalmente, um driver primeiro chama WdfDeviceAssignS0IdleSettings de EvtDriverDeviceAdd.
Chamadas adicionais para WdfDeviceAssignS0IdleSettings podem ser feitas a qualquer momento. No entanto, depois que o driver define o valor do membro IdleTimeoutType em sua primeira chamada para WdfDeviceAssignS0IdleSettings, ele não deve alterar esse valor em chamadas posteriores para esse método.
Se o driver se registrar para notificações assíncronas no EvtDriverDeviceAdd (por exemplo, chamando PoRegisterPowerSettingCallback ou IoRegisterPlugPlayNotification), o driver não deverá chamar WdfDeviceAssignS0IdleSettings de dentro da rotina de retorno de chamada do driver que ele registrou.
Para obter mais informações, consulte Suporte à energia ociosa.
Exemplos
O exemplo de código a seguir inicializa uma estrutura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS , define um valor de tempo limite ocioso de 10 segundos e chama WdfDeviceAssignS0IdleSettings.
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS idleSettings;
NTSTATUS status = STATUS_SUCCESS;
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(
&idleSettings,
IdleCanWakeFromS0
);
idleSettings.IdleTimeout = 10000;
status = WdfDeviceAssignS0IdleSettings(
device,
&idleSettings
);
if (!NT_SUCCESS(status)) {
return status;
}
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.0 |
Versão mínima do UMDF | 2,0 |
Cabeçalho | wdfdevice.h (inclua Wdf.h) |
Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
Regras de conformidade da DDI | DriverCreate(kmdf), FDOPowerPolicyOwnerAPI(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NonFDONotPowerPolicyOwnerAPI(kmdf) |