Fungsi PoRegisterDeviceForIdleDetection (wdm.h)

Rutinitas PoRegisterDeviceForIdleDetection mengaktifkan atau membatalkan deteksi diam dan menetapkan nilai batas waktu diam untuk perangkat.

Sintaks

PULONG PoRegisterDeviceForIdleDetection(
  [in] PDEVICE_OBJECT     DeviceObject,
  [in] ULONG              ConservationIdleTime,
  [in] ULONG              PerformanceIdleTime,
  [in] DEVICE_POWER_STATE State
);

Parameter

[in] DeviceObject

Penunjuk ke DEVICE_OBJECT yang dibuat driver untuk perangkat. Pada sistem Windows 2000 dan yang lebih baru, parameter ini dapat menunjuk ke objek perangkat fisik (PDO) atau objek perangkat fungsional (FDO). Pada Windows 98/Me, parameter ini harus menunjuk ke PDO perangkat yang mendasar.

[in] ConservationIdleTime

Mengatur nilai waktu habis (dalam detik) untuk diterapkan saat kebijakan daya sistem mengoptimalkan konservasi energi. Tentukan nol untuk menonaktifkan deteksi diam saat kebijakan konservasi berlaku.

[in] PerformanceIdleTime

Mengatur nilai waktu habis (dalam detik) untuk diterapkan saat kebijakan daya sistem mengoptimalkan performa. Tentukan nol untuk menonaktifkan deteksi diam saat kebijakan performa berlaku.

[in] State

Menentukan status daya perangkat yang akan diminta dalam permintaan IRP_MN_SET_POWER saat ConservationIdleTime atau PerformanceIdleTime telah terpenuhi. Nilai yang mungkin adalah nilai DEVICE_POWER_STATE .

Nilai kembali

PoRegisterDeviceForIdleDetection mengembalikan pointer ke penghitung diam untuk menunjukkan bahwa deteksi diam telah diaktifkan. Ini mengembalikan NULL untuk menunjukkan bahwa deteksi diam telah dinonaktifkan, bahwa penghitung diam tidak dapat dialokasikan, atau bahwa salah satu atau kedua nilai waktu habis tidak valid.

Keterangan

PoRegisterDeviceForIdleDetection memungkinkan driver untuk menggunakan mekanisme deteksi menganggur yang disediakan oleh manajer daya. Driver memanggil PoRegisterDeviceForIdleDetection karena salah satu alasan berikut:

  • Untuk mengaktifkan deteksi diam untuk perangkat dan mengatur nilai batas waktu menganggur awal
  • Untuk mengubah nilai batas waktu diam untuk perangkat
  • Untuk menonaktifkan deteksi diam untuk perangkat
Setelah mengaktifkan perangkat untuk deteksi diam, driver memanggil [PoSetDeviceBusy](./nf-wdm-posetdevicebusy.md) setiap kali perangkat digunakan, melewati pointer idle non-NULL yang dikembalikan oleh PoRegisterDeviceForIdleDetection. Memanggil PoSetDeviceBusy memulai ulang hitungan mundur diam. Perhatikan bahwa driver tidak boleh meneruskan penunjuk NULL ke PoSetDeviceBusy.

Setiap kali perangkat memenuhi nilai batas waktu diam saat ini, manajer daya mengirimkan permintaan IRP_MN_SET_POWER ke bagian atas tumpukan perangkat, menentukan status daya perangkat. Sebagai respons terhadap IRP, setiap driver melakukan tugas khusus perangkat yang diperlukan sebelum transisi status daya, lalu meneruskan IRP ke driver berikutnya yang lebih rendah. Ketika IRP mencapai driver bus, driver tersebut menempatkan perangkat dalam status daya yang diminta lebih rendah dan menyelesaikan IRP.

PoRegisterDeviceForIdleDetection menetapkan nilai waktu habis untuk konservasi dan performa. Nilai ConservationIdleTime berlaku ketika kebijakan daya sistem mengoptimalkan konservasi; nilai PerformanceIdleTime berlaku saat kebijakan daya sistem mengoptimalkan performa. Biasanya, kebijakan yang berlaku tergantung pada sumber daya: saat berjalan dengan daya AC, sistem mengoptimalkan performa, dan saat menjalankan baterai, sistem mengoptimalkan konservasi.

Perangkat tertentu dapat menentukan nilai batas waktu -1 untuk menggunakan batas waktu kebijakan daya standar untuk kelas perangkat mereka. Nilai batas waktu standar menyediakan integrasi sistem yang lebih baik untuk kelas perangkat standar yang didukung. Saat ini, WDM mendukung fitur ini untuk perangkat jenis FILE_DEVICE_DISK dan FILE_DEVICE_MASS_STORAGE. PoRegisterDeviceForIdleDetection mengembalikan NULL jika -1 ditentukan untuk perangkat dengan jenis yang tidak didukung. (Untuk informasi tentang jenis perangkat, lihat Menentukan Jenis Perangkat.)

Hanya satu deteksi diam yang dapat diatur per perangkat. Panggilan berikutnya ke PoRegisterDeviceForIdleDetection mengubah nilai deteksi menganggur.

Jika ConservationIdleTime dan PerformanceIdleTime adalah nol, rutinitas ini membatalkan semua deteksi diam untuk perangkat dan mengembalikan NULL.

PoRegisterDeviceForIdleDetection dapat membebaskan driver dari kebutuhan untuk melakukan deteksi diamnya sendiri. Namun, driver juga dapat menerapkan deteksi diam mereka sendiri.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 2000.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Lihat juga

IRP

IRP_MN_SET_POWER

PoSetDeviceBusy