Partager via


Fonction EngSaveFloatingPointState (winddi.h)

La fonction EngSaveFloatingPointState enregistre l’état actuel à virgule flottante du noyau Windows 2000 (et versions ultérieures).

Syntaxe

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

Paramètres

pBuffer

Pointeur vers la mémoire tampon qui reçoit l’état à virgule flottante. Cette mémoire tampon doit être initialisée à zéro et doit être en mémoire non pagée.

[in, out] cjBufferSize

Spécifie la taille, en octets, de la mémoire tampon vers laquelle pBuffer pointe.

Valeur retournée

Si pBuffer n’a pas la valeur NULL, EngSaveFloatingPointState retourne TRUE si l’état est correctement enregistré. Elle retourne FALSE si la mémoire tampon spécifiée est trop petite ou si l’état ne peut pas être enregistré.

Si pBuffer a la valeur NULL ou que cjBufferSize a la valeur zéro, EngSaveFloatingPointState retourne la taille de la mémoire tampon nécessaire pour enregistrer l’état à virgule flottante. Si la valeur de retour est égale à zéro, le processeur n’a pas de capacité à virgule flottante matérielle. Dans ce cas, le pilote ne doit pas utiliser d’instructions à virgule flottante.

Remarques

Le pilote doit enregistrer l’état actuel de la virgule flottante du noyau avant d’utiliser les instructions matérielles à virgule flottante. Sur les systèmes d’architecture Intel, cela permet d’utiliser des instructions MMX si elles sont prises en charge par le processeur. Les pilotes qui n’utilisent pas correctement EngSaveFloatingPointState et EngRestoreFloatingPointState lors de l’utilisation d’un matériel à virgule flottante ou MMX entraînent une altération aléatoire à virgule flottante ou MMX dans l’application appelante.

À chaque appel au pilote, le pilote doit appeler EngSaveFloatingPointState une fois pour conserver l’état du noyau avant d’utiliser des opérations à virgule flottante ou MMX. Il doit également appeler EngRestoreFloatingPointState une fois que toutes les opérations à virgule flottante ou MMX sont terminées pour réinitialiser l’état du noyau.

GDI enregistre automatiquement l’état à virgule flottante pour tous les appels à la routine DrvEscape d’un pilote lorsque l’échappement est OPENGL_CMD, OPENGL_GETINFO ou MCDFUNCS.

Configuration requise

   
Client minimal pris en charge Disponible dans Windows 2000 et versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Universal
En-tête winddi.h (inclure Winddi.h)
Bibliothèque Win32k.lib
DLL Win32k.sys

Voir aussi

DrvEscape

EngRestoreFloatingPointState