Функция 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 |