Fungsi PoFxIssueComponentPerfStateChangeMultiple (wdm.h)

Rutinitas PoFxIssueComponentPerfStateChangeMultiple mengirimkan permintaan untuk mengubah status performa dalam beberapa set status performa secara bersamaan untuk komponen perangkat.

Sintaks

void PoFxIssueComponentPerfStateChangeMultiple(
  [in] POHANDLE                   Handle,
  [in] ULONG                      Flags,
  [in] ULONG                      Component,
  [in] ULONG                      PerfChangesCount,
  [in] PO_FX_PERF_STATE_CHANGE [] PerfChanges,
  [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.

Nilai Makna
PO_FX_FLAG_BLOCKING
0x1
Buat perubahan kondisi sinkron. Jika bendera ini diatur, rutinitas yang meminta perubahan kondisi tidak mengembalikan kontrol ke driver panggilan hingga perangkat keras komponen menyelesaikan transisi ke kondisi baru. Bendera ini hanya dapat digunakan jika penelepon berjalan di IRQL < DISPATCH_LEVEL.
PO_FX_FLAG_ASYNC_ONLY
0x2
Buat kondisi berubah sepenuhnya asinkron. Jika bendera ini diatur, rutinitas panggilan balik driver memanggil dipanggil dari utas selain utas tempat rutinitas yang meminta perubahan kondisi dipanggil. Dengan demikian, rutinitas yang meminta perubahan kondisi selalu kembali secara asinkron tanpa menunggu panggilan balik selesai.

[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] PerfChangesCount

Jumlah permintaan perubahan status performa yang terkandung dalam array PerfChanges .

[in] PerfChanges

Elemen pertama dalam array struktur PO_FX_PERF_STATE_CHANGE yang mewakili performa menyatakan driver berniat untuk transisi. Setiap elemen array mewakili satu permintaan perubahan status performa.

[in] Context

Penunjuk ke konteks untuk rutinitas panggilan balik ComponentPerfStateCallback . Parameter ini bersifat opsional. Ini disediakan sehingga 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

Driver memanggil PoFxIssueComponentPerfStateChangeMultiple, kerangka kerja manajemen daya (PoFx) akan meminta plug-in ekstensi platform (PEP) untuk menempatkan set status performa komponen 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 diskret dan berbasis rentang, lihat PO_FX_PERF_STATE_TYPE.

Jika Bendera = PO_FX_FLAG_BLOCKING, panggilan PoFxIssueComponentPerfStateChangeMultiple sinkron. Dalam hal ini, PoFxIssueComponentPerfStateChangeMultiple 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 di utas yang sama dengan panggilan ke PoFxIssueComponentPerfStateChangeMultiple, dan PoFxIssueComponentPerfStateChangeMultiple hanya kembali setelah callback ComponentPerfStateCallback kembali.

Jika Bendera = PO_FX_FLAG_ASYNC_ONLY, panggilan PoFxIssueComponentPerfStateChangeMultiple tidak sinkron. Dalam hal ini, PoFxIssueComponentPerfStateChangeMultiple menjadwalkan rutinitas ComponentPerfStateCallback terjadi di utas lain, dan kemudian kembali tanpa menunggu panggilan balik terjadi. Panggilan balik dapat terjadi sebelum atau setelah poFxIssueComponentPerfStateChangeMultiple 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 PoFxIssueComponentPerfStateChangeMultiple sinkron atau asinkron. Dalam hal ini, PoFx memutuskan sinkronisasi panggilan berdasarkan apakah PEP menggunakan permintaan sinkron atau asinkron untuk mengeluarkan perubahan status performa pada 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 PoFxIssueComponentPerfStateChangeMultiple 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, pemeriksaan bug 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

ComponentPerfStateCallback

Manajemen Status Performa Perangkat

PO_FX_PERF_STATE_TYPE

PoFxIssueComponentPerfStateChange

PoFxRegisterComponentPerfStates