KeSaveFloatingPointState, fonction (wdm.h)
La routine KeSaveFloatingPointState enregistre le contexte à virgule flottante nonvolatile afin que l’appelant puisse effectuer des opérations à virgule flottante.
Syntaxe
NTSTATUS KeSaveFloatingPointState(
[out] PKFLOATING_SAVE FloatSave
);
Paramètres
[out] FloatSave
Pointeur vers une mémoire tampon résidente allouée par l’appelant, qui doit être au moins taille de(KFLOATING_SAVE).
Valeur de retour
KeSaveFloatingPointState retourne STATUS_SUCCESS si elle a enregistré le contexte à virgule flottante du thread actuel et configuré un nouveau contexte à virgule flottante pour l’appelant. Sinon, elle retourne l’un des codes d’état d’erreur suivants.
Retourner le code | Description |
---|---|
|
Le système est configuré pour utiliser l’émulation à virgule flottante plutôt que d’effectuer des opérations à virgule flottante dans les processeurs. |
|
KeSaveFloatingPointState n’a pas pu allouer suffisamment de mémoire pour enregistrer le contexte à virgule flottante du thread actuel. |
Remarques
Un appel réussi à KeSaveFloatingPointState permet à l’appelant d’effectuer des opérations à virgule flottante, mais un tel appelant doit restaurer le contexte à virgule flottante nonvolatile précédent dès que ses opérations à virgule flottante sont effectuées. Toute routine qui appelle KeSaveFloatingPointState doit appeler KeRestoreFloatingPointState avant que cette routine retourne le contrôle.
Si l’appel à KeSaveFloatingPointState réussit, les données de FloatSave sont opaques pour l’appelant. L’appelant ne doit pas libérer la mémoire qu’il a allouée pour ces données tant qu’après l’appel à KeRestoreFloatingPointState.
Dans Windows Vista et les versions antérieures de Windows, un appel KeSaveFloatingPointState et l’appel KeRestoreFloatingPoint State correspondant doit se produire dans une région protégée. Autrement dit, la routine keEnterGuardedRegion doit être appelée avant KeSaveFloatingPointState est appelée, et la routine KeLeaveGuardedRegion doit être appelée après KeRestoreFloatingPointState. Aucune exigence de ce type n’existe dans Windows 7 et les versions ultérieures de Windows.
Pour des raisons de performances, les pilotes doivent éviter d’effectuer des opérations à virgule flottante, sauf si absolument nécessaire. La surcharge d’enregistrement et de restauration de l’état à virgule flottante nonvolatile du thread actuel dégrade les performances d’un pilote qui effectue des opérations à virgule flottante.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows 2000. |
plateforme cible | Universel |
d’en-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
règles de conformité DDI | HwStorPortProhibitedDDIs(storport), IrqlKeDispatchLte(wdm) |