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 指令,這會允許使用 MMX 指令。 使用浮點或 MMX 硬體時,未正確使用 EngSaveFloatingPointState 和 EngRestoreFloatingPointState 的驅動程式會導致呼叫應用程式中隨機的浮點或 MMX 損毀。
每次呼叫驅動程式時,驅動程式都必須呼叫 EngSaveFloatingPointState 一次,才能在使用浮點或 MMX 作業之前保留核心狀態。 它也必須在所有浮點或 MMX 作業完成之後呼叫 EngRestoreFloatingPointState 一次,才能重設核心狀態。
當逸出OPENGL_CMD、OPENGL_GETINFO或 MCDFUNCS 時,GDI 會自動儲存驅動程式 DrvEscape 常式的任何呼叫的浮點狀態。
規格需求
最低支援的用戶端 | 適用于 Windows 2000 和更新版本的 Windows 作業系統。 |
目標平台 | Universal |
標頭 | winddi.h (包含 Winddi.h) |
程式庫 | Win32k.lib |
Dll | Win32k.sys |