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


Функция 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 является тем же состоянием, которое было сохранено соответствующим вызовом KeSaveFloatingPointStat e. Чтобы обеспечить правильное вложение, код драйвера в режиме ядра должен соответствовать следующим правилам:

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 2000.
целевая платформа Всеобщий
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (см. раздел "Примечания")

См. также

KFLOATING_SAVE

KeSaveFloatingPointState