Bagikan melalui


Fungsi WdfDeviceAssignS0IdleSettings (wdfdevice.h)

[Berlaku untuk KMDF dan UMDF]

Metode WdfDeviceAssignS0IdleSettings menyediakan informasi yang disediakan driver yang digunakan kerangka kerja saat perangkat menganggur dan sistem dalam status berfungsi (S0).

Sintaks

NTSTATUS WdfDeviceAssignS0IdleSettings(
  [in] WDFDEVICE                              Device,
  [in] PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
);

Parameter

[in] Device

Handel ke objek perangkat kerangka kerja.

[in] Settings

Penunjuk ke struktur WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS yang disediakan penelepon.

Nilai kembali

Jika operasi berhasil, WdfDeviceAssignS0IdleSettings mengembalikan STATUS_SUCCESS. Nilai pengembalian tambahan meliputi:

Menampilkan kode Deskripsi
STATUS_INVALID_DEVICE_REQUEST
Driver panggilan bukan pemilik kebijakan daya perangkat.
STATUS_INVALID_PARAMETER
Nilai Pengaturan tidak valid terdeteksi.
STATUS_INFO_LENGTH_MISMATCH
Ukuran struktur WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS salah.
STATUS_POWER_STATE_INVALID
Nilai ini dikembalikan jika salah satu hal berikut ini terjadi:
  • Struktur WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS berisi status daya perangkat yang tidak valid.
  • Anggota IdleCaps dari struktur WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS menunjukkan perangkat dapat bangun sendiri, tetapi driver bus menunjukkan perangkat tidak dapat bangun sendiri.
  • Mulai dari KMDF versi 1.11 yang berjalan pada Windows 8, kerangka kerja memeriksa apakah firmware sistem dapat menangani sinyal bangun saat sistem dalam status daya menyala sepenuhnya (S0). Jika komputer gagal dalam pemeriksaan ini, WdfDeviceAssignS0IdleSettings mengembalikan STATUS_POWER_STATE_INVALID, dan perangkat tetap dalam status daya menyala sepenuhnya (D0) selama sistem tetap berada di S0.

    Dalam hal ini, driver tidak boleh mengembalikan nilai status kesalahan dari EvtDriverDeviceAdd atau panggilan balik runtime lainnya. Paling banyak, driver mungkin mencatat kesalahan yang menunjukkan bahwa perangkat akan menggunakan lebih banyak daya daripada biasanya.

 

Metode ini mungkin mengembalikan nilai NTSTATUS lainnya.

Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.

Keterangan

Jika driver mengatur anggota IdleTimeoutTypedari WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS ke SystemManagedIdleTimeout atau SystemManagedIdleTimeoutWithHint, driver harus memanggil WdfDeviceAssignS0IdleSettings sebelum kembali dari EvtDeviceD0Entry. Biasanya, driver pertama kali memanggil WdfDeviceAssignS0IdleSettings dari EvtDriverDeviceAdd.

Panggilan tambahan ke WdfDeviceAssignS0IdleSettings dapat dilakukan kapan saja. Namun, setelah driver menetapkan nilai anggota IdleTimeoutType dalam panggilan pertamanya ke WdfDeviceAssignS0IdleSettings, itu tidak boleh mengubah nilai ini dalam panggilan nanti ke metode ini.

Jika driver mendaftar untuk pemberitahuan asinkron di EvtDriverDeviceAdd (misalnya dengan memanggil PoRegisterPowerSettingCallback atau IoRegisterPlugPlayNotification), driver tidak boleh memanggil WdfDeviceAssignS0IdleSettings dari dalam rutinitas panggilan balik driver yang terdaftar.

Untuk informasi selengkapnya, lihat Mendukung Power-Down Menganggur.

Contoh

Contoh kode berikut menginisialisasi struktur WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS , menetapkan nilai batas waktu diam 10 detik, dan memanggil 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;
}

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1,0
Versi UMDF minimum 2.0
Header wdfdevice.h (termasuk Wdf.h)
Pustaka Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
Aturan kepatuhan DDI DriverCreate(kmdf), FDOPowerPolicyOwnerAPI(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NonFDONotPowerPolicyOwnerAPI(kmdf)

Lihat juga

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS

WdfDeviceAssignSxWakeSettings