PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK fungsi panggilan balik (wdm.h)
Rutinitas panggilan balik ComponentIdleConditionCallback memberi tahu driver bahwa komponen yang ditentukan menyelesaikan transisi dari kondisi aktif ke kondisi menganggur.
Sintaks
PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK PoFxComponentIdleConditionCallback;
void PoFxComponentIdleConditionCallback(
[in] PVOID Context,
[in] ULONG Component
)
{...}
Parameter
[in] Context
Penunjuk ke konteks perangkat. Driver perangkat menggunakan konteks ini untuk menyimpan informasi tentang status daya perangkat saat ini. Driver perangkat menentukan pointer ini di anggota DeviceContext dari struktur PO_FX_DEVICE yang digunakan driver untuk mendaftarkan perangkat dengan kerangka kerja manajemen daya (PoFx). Konteks ini buram untuk PoFx.
[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.
Nilai kembali
Tidak ada
Keterangan
Ketika driver tidak perlu lagi mengakses komponen yang berada dalam kondisi aktif, driver harus memanggil rutinitas PoFxIdleComponent untuk mengalihkan komponen ke kondisi menganggur. Menanggapi panggilan PoFxIdleComponent , PoFx memulai transisi ke kondisi menganggur, lalu memanggil rutinitas ComponentIdleConditionCallback untuk memberi tahu driver ketika transisi ini selesai.
Driver harus memanggil PoFxCompleteIdleCondition sebagai respons terhadap setiap panggilan balik ComponentIdleConditionCallback . Panggilan PoFxCompleteIdleCondition dapat terjadi baik selama panggilan balik ComponentIdleConditionCallback atau setelah panggilan balik kembali. Driver harus menyelesaikan pekerjaan apa pun yang memerlukan akses ke komponen perangkat keras sebelum panggilan ke PoFxCompleteIdleCondition. Setelah panggilan ini, komponen mungkin tidak tetap dalam status daya F0.
Komponen hanya dapat diakses dengan aman ketika komponen berada dalam kondisi aktif. Jangan mengandalkan status daya Fx komponen untuk menentukan apakah komponen dapat diakses. Jika komponen berada dalam status F0 dan berada dalam kondisi menganggur, komponen mungkin akan beralih ke status Fx lain.
Contoh
Untuk menentukan rutinitas panggilan balik ComponentIdleConditionCallback , Anda harus terlebih dahulu memberikan deklarasi fungsi yang mengidentifikasi jenis rutinitas panggilan balik yang Anda tentukan. Windows menyediakan sekumpulan tipe fungsi panggilan balik untuk driver. Mendeklarasikan fungsi menggunakan jenis fungsi panggilan balik membantu Analisis Kode untuk Driver, Pemverifikasi Driver Statis (SDV), dan alat verifikasi lainnya menemukan kesalahan, dan itu adalah persyaratan untuk menulis driver untuk sistem operasi Windows.
Misalnya, untuk menentukan rutinitas panggilan balik ComponentIdleConditionCallback yang diberi nama MyComponentIdleConditionCallback
, gunakan jenis PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK seperti yang ditunjukkan dalam contoh kode ini:
PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK MyComponentIdleConditionCallback;
Kemudian, terapkan rutinitas panggilan balik Anda sebagai berikut:
_Use_decl_annotations_
VOID
MyComponentIdleConditionCallback(
PVOID Context,
ULONG Component
)
{
// Function body
}
Jenis fungsi PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK didefinisikan dalam file header Wdm.h. Untuk mengidentifikasi kesalahan secara lebih akurat saat Anda menjalankan alat analisis kode, pastikan untuk menambahkan _Use_decl_annotations_
anotasi ke definisi fungsi Anda. Anotasi _Use_decl_annotations_
memastikan bahwa anotasi yang diterapkan ke jenis fungsi PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK dalam file header digunakan. Untuk informasi selengkapnya tentang persyaratan untuk deklarasi fungsi, lihat Mendeklarasikan Fungsi dengan Menggunakan Jenis Peran Fungsi untuk Driver WDM. Untuk informasi tentang _Use_decl_annotations_
, lihat Menganotasi Perilaku Fungsi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung dimulai dengan Windows 8. |
Target Platform | Desktop |
Header | wdm.h (termasuk Wudfwdm.h) |
IRQL | Dipanggil di IRQL <= DISPATCH_LEVEL. |