Función WdfDeviceAssignS0IdleSettings (wdfdevice.h)
[Se aplica a KMDF y UMDF]
El método WdfDeviceAssignS0IdleSettings proporciona información proporcionada por el controlador que el marco usa cuando un dispositivo está inactivo y el sistema está en su estado de trabajo (S0).
Sintaxis
NTSTATUS WdfDeviceAssignS0IdleSettings(
[in] WDFDEVICE Device,
[in] PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
);
Parámetros
[in] Device
Identificador de un objeto de dispositivo de marco.
[in] Settings
Puntero a una estructura de WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS proporcionada por el autor de la llamada.
Valor devuelto
Si la operación se realiza correctamente, WdfDeviceAssignS0IdleSettings devuelve STATUS_SUCCESS. Entre los valores devueltos adicionales se incluyen:
Código devuelto | Descripción |
---|---|
|
El controlador de llamada no es el propietario de la directiva de energía del dispositivo. |
|
Se detecta un valor configuración no válido. |
|
El tamaño de la estructura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS es incorrecto. |
|
Este valor se devuelve si se produce una de las siguientes acciones:
|
El método podría devolver otros valores ntstatus de .
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
Observaciones
Si el controlador establece el miembro IdleTimeoutType de WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS en SystemManagedIdleTimeout o SystemManagedIdleTimeoutWithHint, debe llamar a WdfDeviceAssignS0IdleSettings antes de volver de EvtDeviceD0Entry. Normalmente, un controlador llama primero a WdfDeviceAssignS0IdleSettings desde EvtDriverDeviceAdd.
Se pueden realizar llamadas adicionales a WdfDeviceAssignS0IdleSettings en cualquier momento. Sin embargo, después de que el controlador establezca el valor del idleTimeoutType miembro en su primera llamada a WdfDeviceAssignS0IdleSettings, no debe cambiar este valor en llamadas posteriores a este método.
Si el controlador se registra para notificaciones asincrónicas en EvtDriverDeviceAdd (por ejemplo, llamando a PoRegisterPowerSettingCallback o IoRegisterPlugPlayNotification), el controlador no debe llamar posteriormente a WdfDeviceAssignS0IdleSettings desde la rutina de devolución de llamada del controlador que registró.
Para obtener más información, consulte compatibilidad con elde apagado inactivo.
Ejemplos
En el ejemplo de código siguiente se inicializa una estructura de WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, se establece un valor de tiempo de espera de inactividad de 10 segundos y se llama a 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 |
---|---|
de la plataforma de destino de | Universal |
versión mínima de KMDF | 1.0 |
versión mínima de UMDF | 2.0 |
encabezado de | wdfdevice.h (incluya Wdf.h) |
biblioteca de | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
irQL | <= DISPATCH_LEVEL |
reglas de cumplimiento de DDI | DriverCreate(kmdf), FDOPowerPolicyOwnerAPI(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NonFDONotPowerPolicyOwnerAPI(kmdf) |