Función KeSaveFloatingPointState (wdm.h)
La rutina KeSaveFloatingPointState guarda el contexto de punto flotante no volátil para que el autor de la llamada pueda realizar operaciones de punto flotante.
Sintaxis
NTSTATUS KeSaveFloatingPointState(
[out] PKFLOATING_SAVE FloatSave
);
Parámetros
[out] FloatSave
Puntero a un búfer residente asignado por el autor de la llamada, que debe ser al menos sizeof(KFLOATING_SAVE).
Valor devuelto
KeSaveFloatingPointState devuelve STATUS_SUCCESS si guardó el contexto de punto flotante del subproceso actual y configuró un contexto de punto flotante nuevo para el autor de la llamada. De lo contrario, devuelve uno de los siguientes códigos de estado de error.
Código devuelto | Descripción |
---|---|
|
El sistema está configurado para usar la emulación de punto flotante, en lugar de realizar operaciones de punto flotante en los procesadores. |
|
KeSaveFloatingPointState no pudo asignar suficiente memoria para guardar el contexto de punto flotante del subproceso actual. |
Comentarios
Una llamada correcta a KeSaveFloatingPointState permite al autor de la llamada llevar a cabo operaciones de punto flotante propias, pero este tipo de llamador debe restaurar el contexto de punto flotante no volátil anterior en cuanto se realizan sus operaciones de punto flotante. Cualquier rutina que llame a KeSaveFloatingPointState debe llamar a KeRestoreFloatingPointState antes de que esa rutina devuelva el control.
Si la llamada a KeSaveFloatingPointState se realiza correctamente, los datos de FloatSave son opacos para el autor de la llamada. El autor de la llamada no debe liberar la memoria que asignó para estos datos hasta después de la llamada a KeRestoreFloatingPointState.
En Windows Vista y versiones anteriores de Windows, se debe producir una llamada KeSaveFloatingPointState y la llamada KeRestoreFloatingPointState correspondiente en una región protegida. Es decir, se debe llamar a la rutina KeEnterGuardedRegion antes de llamar a KeSaveFloatingPointState y se debe llamar a la rutina KeLeaveGuardedRegion después de llamar a KeRestoreFloatingPointState . No existe este requisito en Windows 7 y versiones posteriores de Windows.
Por motivos de rendimiento, los controladores deben evitar realizar operaciones de punto flotante a menos que sea absolutamente necesario. La sobrecarga de guardar y restaurar el estado de punto flotante no volátil del subproceso actual reduce el rendimiento de cualquier controlador que realice operaciones de punto flotante.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 2000. |
Plataforma de destino | Universal |
Encabezado | wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm) |