struktur PO_FX_COMPONENT_V2 (wdm.h)

Struktur PO_FX_COMPONENT menjelaskan atribut status daya komponen dalam perangkat.

Sintaks

typedef struct _PO_FX_COMPONENT_V2 {
  GUID                        Id;
  ULONGLONG                   Flags;
  ULONG                       DeepestWakeableIdleState;
  ULONG                       IdleStateCount;
  PPO_FX_COMPONENT_IDLE_STATE IdleStates;
  ULONG                       ProviderCount;
  PULONG                      Providers;
} PO_FX_COMPONENT_V2, *PPO_FX_COMPONENT_V2;

Anggota

Id

ID komponen yang secara unik mengidentifikasi komponen ini sehubungan dengan komponen lain di perangkat. Driver harus menentukan nilai bukan nol untuk anggota ini jika kerangka kerja manajemen daya (PoFx) memerlukan ID komponen untuk membedakan komponen ini dari komponen lain yang serupa di perangkat yang sama. Anggota ini bersifat opsional. Jika anggota ini tidak digunakan, anggota ini harus diatur ke semua nol.

Flags

Anggota ini dapat diatur ke bit bendera berikut: PO_FX_COMPONENT_FLAG_F0_ON_DX. Untuk informasi selengkapnya, lihat Keterangan.

DeepestWakeableIdleState

Indeks status Fx terdalam tempat komponen dapat bangun. Tentukan 0 untuk F0, 1 untuk F1, dan sebagainya. Indeks ini harus kurang dari IdleStateCount.

IdleStateCount

Jumlah elemen dalam array yang ditujukkan oleh anggota IdleStates . Selain itu, anggota ini menentukan jumlah status daya Fx yang didukung komponen. Komponen harus mendukung setidaknya satu status Fx (F0).

IdleStates

Penunjuk ke array PO_FX_COMPONENT_IDLE_STATE . Panjang array ini ditentukan oleh anggota IdleStateCount . Setiap elemen array menentukan atribut status daya Fx yang didukung oleh komponen. Elemen 0 menjelaskan F0, elemen 1 menjelaskan F1, dan sebagainya.

ProviderCount

Nilai yang menentukan jumlah komponen yang bergantung pada komponen ini. Untuk informasi selengkapnya, lihat Dependensi komponen di bawah Keterangan.

Providers

Penunjuk ke array indeks komponen yang bergantung pada komponen ini. Untuk informasi selengkapnya, lihat Dependensi komponen di bawah Keterangan.

Keterangan

Ketika driver perangkat mendaftarkan perangkat dengan PoFx, driver menyediakan struktur PO_FX_DEVICE yang menyimpan informasi pendaftaran. Struktur ini berisi array struktur PO_FX_COMPONENT . Elemen dalam array ini menjelaskan atribut daya dari masing-masing komponen dalam perangkat. PoFx menggunakan informasi dalam array ini untuk mengelola pengaturan daya komponen ini.

Anggota Id berisi ID komponen yang dapat digunakan PoFx untuk mengidentifikasi komponen secara unik. Jangan membingungkan ID komponen dengan indeks komponen, yang digunakan rutinitas seperti PoFxActivateComponent untuk mengidentifikasi komponen dalam perangkat terdaftar. Indeks komponen adalah indeks ke dalam array Komponen dalam struktur PO_FX_DEVICE yang digunakan driver perangkat untuk mendaftarkan perangkat dengan PoFx. Jika array Komponen berisi elemen N, indeks komponen adalah nilai bilangan bulat dalam rentang 0 hingga N–1. Sebaliknya, ID komponen adalah nilai GUID.

Anggota Bendera dapat diatur ke nilai PO_FX_COMPONENT_FLAG_F0_ON_DX jika driver menentukan dukungan untuk PO_FX_VERSION_V2 selama pendaftaran dengan PoFx (yaitu, selama panggilan ke rutinitas PoFxRegisterDevice , driver menentukan nilai PO_FX_VERSION_V2 untuk anggota Versi struktur PO_FX_DEVICE yang diteruskan ke parameter Perangkat ). Jika bendera PO_FX_COMPONENT_FLAG_F0_ON_DX ditentukan, PoFx akan menempatkan komponen ke dalam status daya F0 selama transisi Dx dan untuk runtime integrasi tunggu/bangun. Sebelum mengirimkan Dx IRP atau menunggu/membangunkan IRP ke tumpukan perangkat (peristiwa mana pun yang terjadi terlebih dahulu), manajer daya akan mentransisikan komponen ke status F0. Komponen akan disimpan di F0 sampai IRP bangun/tunggu dibatalkan atau selesai, atau Dx IRP selesai dan driver telah memanggil rutinitas PoFxReportDevicePoweredOn (peristiwa mana pun yang terjadi terakhir).

Dependensi komponen

PoFx mendukung dependensi komponen logis dalam perangkat (tetapi tidak di berbagai perangkat). Selama pendaftaran perangkat untuk setiap komponen, driver dapat menyediakan angka (anggota ProviderCount ) dan array indeks komponen (anggota Penyedia ) komponen ini bergantung pada; ini dikenal sebagai penyedia. PoFx menjamin bahwa komponen tidak akan aktif sampai semua penyedianya aktif.

Dependensi komponen membentuk grafik yang diarahkan di mana tepi menunjuk dari komponen dependen ke penyedia dan mewakili dependensi. Selama pendaftaran perangkat, PoFx memvalidasi grafik dependensi: siklus dan tepi berulang tidak diizinkan dan kedalaman grafik untuk traversal pencarian yang mengutamakan kedalaman tidak boleh melebihi empat. PoFx juga mengatur jumlah referensi aktif komponen sesuai dengan grafik dependensi; artinya, jumlah referensi aktif setiap penyedia bertambah satu kali untuk setiap komponen yang bergantung padanya.

Selama aktivasi komponen, PoFx secara asinkron mengaktifkan semua penyedia terlebih dahulu. Setelah komponen aktif, PoFx memeriksa setiap komponen dependen dan melanjutkan aktivasinya jika perlu.

Ketika komponen beralih ke status diam, PoFx terlebih dahulu membuat komponen dependen menganggur. Setelah driver menyelesaikan ComponentIdleConditionCallback dan plug-in ekstensi platform (PEP) diberi tahu bahwa komponen menganggur, PoFx secara rekursif melintasi grafik dependensi dalam traversal yang mengutamakan luas dan secara asinkron menganggur setiap penyedia.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung dimulai dengan Windows 8.
Header wdm.h (termasuk Wudfwdm.h)

Lihat juga

Manajemen Daya Tingkat Komponen

PO_FX_COMPONENT_IDLE_STATE

PO_FX_DEVICE