Fungsi PoFxIssueComponentPerfStateChange (wdm.h)
Rutinitas PoFxIssueComponentPerfStateChange mengirimkan permintaan untuk menempatkan komponen perangkat dalam status performa tertentu.
Sintaks
void PoFxIssueComponentPerfStateChange(
[in] POHANDLE Handle,
[in] ULONG Flags,
[in] ULONG Component,
[in] PPO_FX_PERF_STATE_CHANGE PerfChange,
[in] PVOID Context
);
Parameter
[in] Handle
Handel yang mewakili pendaftaran perangkat dengan PoFx. Driver perangkat sebelumnya menerima handel ini dari rutinitas PoFxRegisterDevice .
[in] Flags
Bendera yang mengubah perilaku operasi perubahan status performa. Atur anggota ini ke nol atau ke salah satu bendera berikut PO_FX_FLAG_XXX bit:
Kedua bit bendera ini saling eksklusif. Untuk informasi selengkapnya, lihat Keterangan.
[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] PerfChange
Penunjuk ke struktur PO_FX_PERF_STATE_CHANGE yang mewakili status performa baru komponen.
[in] Context
Penunjuk ke konteks untuk rutinitas panggilan balik ComponentPerfStateCallback . Parameter ini bersifat opsional. Ini disediakan agar konteks driver atau perangkat dapat diteruskan ke rutinitas panggilan balik. Jika parameter ini tidak digunakan, parameter harus diatur ke NULL.
Nilai kembali
Tidak ada
Keterangan
Ketika driver memanggil PoFxIssueComponentPerfStateChange, kerangka kerja manajemen daya (PoFx) meminta plug-in ekstensi platform (PEP) untuk menempatkan status performa komponen yang diatur dalam status performa yang ditentukan. Rutinitas ini dapat digunakan dengan jenis set status performa diskrit dan berbasis rentang. Untuk informasi selengkapnya tentang set status performa diskrit dan berbasis rentang, lihat PO_FX_PERF_STATE_TYPE.
Jika Bendera = PO_FX_FLAG_BLOCKING, panggilan PoFxIssueComponentPerfStateChange sinkron. Dalam hal ini, PoFxIssueComponentPerfStateChange menunggu untuk kembali hingga komponen menyelesaikan transisi status performa. Rutinitas ComponentPerfStateCallback driver dipanggil untuk memberi tahu driver bahwa perubahan status performa komponen selesai. Panggilan balik ini terjadi dalam utas yang sama dengan panggilan ke PoFxIssueComponentPerfStateChange, dan PoFxIssueComponentPerfStateChange hanya kembali setelah panggilan balik ComponentPerfStateCallback kembali.
Jika Bendera = PO_FX_FLAG_ASYNC_ONLY, panggilan PoFxIssueComponentPerfStateChange bersifat asinkron. Dalam hal ini, PoFxIssueComponentPerfStateChange menjadwalkan rutinitas ComponentPerfStateCallback terjadi di utas lain, dan kemudian kembali tanpa menunggu panggilan balik terjadi. Panggilan balik dapat terjadi sebelum atau sesudah PoFxIssueComponentPerfStateChange kembali. Driver harus mengandalkan rutinitas ComponentPerfStateCallback untuk menentukan kapan komponen menyelesaikan transisi ke status performa baru.
Driver dapat mengatur Bendera = 0 untuk menunjukkan bahwa tidak peduli apakah panggilan PoFxIssueComponentPerfStateChange sinkron atau asinkron. Dalam hal ini, PoFx memutuskan sinkronisasi panggilan berdasarkan apakah PEP menggunakan permintaan sinkron atau asinkron untuk mengeluarkan perubahan status performa ke komponen.
Jika Bendera = PO_FX_FLAG_ASYNC_ONLY atau tidak ada bendera yang diteruskan, rutinitas ini memerlukan IRQL = <DISPATCH_LEVEL. Jika Bendera = PO_FX_FLAG_BLOCKING, rutinitas ini memerlukan IRQL = <APC_LEVEL.
Fungsi ini akan selalu menghasilkan panggilan ke rutinitas ComponentPerfStateCallback terlepas dari sinkronisasi panggilan. Karena PEP dapat memilih untuk menolak permintaan untuk mengubah status performa, driver harus menunggu hingga menerima panggilan balik sebelum menerapkan status performa ke perangkat keras.
Hanya satu panggilan rutin PoFxIssueComponentPerfStateChange yang diizinkan pada satu waktu per komponen, terlepas dari apakah panggilan sinkron atau asinkron. Setelah mengeluarkan permintaan perubahan status performa, driver harus menunggu sampai ComponentPerfStateCallback diterima sebelum memanggil rutinitas ini lagi, bahkan jika permintaan melibatkan set status performa yang berbeda. Jika rutinitas ini dipanggil lagi sebelum menunggu sampai ComponentPerfStateCallback diterima, bugcheck akan terjadi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia dimulai dengan Windows 10. |
Target Platform | Universal |
Header | wdm.h |
Pustaka | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= APC_LEVEL atau <= DISPATCH_LEVEL (Lihat bagian Keterangan) |
Lihat juga
Manajemen Status Performa Perangkat
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk