Поделиться через


Функция KeRestoreFloatingPointState (wdm.h)

Подпрограмма KeRestoreFloatingPointState восстанавливает неизменяемый контекст с плавающей запятой, сохраненный предыдущим вызовом KeSaveFloatingPointState.

Синтаксис

NTSTATUS KeRestoreFloatingPointState(
  [in] PKFLOATING_SAVE FloatSave
);

Параметры

[in] FloatSave

Указатель на структуру KFLOATING_SAVE , переданную в предыдущем вызове KeSaveFloatingPointState.

Возвращаемое значение

KeRestoreFloatingPointState возвращает STATUS_SUCCESS.

Комментарии

KeRestoreFloatingPointState — это взаимное значение KeSaveFloatingPointState.

Любая подпрограмма, вызывающая KeSaveFloatingPointState, должна вызывать KeRestoreFloatingPointState, прежде чем эта подпрограмма возвращает управление, и она должна выполняться в том же IRQL, что и тот, из которого был выполнен предыдущий вызов KeSaveFloatingPointState. Несоблюдение любого из этих условий приводит к системной ошибке проверка.

Код драйвера в режиме ядра должен гарантировать правильность вложенных вызовов KeSaveFloatingPointState и KeRestoreFloatingPointState . Это необходимо для того, чтобы на каждом уровне вложенности состояние, восстановленное вызовом KeRestoreFloatingPointState , совпадало с состоянием, сохраненным соответствующим вызовом KeSaveFloatingPointState . Чтобы обеспечить правильное вложение, код драйвера в режиме ядра должен соответствовать следующим правилам:

  • Вызов KeRestoreFloatingPointState , который восстанавливает сохраненное состояние, должен выполняться в том же irQL, что и вызов KeSaveFloatingPointState , который сохранил состояние.
  • Если пара вызовов KeSaveFloatingPointState и KeRestoreFloatingPointState вложена в пару вызовов KeSaveFloatingPointState и KeRestoreFloatingPointState , значение IRQL для вложенных вызовов не должно быть ниже IRQL для окружающих вызовов.
  • Как правило, выделенная вызывающим объектом структура KFLOATING_SAVE , содержащая состояние, сохраненное KeSaveFloatingPointState , находится в стеке. Стек, естественно, сохраняет вложенную информацию о сохраненном состоянии. Если код драйвера сохраняет состояние в расположении, отличном от стека, модуль записи драйвера должен соблюдать особую осторожность, чтобы сохранить вложенности вызовов KeSaveFloatingPointState и KeRestoreFloatingPointState .
  • Вызов KeRestoreFloatingPointState , который восстанавливает сохраненное состояние, должен выполняться в том же потоке, что и вызов KeSaveFloatingPointState , который сохранил состояние.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (см. раздел "Примечания")

См. также раздел

KFLOATING_SAVE

KeSaveFloatingPointState