Fungsi PoFxIdleComponent (wdm.h)

PoFxIdleComponent rutin mengurangi jumlah referensi aktivasi pada komponen yang ditentukan.

Sintaks

void PoFxIdleComponent(
  [in] POHANDLE Handle,
  [in] ULONG    Component,
  [in] ULONG    Flags
);

Parameter

[in] Handle

Handel yang mewakili pendaftaran perangkat dengan kerangka kerja manajemen daya (PoFx). Driver perangkat sebelumnya menerima handel ini dari rutinitas PoFxRegisterDevice .

[in] Component

Indeks yang mengidentifikasi komponen. Parameter ini 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 berkisar antara 0 hingga N–1.

[in] Flags

Bendera untuk operasi menganggur. Atur anggota ini ke nol atau ke salah satu bendera berikut PO_FX_FLAG_XXX bit:

  • PO_FX_FLAG_BLOCKING
  • PO_FX_FLAG_ASYNC_ONLY
Kedua bit bendera ini saling eksklusif. Untuk informasi selengkapnya, lihat Keterangan.

Mengembalikan nilai

Tidak ada

Keterangan

Driver perangkat memanggil PoFxIdleComponent untuk merilis referensi aktivasi ke komponen di perangkat. Driver memperoleh referensi aktivasi dalam panggilan sebelumnya ke rutinitas PoFxActivateComponent . Driver harus memegang referensi aktivasi pada komponen hanya saat driver perlu mengakses komponen. Untuk menahan referensi aktivasi pada komponen yang tidak digunakan mencegah komponen memasuki status Fx berdaya rendah.

Jika driver tidak memegang referensi aktivasi lain ke komponen, PoFxIdleComponent memulai transisi dari kondisi aktif ke kondisi menganggur. Ketika transisi ini selesai, PoFx memanggil rutinitas ComponentIdleConditionCallback driver untuk memberi tahu driver. Jika driver mempertahankan satu atau beberapa referensi aktivasi tambahan pada komponen, komponen tetap dalam kondisi aktif, dan rutinitas ComponentIdleConditionCallback tidak dipanggil.

PoFx mempertahankan jumlah referensi aktivasi untuk setiap komponen di perangkat. Rutinitas PoFxActivateComponent meningkatkan jumlah ini, dan PoFxIdleComponent menguranginya. Komponen tetap dalam kondisi aktif saat jumlah ini bukan nol. Ketika driver merilis referensi aktivasi terakhirnya ke komponen, hitungan menurun menjadi nol dan komponen memasuki kondisi menganggur. Setelah komponen memasuki kondisi menganggur, PoFx berpotensi mengalihkan komponen ke status Fx berdaya rendah. Untuk informasi selengkapnya, lihat PoFxActivateComponent.

Jika Bendera = PO_FX_FLAG_BLOCKING, panggilan PoFxIdleComponent sinkron. Dalam hal ini, PoFxIdleComponent menunggu untuk kembali hingga komponen menyelesaikan transisi ke kondisi menganggur. PoFxIdleComponent memanggil rutinitas panggilan balik ComponentIdleConditionCallback driver untuk memberi tahu driver bahwa komponen berada dalam kondisi menganggur. Panggilan balik ini terjadi dalam utas yang sama dengan panggilan ke PoFxIdleComponent, dan PoFxIdleComponent hanya kembali setelah panggilan balik ComponentIdleConditionCallback kembali.

Jika Bendera = PO_FX_FLAG_ASYNC_ONLY, panggilan PoFxIdleComponent tidak sinkron. Dalam hal ini, PoFxIdleComponent menjadwalkan panggilan balik ComponentIdleConditionCallback terjadi di utas lain, lalu kembali tanpa menunggu panggilan balik terjadi. Panggilan balik dapat terjadi sebelum atau sesudah PoFxIdleComponent kembali. Driver harus mengandalkan panggilan balik ComponentIdleConditionCallback untuk menentukan kapan komponen menyelesaikan transisi ke kondisi menganggur. Sampai panggilan balik ini terjadi, driver harus mengasumsikan bahwa komponen mungkin masih dalam kondisi aktif.

Driver dapat mengatur Bendera = 0 untuk menunjukkan bahwa ia tidak peduli apakah panggilan PoFxIdleComponent sinkron atau asinkron. Dalam hal ini, PoFx memutuskan apakah akan membuat panggilan sinkron atau asinkron.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 8.
Target Platform Universal
Header wdm.h
Pustaka Ntoskrnl.lib
DLL Ntoskrnl.exe
IRQL <= DISPATCH_LEVEL

Lihat juga

ComponentIdleConditionCallback

PO_FX_DEVICE

PO_FX_FLAG_XXX

PoFxActivateComponent

PoFxRegisterDevice