Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[S’applique à KMDF et UMDF]
La méthode WdfDeviceAssignS0IdleSettings fournit des informations fournies par le pilote que l’infrastructure utilise lorsqu’un appareil est inactif et que le système est dans son état de fonctionnement (S0).
Syntaxe
NTSTATUS WdfDeviceAssignS0IdleSettings(
[in] WDFDEVICE Device,
[in] PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
);
Paramètres
[in] Device
Handle vers un objet d’appareil framework.
[in] Settings
Pointeur vers une structure WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS fournie par l’appelant.
Valeur de retour
Si l’opération réussit, WdfDeviceAssignS0IdleSettings retourne STATUS_SUCCESS. Les valeurs de retour supplémentaires sont les suivantes :
| Retourner le code | Description |
|---|---|
|
Le pilote appelant n’est pas le propriétaire de la stratégie d’alimentation de l’appareil. |
|
Une valeur de Settings non valide est détectée. |
|
La taille de la structure WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS est incorrecte. |
|
Cette valeur est retournée si l’une des opérations suivantes se produit :
|
La méthode peut retourner d’autres valeurs NTSTATUS .
Une vérification de bogue se produit si le pilote fournit un handle d’objet non valide.
Remarques
Si le pilote définit le membre IdleTimeoutType de WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS sur SystemManagedIdleTimeout ou SystemManagedIdleTimeoutWithHint, il doit appeler WdfDeviceAssignS0IdleSettings avant de revenir de EvtDeviceD0Entry. En règle générale, un pilote appelle WdfDeviceAssignS0IdleSettings à partir de EvtDriverDeviceAdd.
Des appels supplémentaires à WdfDeviceAssignS0IdleSettings peuvent être effectués à tout moment. Toutefois, après que le pilote a définit la valeur du membre IdleTimeoutType dans son premier appel à WdfDeviceAssignS0IdleSettings, il ne doit pas modifier cette valeur dans les appels ultérieurs à cette méthode.
Si le pilote s’inscrit pour les notifications asynchrones dans EvtDriverDeviceAdd (par exemple, en appelant PoRegisterPowerSettingCallback ou IoRegisterPlugPlayNotification), le pilote ne doit pas appeler WdfDeviceAssignS0IdleSettings à partir de la routine de rappel du pilote qu’il a inscrite.
Pour plus d’informations, consultez Prise en charge de l'de mise hors tension inactive.
Exemples
L’exemple de code suivant initialise une structure WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, définit une valeur de délai d’inactivité de 10 secondes et appelle 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;
}
Exigences
| Exigence | Valeur |
|---|---|
| plateforme cible | Universel |
| version minimale de KMDF | 1.0 |
| version minimale de UMDF | 2.0 |
| d’en-tête | wdfdevice.h (include Wdf.h) |
| bibliothèque | Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF) |
| IRQL | <= DISPATCH_LEVEL |
| règles de conformité DDI | DriverCreate(kmdf), FDOPowerPolicyOwnerAPI(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NonFDONotPowerPolicyOwnerAPI(kmdf) |