WdfDeviceAssignS0IdleSettings, fonction (wdfdevice.h)
[S’applique à KMDF et UMDF]
La méthode WdfDeviceAssignS0IdleSettings fournit des informations fournies par le pilote que le framework 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 pour un objet d’appareil d’infrastructure.
[in] Settings
Pointeur vers une structure de WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS fournie par l’appelant.
Valeur retournée
Si l’opération réussit, WdfDeviceAssignS0IdleSettings retourne STATUS_SUCCESS. Les valeurs de retour supplémentaires sont les suivantes :
Code de retour | Description |
---|---|
|
Le pilote appelant n’est pas le propriétaire de la stratégie d’alimentation de l’appareil. |
|
Une valeur 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.
Un bogue case activée 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 à partir d’EvtDeviceD0Entry. En règle générale, un pilote appelle d’abord WdfDeviceAssignS0IdleSettings à partir d’EvtDriverDeviceAdd.
Des appels supplémentaires à WdfDeviceAssignS0IdleSettings peuvent être effectués à tout moment. Toutefois, une fois que le pilote a défini 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 des notifications asynchrones dans EvtDriverDeviceAdd (par exemple en appelant PoRegisterPowerSettingCallback ou IoRegisterPlugPlayNotification), le pilote ne doit pas appeler par la suite WdfDeviceAssignS0IdleSettings à partir de la routine de rappel de pilote qu’il a inscrite.
Pour plus d’informations, consultez Prise en charge de la mise hors tension inactive.
Exemples
L’exemple de code suivant initialise une structure de 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;
}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
Version KMDF minimale | 1.0 |
Version UMDF minimale | 2.0 |
En-tête | wdfdevice.h (inclure 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) |