KeSaveFloatingPointState, fonction (wdm.h)
La routine KeSaveFloatingPointState enregistre le contexte à virgule flottante non volatile 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 à l’appelant, qui doit être au moins sizeof(KFLOATING_SAVE).
Valeur retournée
KeSaveFloatingPointState retourne STATUS_SUCCESS s’il a enregistré le contexte à virgule flottante du thread actuel et configuré un nouveau contexte à virgule flottante pour l’appelant. Sinon, elle retourne l’une des erreurs suivantes status codes.
Code de retour | 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 ses propres opérations à virgule flottante, mais un tel appelant doit restaurer le contexte à virgule flottante non volatile 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 dans 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 avant l’appel à KeRestoreFloatingPointState.
Dans Windows Vista et les versions antérieures de Windows, un appel KeSaveFloatingPointState et l’appel KeRestoreFloatingPointState correspondant doivent se produire dans une région protégée. Autrement dit, la routine KeEnterGuardedRegion doit être appelée avant l’appel de KeSaveFloatingPointState , et la routine KeLeaveGuardedRegion doit être appelée après l’appel de KeRestoreFloatingPointState . Aucune exigence de ce type n’existe dans Windows 7 et versions ultérieures de Windows.
Pour des raisons de performances, les pilotes doivent éviter d’effectuer des opérations à virgule flottante, sauf si cela est absolument nécessaire. La surcharge liée à l’enregistrement et à la restauration de l’état à virgule flottante non volatile du thread actuel dégrade les performances de tout pilote qui effectue des opérations à virgule flottante.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
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) |