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).
NTSTATUS WdfDeviceAssignS0IdleSettings(
[in] WDFDEVICE Device,
[in] PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
);
[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.
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.
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.
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;
}
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) |