ReactOS 0.4.15-dev-7842-g558ab78
float.c
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * PURPOSE: Engine floating point functions
5 * FILE: win32ss/gdi/eng/float.c
6 * PROGRAMER: David Welch
7 */
8
9/* INCLUDES *****************************************************************/
10
11#include <win32k.h>
12
13#define NDEBUG
14#include <debug.h>
15
16/* FUNCTIONS *****************************************************************/
17
18#ifdef _PREFAST_
19#pragma warning(disable:__WARNING_WRONG_KIND)
20#endif
21
23_Success_(return)
26 _Kernel_releases_resource_(EngFloatState))
28BOOL
30EngRestoreFloatingPointState(
31 _In_reads_(_Inexpressible_(statesize)) PVOID pBuffer)
32{
34
36 if (!NT_SUCCESS(Status))
37 {
38 return FALSE;
39 }
40
41 return TRUE;
42}
43
45_Success_(((pBuffer != NULL && cjBufferSize != 0) && return == 1) ||
46 ((pBuffer == NULL || cjBufferSize == 0) && return > 0))
47_When_(pBuffer != NULL && cjBufferSize != 0 && return == 1, _Kernel_float_saved_
53EngSaveFloatingPointState(
56 _Inout_ ULONG cjBufferSize)
57{
58 KFLOATING_SAVE TempBuffer;
60
61 if ((pBuffer == NULL) || (cjBufferSize == 0))
62 {
63 /* Check for floating point support. */
64 Status = KeSaveFloatingPointState(&TempBuffer);
66 {
67 return(0);
68 }
69
70 KeRestoreFloatingPointState(&TempBuffer);
71 return(sizeof(KFLOATING_SAVE));
72 }
73
74 if (cjBufferSize < sizeof(KFLOATING_SAVE))
75 {
76 return(0);
77 }
78
80 if (!NT_SUCCESS(Status))
81 {
82 return FALSE;
83 }
84
85 return TRUE;
86}
87
LONG NTSTATUS
Definition: precomp.h:26
return
Definition: dirsup.c:529
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define APIENTRY
Definition: api.h:79
#define _Kernel_float_restored_
Definition: driverspecs.h:240
#define _Kernel_requires_resource_held_(kind)
Definition: driverspecs.h:245
#define _Kernel_requires_resource_not_held_(kind)
Definition: driverspecs.h:246
#define _Kernel_releases_resource_(kind)
Definition: driverspecs.h:244
#define _Kernel_acquires_resource_(kind)
Definition: driverspecs.h:247
#define _Kernel_float_saved_
Definition: driverspecs.h:241
unsigned int BOOL
Definition: ntddk_ex.h:94
Status
Definition: gdiplustypes.h:25
#define KeSaveFloatingPointState(x)
Definition: kmixer.h:32
#define KeRestoreFloatingPointState(x)
Definition: kmixer.h:33
#define _Success_(expr)
Definition: ms_sal.h:259
#define _Inout_
Definition: ms_sal.h:378
#define _On_failure_(annos)
Definition: ms_sal.h:266
#define _Check_return_
Definition: ms_sal.h:557
#define _Post_valid_
Definition: ms_sal.h:694
#define _At_(target, annos)
Definition: ms_sal.h:244
#define _When_(expr, annos)
Definition: ms_sal.h:254
#define _Post_satisfies_(cond)
Definition: ms_sal.h:588
#define _Out_writes_bytes_opt_(size)
Definition: ms_sal.h:351
#define _In_reads_(size)
Definition: ms_sal.h:319
PVOID pBuffer
#define STATUS_SUCCESS
Definition: shellext.h:65
uint32_t ULONG
Definition: typedefs.h:59
#define ENGAPI
Definition: winddi.h:48