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


Функция EngSaveFloatingPointState (winddi.h)

Функция EngSaveFloatingPointState сохраняет текущее состояние ядра Windows 2000 (и более поздних версий) с плавающей запятой.

Синтаксис

ULONG EngSaveFloatingPointState(
            VOID  *pBuffer,
  [in, out] ULONG cjBufferSize
);

Параметры

pBuffer

Указатель на буфер, который получает состояние с плавающей запятой. Этот буфер должен быть инициализирован с нуля и находиться в памяти без паг.

[in, out] cjBufferSize

Указывает размер (в байтах) буфера, на который указывает pBuffer .

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

Если pBuffer не равно NULL, EngSaveFloatingPointState возвращает значение TRUE , если состояние успешно сохранено. Он возвращает значение FALSE , если указанный буфер слишком мал или состояние не может быть сохранено.

Если pBuffer имеет значение NULL или cjBufferSize равно нулю, EngSaveFloatingPointState возвращает размер буфера, необходимый для сохранения состояния с плавающей запятой. Если возвращаемое значение равно нулю, процессор не имеет аппаратной возможности с плавающей запятой. В этом случае драйвер не должен использовать инструкции с плавающей запятой.

Комментарии

Драйвер должен сохранить текущее состояние ядра с плавающей запятой, прежде чем использовать аппаратные инструкции с плавающей запятой. В системах архитектуры Intel это позволяет использовать инструкции MMX, если они поддерживаются процессором. Драйверы, которые неправильно используют EngSaveFloatingPointState и EngRestoreFloatingPointState при использовании оборудования с плавающей запятой или MMX, вызовут случайное повреждение с плавающей запятой или MMX в вызывающем приложении.

При каждом вызове драйвера драйвер должен вызывать EngSaveFloatingPointState один раз, чтобы сохранить состояние ядра перед использованием операций с плавающей запятой или MMX. Он также должен вызвать EngRestoreFloatingPointState один раз после завершения всех операций с плавающей запятой или MMX, чтобы сбросить состояние ядра.

GDI автоматически сохраняет состояние с плавающей запятой для любых вызовов подпрограммы DrvEscape драйвера, когда экранирование OPENGL_CMD, OPENGL_GETINFO или MCDFUNCS.

Требования

   
Минимальная версия клиента Доступно в Windows 2000 и более поздних версиях операционных систем Windows.
Целевая платформа Универсальное
Верхняя часть winddi.h (включая Winddi.h)
Библиотека Win32k.lib
DLL Win32k.sys

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

DrvEscape

EngRestoreFloatingPointState