Bagikan melalui


Fungsi PoRegisterDeviceForIdleDetection (ntifs.h)

Rutinitas PoRegisterDeviceForIdleDetection memungkinkan atau membatalkan deteksi menganggur dan menetapkan nilai batas waktu menganggur 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. Parameter ini dapat menunjuk ke objek perangkat fisik (PDO) atau objek perangkat fungsi (FDO).

[in] ConservationIdleTime

Menetapkan 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 penunjuk 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 menggunakan mekanisme deteksi diam 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 setiap kali perangkat digunakan, melewati penunjuk diam non-NULL yang dikembalikan oleh PoRegisterDeviceForIdleDetection. Memanggil PoSetDeviceBusy memulai ulang hitungan mundur diam. Perhatikan bahwa driver tidak boleh meneruskan pointer NULL ke PoSetDeviceBusy.

Setiap kali perangkat memenuhi nilai batas waktu diam saat ini, manajer daya mengirim permintaan IRP_MN_SET_POWER ke bagian atas tumpukan perangkat, menentukan status daya perangkat. Sebagai respons terhadap IRP, setiap driver melakukan tugas khusus perangkat apa pun yang diperlukan sebelum transisi status daya, lalu meneruskan IRP ke driver berikutnya yang lebih rendah. Ketika IRP mencapai sopir 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 waktu habis -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 diam.

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 Windows 2000
Target Platform Universal
Header ntifs.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