Функция 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 (см. раздел "Примечания") |