Funzione WdfDeviceAssignS0IdleSettings (wdfdevice.h)
[Si applica a KMDF e UMDF]
Il metodo WdfDeviceAssignS0IdleSettings fornisce informazioni fornite dal driver che il framework usa quando un dispositivo è inattiva e il sistema si trova nello stato di lavoro (S0).
Sintassi
NTSTATUS WdfDeviceAssignS0IdleSettings(
[in] WDFDEVICE Device,
[in] PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
);
Parametri
[in] Device
Handle per un oggetto dispositivo framework.
[in] Settings
Puntatore a una struttura di WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS fornita dal chiamante.
Valore restituito
Se l'operazione ha esito positivo, WdfDeviceAssignS0IdleSettings restituisce STATUS_SUCCESS. I valori restituiti aggiuntivi includono:
Codice restituito | Descrizione |
---|---|
|
Il driver chiamante non è il proprietario del criterio di alimentazione del dispositivo. |
|
Viene rilevato un valore Impostazioni non valido. |
|
Le dimensioni della struttura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS non sono corrette. |
|
Questo valore viene restituito se si verifica una delle operazioni seguenti:
|
Il metodo potrebbe restituire altri valori NTSTATUS.
Un controllo di bug si verifica se il driver fornisce un handle di oggetti non valido.
Commenti
Se il driver imposta il membro IdleTimeoutType di WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS su SystemManagedIdleTimeout o SystemManagedIdleTimeoutWithHint, deve chiamare WdfDeviceAssignS0IdleSettings prima di restituire da EvtDeviceD0Entry. In genere, un driver chiama prima WdfDeviceAssignS0IdleSettings da EvtDriverDeviceAdd.
È possibile effettuare chiamate aggiuntive a WdfDeviceAssignS0IdleSettings in qualsiasi momento. Tuttavia, dopo che il driver imposta il valore del membro IdleTimeoutType nella prima chiamata a WdfDeviceAssignS0IdleSettings, non deve modificare questo valore nelle chiamate successive a questo metodo.
Se il driver registra le notifiche asincrone in EvtDriverDeviceAdd (ad esempio chiamando PoRegisterPowerSettingCallback o IoRegisterPlugPlayNotification), il driver non deve successivamente chiamare WdfDeviceAssignS0IdleSettings dall'interno della routine di callback del driver registrata.
Per altre informazioni, vedere Supporto dell'alimentazione inattiva.
Esempio
L'esempio di codice seguente inizializza una struttura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS , imposta un valore di timeout inattiva di 10 secondi e chiama 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;
}
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.0 |
Versione UMDF minima | 2,0 |
Intestazione | wdfdevice.h (includere Wdf.h) |
Libreria | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
Regole di conformità DDI | DriverCreate(kmdf), FDOPowerPolicyOwnerAPI(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NonFDONotPowerPolicyOwnerAPI(kmdf) |