Fungsi panggilan balik POFXCALLBACKPROCESSORHALT (pepfx.h)

Rutinitas ProcessorHalt menyiapkan prosesor untuk dihentikan.

Sintaks

POFXCALLBACKPROCESSORHALT Pofxcallbackprocessorhalt;

NTSTATUS Pofxcallbackprocessorhalt(
  [in]                ULONG Flags,
  [in, out, optional] PVOID Context,
  [in]                PPROCESSOR_HALT_ROUTINE Halt
)
{...}

Parameter

[in] Flags

Bendera yang menunjukkan properti status diam yang akan dimasukkan prosesor. Parameter Bendera diatur ke nol atau ke bitwise-OR dari satu atau beberapa bit bendera berikut.

Nama bendera Nilai Deskripsi
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE 0x01 Rutinitas panggilan balik Halt PEP bertanggung jawab untuk membersihkan cache prosesor. Jika bendera ini tidak diatur, ProcessorHalt akan menghapus cache pada entri ke status menganggur prosesor, dan akan membatalkan cache saat keluar dari status ini.
PROCESSOR_HALT_CACHE_COHERENT 0x02 Siapkan prosesor untuk memasuki status menganggur di mana cache prosesor akan tetap koheren.
PROCESSOR_HALT_CONTEXT_RETAINED 0x04 Siapkan prosesor untuk memasukkan status menganggur di mana konteks utas prosesor akan dipertahankan.
PROCESSOR_HALT_RETURN_NOT_SAFE 0x08 Rutinitas panggilan balik Halt PEP dijamin tidak akan kembali. Atur bendera ini jika panggilan balik Berhenti mentransisikan prosesor ke status kehilangan konteks dan berdaya yang tidak dapat dibatalkan oleh perangkat keras. Ketika bendera ini diatur, sistem operasi akan memperlakukan pengembalian dari panggilan balik Halt sebagai kesalahan fatal.
PROCESSOR_HALT_VIA_PSCI_CPU_SUSPEND 0x16

[in, out, optional] Context

Penunjuk ke konteks penghentian prosesor yang ditentukan PEP. Pointer ini diteruskan sebagai parameter ke rutinitas Hentikan panggilan balik. Konteks ini buram untuk kerangka kerja manajemen daya Windows (PoFx).

[in] Halt

Penunjuk ke rutinitas Hentikan panggilan balik yang diterapkan PEP. PoFx menyebut rutinitas ini setelah persiapan untuk menghentikan prosesor telah selesai. Selama panggilan balik ini, PEP diharapkan untuk transisi prosesor ke status terhenti .

Mengembalikan nilai

ProcessorHalt mengembalikan STATUS_SUCCESS jika prosesor berhasil disiapkan untuk dihentikan. Kemungkinan nilai pengembalian kesalahan menyertakan kode status berikut.

Mengembalikan nilai Deskripsi
STATUS_INVALID_PARAMETER
Parameter Halt adalah NULL; atau nilai bendera yang tidak valid ditentukan dalam Bendera; atau Bendera berisi kombinasi ilegal dari bit bendera. Untuk informasi selengkapnya, lihat Keterangan.
STATUS_UNSUCCESSFUL
Rutinitas hentikan panggilan balik PEP secara tak terduga dikembalikan dari status menganggur di mana konteks perangkat keras prosesor tidak dipertahankan.

Keterangan

Rutinitas ini diimplementasikan oleh kerangka kerja manajemen daya (PoFx) dan dipanggil oleh plug-in ekstensi platform (PEP). Anggota ProcessorHalt dari struktur PEP_KERNEL_INFORMATION_STRUCT_V3 adalah penunjuk ke rutinitas ProcessorHalt .

Sebelum menghentikan prosesor, PEP memanggil rutinitas ProcessorHalt untuk memberi PoFx kesempatan untuk menyimpan konteks perangkat keras prosesor. Jika perlu, ProcessorHalt menyimpan status ini secara internal di PoFx sehingga status nantinya dapat dipulihkan ketika prosesor keluar dari status menganggur. Setelah menyiapkan prosesor untuk memasuki status diam, ProcessorHalt memanggil rutinitas panggilan balik Halt PEP untuk menghentikan prosesor.

Sebagai bagian dari penanganan PEP dari pemberitahuan PEP_NOTIFY_PPM_IDLE_EXECUTE , PEP harus mengalihkan prosesor ke status menganggur yang telah dipilih PEP. Berikut ini adalah dua cara untuk memasuki status menganggur prosesor:

  • Untuk status diam prosesor di mana cache prosesor tetap koheren sehingga semua sistem dan status prosesor dipertahankan, PEP dapat memasuki status menganggur secara langsung tanpa terlebih dahulu memanggil ProcessorHalt.
  • Untuk status diam prosesor di mana cache prosesor mungkin tidak tetap koheren, atau status menganggur di mana konteks perangkat keras prosesor tidak dipertahankan, PEP harus memanggil ProcessorHalt sebelum transisi prosesor ke status menganggur.
Kombinasi bit bendera berikut ilegal:
  • PROCESSOR_HALT_CONTEXT_RETAINED = 1 dan PROCESSOR_HALT_RETURN_NOT_SAFE = 1

    Rutinitas panggilan balik Halt PEP harus kembali dari status apa pun di mana konteks dipertahankan.

  • PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE = 1 dan PROCESSOR_HALT_CACHE_COHERENT = 1

    Bendera cache-flush-override harus diatur hanya jika memasukkan status menganggur yang tidak koheren cache.

  • PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE = 0 dan PROCESSOR_HALT_CACHE_COHERENT = 0

    Bendera cache-flush-override harus diatur untuk penghentian koheren non-cache.

  • PROCESSOR_HALT_CONTEXT_RETAINED = 0 dan PROCESSOR_HALT_CACHE_COHERENT = 1

    Setiap status diam yang kehilangan konteks perangkat keras prosesor (dan karenanya menggunakan protokol parkir multiprosesor untuk keluar dari status menganggur dan mengembalikan kontrol ke sistem operasi) bukan status koheren cache.

Jika parameter Bendera berisi kombinasi ilegal dari bit bendera, ProcessorHalt gagal dan mengembalikan STATUS_INVALID_PARAMETER.

PEP dapat memanggil rutinitas ini di IRQL <= HIGH_LEVEL.

Persyaratan

   
Klien minimum yang didukung Didukung dimulai dengan Windows 10.
Target Platform Windows
Header pepfx.h (termasuk Pep_x.h)
IRQL <= HIGH_LEVEL

Lihat juga

PEP_KERNEL_INFORMATION_STRUCT_V3

PEP_NOTIFY_PPM_IDLE_EXECUTE