Fungsi KeSaveFloatingPointState (wdm.h)

Rutinitas KeSaveFloatingPointState menyimpan konteks floating-point nonvolatile sehingga pemanggil dapat melakukan operasi floating-point.

Sintaks

NTSTATUS KeSaveFloatingPointState(
  [out] PKFLOATING_SAVE FloatSave
);

Parameter

[out] FloatSave

Pointer ke buffer residen yang dialokasikan penelepon, yang harus setidaknya sizeof(KFLOATING_SAVE).

Mengembalikan nilai

KeSaveFloatingPointState mengembalikan STATUS_SUCCESS jika menyimpan konteks floating-point utas saat ini dan menyiapkan konteks floating-point baru untuk pemanggil. Jika tidak, ia mengembalikan salah satu kode status kesalahan berikut.

Menampilkan kode Deskripsi
STATUS_ILLEGAL_FLOAT_CONTEXT
Sistem dikonfigurasi untuk menggunakan emulasi floating-point, daripada melakukan operasi floating-point dalam prosesor.
STATUS_INSUFFICIENT_RESOURCES
KeSaveFloatingPointState tidak dapat mengalokasikan memori yang cukup untuk menyimpan konteks floating-point utas saat ini.

Keterangan

Panggilan yang berhasil ke KeSaveFloatingPointState memungkinkan pemanggil untuk melakukan operasi floating-point sendiri, tetapi penelepon tersebut harus memulihkan konteks floating-point nonvolatile sebelumnya segera setelah operasi floating-point-nya dilakukan. Rutinitas apa pun yang memanggil KeSaveFloatingPointState harus memanggil KeRestoreFloatingPointState sebelum rutin mengembalikan kontrol.

Jika panggilan ke KeSaveFloatingPointState berhasil, data di FloatSave buram ke pemanggil. Pemanggil tidak boleh merilis memori yang dialokasikan untuk data ini sampai setelah panggilan ke KeRestoreFloatingPointState.

Di Windows Vista dan versi Windows yang lebih lama, panggilan KeSaveFloatingPointState dan panggilan KeRestoreFloatingPointState yang sesuai harus terjadi di wilayah yang dijaga. Artinya, rutinitas KeEnterGuardedRegion harus dipanggil sebelum KeSaveFloatingPointState dipanggil, dan rutinitas KeLeaveGuardedRegion harus dipanggil setelah KeRestoreFloatingPointState dipanggil. Tidak ada persyaratan seperti itu di Windows 7 dan versi Windows yang lebih baru.

Untuk alasan performa, driver harus menghindari melakukan operasi floating-point kecuali benar-benar diperlukan. Overhead penyimpanan dan pemulihan status floating-point nonvolatile utas saat ini menurunkan performa driver apa pun yang melakukan operasi floating-point.

Persyaratan

   
Klien minimum yang didukung Tersedia dimulai dengan Windows 2000.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport), IrqlKeDispatchLte(wdm)

Lihat juga

KeEnterGuardedRegion

KeGetCurrentThread

KeLeaveGuardedRegion

KeRestoreFloatingPointState

PsCreateSystemThread