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