Fonction KeRestoreFloatingPointState (wdm.h)
La routine KeRestoreFloatingPointState restaure le contexte à virgule flottante non volatile enregistré par l’appel précédent à KeSaveFloatingPointState.
Syntaxe
NTSTATUS KeRestoreFloatingPointState(
[in] PKFLOATING_SAVE FloatSave
);
Paramètres
[in] FloatSave
Pointeur vers la structure KFLOATING_SAVE passée dans l’appel précédent à KeSaveFloatingPointState.
Valeur retournée
KeRestoreFloatingPointState retourne STATUS_SUCCESS.
Remarques
KeRestoreFloatingPointState est la réciproque de KeSaveFloatingPointState.
Toute routine qui appelle KeSaveFloatingPointState doit appeler KeRestoreFloatingPointState avant que cette routine ne retourne le contrôle, et elle doit s’exécuter au même IRQL que celui à partir duquel l’appel précédent à KeSaveFloatingPointState s’est produit. Le non-respect de l’une de ces conditions entraîne un bogue système case activée.
Le code du pilote en mode noyau doit garantir que les appels à KeSaveFloatingPointState et KeRestoreFloatingPointState sont correctement imbriqués. Cela est nécessaire pour que, à chaque niveau d’imbrication, l’état qui a été restauré par l’appel KeRestoreFloatingPointState soit le même état que celui enregistré par l’appel KeSaveFloatingPointState correspondant. Pour garantir l’imbrication correcte, le code du pilote en mode noyau doit suivre les règles suivantes :
- Un appel KeRestoreFloatingPointState qui restaure un état enregistré doit s’exécuter au même niveau IRQL que l’appel KeSaveFloatingPointState qui a enregistré l’état.
- Si une paire d’appels KeSaveFloatingPointState et KeRestoreFloatingPointState est imbriquée dans une paire d’appels KeSaveFloatingPointState et KeRestoreFloatingPointState environnants, l’IRQL des appels imbriqués ne doit pas être inférieur à l’IRQL pour les appels environnants.
- En règle générale, la structure de KFLOATING_SAVE allouée par l’appelant qui contient l’état enregistré par KeSaveFloatingPointState réside sur la pile. La pile conserve naturellement l’imbrication des informations d’état enregistrées. Si le code du pilote stocke l’état à un emplacement autre que la pile, l’enregistreur de pilotes doit veiller particulièrement à préserver l’imbrication des appels KeSaveFloatingPointState et KeRestoreFloatingPointState .
- L’appel KeRestoreFloatingPointState qui restaure un état enregistré doit s’exécuter dans le même thread que l’appel KeSaveFloatingPointState qui a enregistré l’état.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
En-tête | wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (voir la section Remarques) |