Compartir a través de


Función KeSaveFloatingPointState (wdm.h)

La rutina de 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 tamaño de(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
STATUS_ILLEGAL_FLOAT_CONTEXT
El sistema está configurado para usar la emulación de punto flotante, en lugar de realizar operaciones de punto flotante en los procesadores.
STATUS_INSUFFICIENT_RESOURCES
KeSaveFloatingPointState no pudo asignar memoria suficiente para guardar el contexto de punto flotante del subproceso actual.

Observaciones

Una llamada correcta a KeSaveFloatingPointState permite al autor de la llamada llevar a cabo operaciones de punto flotante propias, pero este debe restaurar el contexto de punto flotante no volátil anterior en cuanto se realicen 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 es opaco 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, una llamada KeSaveFloatingPointState y la llamada KeRestoreFloatingPointState correspondiente debe producirse 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 se llama 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 degrada el rendimiento de cualquier controlador que realice operaciones de punto flotante.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible a partir de Windows 2000.
de la plataforma de destino de Universal
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL <= DISPATCH_LEVEL
reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm)

Consulte también

KeEnterGuardedRegion

KeGetCurrentThread

KeLeaveGuardedRegion

keRestoreFloatingPointState

psCreateSystemThread