WdfDeviceAssignS0IdleSettings-Funktion (wdfdevice.h)
[Gilt für KMDF und UMDF]
Die WdfDeviceAssignS0IdleSettings--Methode stellt vom Treiber bereitgestellte Informationen bereit, die das Framework verwendet, wenn ein Gerät im Leerlauf ist und das System in seinem Arbeitszustand (S0) arbeitet.
Syntax
NTSTATUS WdfDeviceAssignS0IdleSettings(
[in] WDFDEVICE Device,
[in] PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
);
Parameter
[in] Device
Ein Handle zu einem 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. |
|
Es wird ein ungültiger Einstellungen Wert erkannt. |
|
Die Größe der WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Struktur ist falsch. |
|
Dieser Wert wird zurückgegeben, wenn einer der folgenden Aktionen auftritt:
|
Die Methode gibt möglicherweise andere NTSTATUS-Wertezurück.
Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.
Bemerkungen
Wenn der Treiber den IdleTimeoutType Member von WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS auf SystemManagedIdleTimeout oder SystemManagedIdleTimeoutWithHintfestlegt, muss er WdfDeviceAssignS0IdleSettings aufrufen, bevor er von EvtDeviceD0Entryzurückgegeben wird. In der Regel ruft ein Treiber zuerst WdfDeviceAssignS0IdleSettings von EvtDriverDeviceAddauf.
Zusätzliche Aufrufe von WdfDeviceAssignS0IdleSettings können jederzeit erfolgen. Nachdem der Treiber jedoch den Wert des IdleTimeoutType Members im ersten Aufruf von WdfDeviceAssignS0IdleSettingsfestgelegt hat, darf dieser Wert in späteren Aufrufen dieser Methode nicht geändert werden.
Wenn sich der Treiber für asynchrone Benachrichtigungen in EvtDriverDeviceAdd registriert (z. B. durch Aufrufen PoRegisterPowerSettingCallback oder IoRegisterPlugPlayNotification), darf der Treiber nicht anschließend WdfDeviceAssignS0IdleSettings innerhalb der registrierten Treiberrückrufroutine aufrufen.
Weitere Informationen finden Sie unter Unterstützen von Power-Down-im Leerlauf.
Beispiele
Im folgenden Codebeispiel wird eine WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Struktur initialisiert, ein Leerlauftimeoutwert von 10 Sekunden festgelegt und WdfDeviceAssignS0IdleSettingsaufgerufen.
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- | Universal |
Minimale KMDF-Version | 1.0 |
Mindest-UMDF-Version | 2.0 |
Header- | wdfdevice.h (einschließen Wdf.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL- | <= DISPATCH_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), FDOPowerPolicyOwnerAPI(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NonFDONotPowerPolicyOwnerAPI(kmdf) |