WdfDeviceAssignS0IdleSettings-Funktion (wdfdevice.h)
[Gilt für KMDF und UMDF]
Die WdfDeviceAssignS0IdleSettings-Methode stellt vom Treiber bereitgestellte Informationen bereit, die das Framework verwendet, wenn sich ein Gerät im Leerlauf befindet und sich das System im Arbeitszustand (S0) befindet.
Syntax
NTSTATUS WdfDeviceAssignS0IdleSettings(
[in] WDFDEVICE Device,
[in] PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
);
Parameter
[in] Device
Ein Handle für ein Framework-Geräteobjekt.
[in] Settings
Ein Zeiger auf eine vom Aufrufer bereitgestellte WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS-Struktur .
Rückgabewert
Wenn der Vorgang erfolgreich ist, gibt WdfDeviceAssignS0IdleSettings STATUS_SUCCESS zurück. Weitere Rückgabewerte sind:
Rückgabecode | Beschreibung |
---|---|
|
Der aufrufende Treiber ist nicht der Besitzer der Energierichtlinie des Geräts. |
|
Ein ungültiger Einstellungswert wird erkannt. |
|
Die Größe der WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS-Struktur ist falsch. |
|
Dieser Wert wird zurückgegeben, wenn einer der folgenden Fehler auftritt:
|
Die -Methode gibt möglicherweise andere NTSTATUS-Werte zurück.
Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.
Hinweise
Wenn der Treiber das IdleTimeoutType-Element von WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS auf SystemManagedIdleTimeoutout oder SystemManagedIdleTimeoutWithHint festlegt, muss er WdfDeviceAssignS0IdleSettings aufrufen, bevor er von EvtDeviceD0Entry zurückgibt. In der Regel ruft ein Treiber zuerst WdfDeviceAssignS0IdleSettings von EvtDriverDeviceAdd auf.
Zusätzliche Aufrufe von WdfDeviceAssignS0IdleSettings können jederzeit durchgeführt werden. Nachdem der Treiber jedoch den Wert des IdleTimeoutType-Elements in seinem ersten Aufruf von WdfDeviceAssignS0IdleSettings festgelegt hat, darf er diesen Wert in späteren Aufrufen dieser Methode nicht ändern.
Wenn sich der Treiber für asynchrone Benachrichtigungen in EvtDriverDeviceAdd registriert (z. B. durch Aufrufen von PoRegisterPowerSettingCallback oder IoRegisterPlugPlayNotification), darf der Treiber WdfDeviceAssignS0IdleSettings anschließend nicht innerhalb der registrierten Treiberrückrufroutine aufrufen.
Weitere Informationen finden Sie unter Unterstützung des Herunterschaltens im Leerlauf.
Beispiele
Im folgenden Codebeispiel wird eine WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS-Struktur initialisiert, ein Leerlauftimeoutwert von 10 Sekunden festgelegt und WdfDeviceAssignS0IdleSettings aufgerufen.
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;
}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
KMDF-Mindestversion | 1.0 |
UMDF-Mindestversion | 2.0 |
Kopfzeile | wdfdevice.h (einschließen von Wdf.h) |
Bibliothek | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), FDOPowerPolicyOwnerAPI(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NonFDONotPowerPolicyOwnerAPI(kmdf) |