IRP_MN_POWER_SEQUENCE

IRP ini mengembalikan nilai urutan daya untuk perangkat.

Kode Utama

IRP_MJ_POWER

Ketika Dikirim

Driver mengirimkan IRP ini sebagai pengoptimalan untuk menentukan apakah perangkatnya benar-benar memasuki status daya tertentu. Dukungan untuk IRP ini bersifat opsional.

Untuk mengirim IRP ini, driver harus memanggil IoAllocateIrp untuk mengalokasikan IRP, menentukan kode IRP utama IRP_MJ_POWER dan kode IRP kecil IRP_MN_POWER_SEQUENCE. Driver kemudian harus memanggil IoCallDriver (Windows Vista) atau PoCallDriver (Windows Server 2003, Windows XP, dan Windows 2000) untuk meneruskan IRP ke driver yang lebih rendah berikutnya. Manajer daya tidak dapat mengirim IRP ini.

Pengirim IRP ini harus berjalan di IRQL <= DISPATCH_LEVEL.

Parameter Input

Tidak ada.

Parameter Output

Parameters.PowerSequence menunjuk ke struktur POWER_SEQUENCE dengan anggota berikut:

SequenceD1
Frekuensi perangkat berada dalam status daya D1 atau lebih rendah.

SequenceD2
Frekuensi perangkat berada dalam status daya D2 atau lebih rendah.

SequenceD3
Frekuensi perangkat berada dalam status daya D3.

Nilai urutan melacak berapa kali perangkat berada dalam status daya yang sesuai atau status daya yang lebih rendah.

Driver bus meningkatkan nilai dalam SequenceD1, SequenceD2, dan SequenceD3 setidaknya setiap kali perangkat masuk dalam status daya yang sesuai atau status daya yang lebih rendah.

Blok Status I/O

Driver mengatur Irp-IoStatus.Status> ke STATUS_SUCCESS untuk menunjukkan bahwa driver telah mengembalikan informasi yang diminta, atau STATUS_NOT_IMPLEMENTED untuk menunjukkan bahwa ia tidak mendukung IRP ini.

Operasi

IRP ini mengembalikan nilai urutan daya untuk perangkat. Pengemudi bus dapat menanganinya secara opsional; driver fungsi dan filter dapat mengirimkannya secara opsional.

Untuk perangkat yang membutuhkan waktu lama untuk mengubah status, IRP ini memberikan pengoptimalan yang berguna. Setiap kali perangkat mengubah status dayanya, driver busnya menaikkan nilai urutan untuk status daya tersebut. Pengemudi bus menginisialisasi nilai urutan pada waktu boot dan terus menaikkannya setelahnya; mereka tidak perlu diatur ulang ke nol.

Pemilik kebijakan perangkat dapat mengirim IRP ini sekali untuk mendapatkan nilai urutan sebelum mematikan perangkat dan sekali lagi untuk mendapatkan nilai baru saat memulihkan daya ke perangkat. Dengan membandingkan dua set nilai, driver dapat menentukan apakah perangkat benar-benar memasuki status bertenaga lebih rendah. Jika perangkat tidak kehilangan daya, driver dapat menghindari reinisialisasi yang memakan waktu ketika perangkat kembali ke status D0.

Misalnya, jika perangkat membutuhkan waktu lama untuk memulihkan daya setelah mencapai status D2, driver dapat menyimpan nilai SequenceD2 sebelum mengatur status perangkat ke D2 atau lebih rendah. Kemudian, ketika daya sedang dipulihkan ke perangkat, driver dapat membandingkan nilai SequenceD2 baru dengan nilai tersimpannya untuk menentukan apakah status perangkat benar-benar turun di bawah D2. Jika nilai cocok, perangkat tidak benar-benar memasukkan status daya D2 atau status yang lebih rendah, dan driver dapat menghindari menginisialisasi ulang perangkat.

Persyaratan

Header

Wdm.h (termasuk Wdm.h, Ntddk.h, atau Ntifs.h)