Функция KeSaveFloatingPointState (wdm.h)
подпрограмма KeSaveFloatingPointState сохраняет контекст с плавающей запятой, чтобы вызывающий объект выполнял операции с плавающей запятой.
Синтаксис
NTSTATUS KeSaveFloatingPointState(
[out] PKFLOATING_SAVE FloatSave
);
Параметры
[out] FloatSave
Указатель на выделенный абонентом буфер резидента, который должен быть по крайней мере размер(KFLOATING_SAVE).
Возвращаемое значение
KeSaveFloatingPointState возвращает STATUS_SUCCESS, если он сохранил контекст с плавающей запятой текущего потока и настроил новый контекст с плавающей запятой для вызывающего объекта. В противном случае возвращается один из следующих кодов состояния ошибки.
Возвращаемый код | Описание |
---|---|
|
Система настроена для использования эмуляции с плавающей запятой, а не для операций с плавающей запятой в процессорах. |
|
KeSaveFloatingPointState не удалось выделить достаточно памяти для сохранения контекста с плавающей запятой текущего потока. |
Замечания
Успешный вызов KeSaveFloatingPointState позволяет вызывающей стороне выполнять операции с плавающей запятой, но такой вызывающий объект должен восстановить предыдущий контекст с плавающей запятой, как только будут выполнены его операции с плавающей запятой. Любая подпрограмма, которая вызывает KeSaveFloatingPointState, должна вызывать KeRestoreFloatingPointState перед возвратом этого подпрограммы.
Если вызов KeSaveFloatingPointState выполнен успешно, данные FloatSave непрозрачны для вызывающего объекта. Вызывающий объект не должен освобождать память, выделенную для этих данных, до тех пор, пока после вызова KeRestoreFloatingPointState.
В Windows Vista и более ранних версиях Windows вызов KeSaveFloatingPointState и соответствующий вызов KeRestoreFloatingPointState должен выполняться в защищенном регионе. То есть необходимо вызвать подпрограмму KeEnterGuardedRegion перед вызовом KeSaveFloatingPointState, а подпрограмма KeLeaveGuardedReg ion должна вызываться после вызова KeRestoreFloatingPointState. Такое требование не существует в Windows 7 и более поздних версиях Windows.
По соображениям производительности драйверы должны избегать выполнения любых операций с плавающей запятой, если это не обязательно. Затраты на сохранение и восстановление ненулевого состояния текущего потока с плавающей запятой ухудшают производительность любого драйвера, который выполняет операции с плавающей запятой.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 2000. |
целевая платформа | Всеобщий |
заголовка | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
правил соответствия DDI | HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm) |