ReactOS 0.4.17-dev-37-g0bfb40d
time.c
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: dll/win32/kernel32/client/time.c
5 * PURPOSE: Time conversion functions
6 * PROGRAMMER: Ariadne
7 * DOSDATE and DOSTIME structures from Onno Hovers
8 * UPDATE HISTORY:
9 * Created 19/01/99
10 */
11
12/* INCLUDES *******************************************************************/
13
14#include <k32.h>
15
16#define NDEBUG
17#include <debug.h>
18
19/* FUNCTIONS ******************************************************************/
20
21/*
22 * @implemented
23 */
24BOOL
27{
28 /* Return if a TS Timezone ID is active */
30}
31
32/*
33 * @implemented
34 */
35BOOL
38 OUT LPWORD lpFatDate,
39 OUT LPWORD lpFatTime)
40{
41 LARGE_INTEGER FileTime;
43
44 FileTime.HighPart = lpFileTime->dwHighDateTime;
45 FileTime.LowPart = lpFileTime->dwLowDateTime;
46
47 if (FileTime.QuadPart < 0)
48 {
50 return FALSE;
51 }
52
54 if ((TimeFields.Year < 1980) || (TimeFields.Year > 2107))
55 {
57 return FALSE;
58 }
59
60 *lpFatDate = (TimeFields.Day) |
61 (TimeFields.Month << 5) |
62 ((TimeFields.Year - 1980) << 9);
63 *lpFatTime = (TimeFields.Second >> 1) |
64 (TimeFields.Minute << 5) |
65 (TimeFields.Hour << 11);
66
67 return TRUE;
68}
69
70/*
71 * @implemented
72 */
73BOOL
76 IN WORD wFatTime,
77 OUT LPFILETIME lpFileTime)
78{
80 LARGE_INTEGER SystemTime;
81
82 TimeFields.Year = (wFatDate >> 9) + 1980;
83 TimeFields.Month = (wFatDate >> 5) & 0xF;
84 TimeFields.Day = (wFatDate & 0x1F);
85 TimeFields.Hour = (wFatTime >> 11);
86 TimeFields.Minute = (wFatTime >> 5) & 0x3F;
87 TimeFields.Second = (wFatTime & 0x1F) << 1;
89
90 if (RtlTimeFieldsToTime(&TimeFields, &SystemTime))
91 {
92 lpFileTime->dwLowDateTime = SystemTime.LowPart;
93 lpFileTime->dwHighDateTime = SystemTime.HighPart;
94 return TRUE;
95 }
96
98 return FALSE;
99}
100
101/*
102 * @implemented
103 */
104LONG
105WINAPI
107 IN CONST FILETIME *lpFileTime2)
108{
109 LARGE_INTEGER Time1, Time2, Diff;
110
111 Time1.LowPart = lpFileTime1->dwLowDateTime;
112 Time2.LowPart = lpFileTime2->dwLowDateTime;
113 Time1.HighPart = lpFileTime1->dwHighDateTime;
114 Time2.HighPart = lpFileTime2->dwHighDateTime;
115
116 Diff.QuadPart = Time1.QuadPart - Time2.QuadPart;
117
118 if (Diff.HighPart < 0) return -1;
119 if (Diff.QuadPart == 0) return 0;
120 return 1;
121}
122
123/*
124 * @implemented
125 */
126VOID
127WINAPI
129{
130 LARGE_INTEGER SystemTime;
131
132 SystemTime = KiReadSystemTime(&SharedUserData->SystemTime);
133
134 lpFileTime->dwLowDateTime = SystemTime.LowPart;
135 lpFileTime->dwHighDateTime = SystemTime.HighPart;
136}
137
138/*
139 * @unimplemented
140 */
141VOID
142WINAPI
144{
145 STUB;
146}
147
148/*
149 * @implemented
150 */
151BOOL
152WINAPI
154 OUT LPFILETIME lpFileTime)
155{
157 LARGE_INTEGER liTime;
158
159 TimeFields.Year = lpSystemTime->wYear;
160 TimeFields.Month = lpSystemTime->wMonth;
161 TimeFields.Day = lpSystemTime->wDay;
162 TimeFields.Hour = lpSystemTime->wHour;
163 TimeFields.Minute = lpSystemTime->wMinute;
164 TimeFields.Second = lpSystemTime->wSecond;
165 TimeFields.Milliseconds = lpSystemTime->wMilliseconds;
166
167 if (RtlTimeFieldsToTime(&TimeFields, &liTime))
168 {
169 lpFileTime->dwLowDateTime = liTime.u.LowPart;
170 lpFileTime->dwHighDateTime = liTime.u.HighPart;
171 return TRUE;
172 }
173
175 return FALSE;
176}
177
178/*
179 * @implemented
180 */
181BOOL
182WINAPI
184 OUT LPSYSTEMTIME lpSystemTime)
185{
187 LARGE_INTEGER liTime;
188
189 liTime.u.LowPart = lpFileTime->dwLowDateTime;
190 liTime.u.HighPart = lpFileTime->dwHighDateTime;
191 if (liTime.QuadPart < 0)
192 {
194 return FALSE;
195 }
196
198
199 lpSystemTime->wYear = TimeFields.Year;
200 lpSystemTime->wMonth = TimeFields.Month;
201 lpSystemTime->wDay = TimeFields.Day;
202 lpSystemTime->wHour = TimeFields.Hour;
203 lpSystemTime->wMinute = TimeFields.Minute;
204 lpSystemTime->wSecond = TimeFields.Second;
205 lpSystemTime->wMilliseconds = TimeFields.Milliseconds;
206 lpSystemTime->wDayOfWeek = TimeFields.Weekday;
207
208 return TRUE;
209}
210
211/*
212 * @implemented
213 */
214BOOL
215WINAPI
217 OUT LPFILETIME lpLocalFileTime)
218{
219 LARGE_INTEGER TimeZoneBias, FileTime;
220 volatile KSYSTEM_TIME *TimePtr;
221
222 TimePtr = IsTimeZoneRedirectionEnabled() ?
224 &SharedUserData->TimeZoneBias;
225
226 TimeZoneBias = KiReadSystemTime(TimePtr);
227
228 FileTime.LowPart = lpFileTime->dwLowDateTime;
229 FileTime.HighPart = lpFileTime->dwHighDateTime;
230
231 FileTime.QuadPart -= TimeZoneBias.QuadPart;
232
233 lpLocalFileTime->dwLowDateTime = FileTime.LowPart;
234 lpLocalFileTime->dwHighDateTime = FileTime.HighPart;
235
236 return TRUE;
237}
238
239/*
240 * @implemented
241 */
242BOOL
243WINAPI
245 OUT LPFILETIME lpFileTime)
246{
247 LARGE_INTEGER TimeZoneBias, FileTime;
248 volatile KSYSTEM_TIME *TimePtr;
249
250 TimePtr = IsTimeZoneRedirectionEnabled() ?
252 &SharedUserData->TimeZoneBias;
253
254 TimeZoneBias = KiReadSystemTime(TimePtr);
255
256 FileTime.LowPart = lpLocalFileTime->dwLowDateTime;
257 FileTime.HighPart = lpLocalFileTime->dwHighDateTime;
258
259 FileTime.QuadPart += TimeZoneBias.QuadPart;
260
261 lpFileTime->dwLowDateTime = FileTime.LowPart;
262 lpFileTime->dwHighDateTime = FileTime.HighPart;
263
264 return TRUE;
265}
266
267/*
268 * @implemented
269 */
270VOID
271WINAPI
273{
274 LARGE_INTEGER SystemTime, TimeZoneBias;
276 volatile KSYSTEM_TIME *TimePtr;
277
278 SystemTime = KiReadSystemTime(&SharedUserData->SystemTime);
279
280 TimePtr = IsTimeZoneRedirectionEnabled() ?
282 &SharedUserData->TimeZoneBias;
283
284 TimeZoneBias = KiReadSystemTime(TimePtr);
285
286 SystemTime.QuadPart -= TimeZoneBias.QuadPart;
287 RtlTimeToTimeFields(&SystemTime, &TimeFields);
288
289 lpSystemTime->wYear = TimeFields.Year;
290 lpSystemTime->wMonth = TimeFields.Month;
291 lpSystemTime->wDay = TimeFields.Day;
292 lpSystemTime->wHour = TimeFields.Hour;
293 lpSystemTime->wMinute = TimeFields.Minute;
294 lpSystemTime->wSecond = TimeFields.Second;
295 lpSystemTime->wMilliseconds = TimeFields.Milliseconds;
296 lpSystemTime->wDayOfWeek = TimeFields.Weekday;
297}
298
299/*
300 * @implemented
301 */
302VOID
303WINAPI
305{
306 LARGE_INTEGER SystemTime;
308
309 SystemTime = KiReadSystemTime(&SharedUserData->SystemTime);
310
311 RtlTimeToTimeFields(&SystemTime, &TimeFields);
312
313 lpSystemTime->wYear = TimeFields.Year;
314 lpSystemTime->wMonth = TimeFields.Month;
315 lpSystemTime->wDay = TimeFields.Day;
316 lpSystemTime->wHour = TimeFields.Hour;
317 lpSystemTime->wMinute = TimeFields.Minute;
318 lpSystemTime->wSecond = TimeFields.Second;
319 lpSystemTime->wMilliseconds = TimeFields.Milliseconds;
320 lpSystemTime->wDayOfWeek = TimeFields.Weekday;
321}
322
323/*
324 * @implemented
325 */
326BOOL
327WINAPI
329{
330 LARGE_INTEGER NewSystemTime, TimeZoneBias;
334 PVOID State;
335 volatile KSYSTEM_TIME *TimePtr;
336
337 TimePtr = IsTimeZoneRedirectionEnabled() ?
339 &SharedUserData->TimeZoneBias;
340
341 TimeZoneBias = KiReadSystemTime(TimePtr);
342
343 TimeFields.Year = lpSystemTime->wYear;
344 TimeFields.Month = lpSystemTime->wMonth;
345 TimeFields.Day = lpSystemTime->wDay;
346 TimeFields.Hour = lpSystemTime->wHour;
347 TimeFields.Minute = lpSystemTime->wMinute;
348 TimeFields.Second = lpSystemTime->wSecond;
349 TimeFields.Milliseconds = lpSystemTime->wMilliseconds;
350
351 if (!RtlTimeFieldsToTime(&TimeFields, &NewSystemTime))
352 {
354 return FALSE;
355 }
356
357 NewSystemTime.QuadPart += TimeZoneBias.QuadPart;
358
360 if (NT_SUCCESS(Status))
361 {
362 Status = NtSetSystemTime(&NewSystemTime, NULL);
364 }
365
366 if (!NT_SUCCESS(Status))
367 {
369 return FALSE;
370 }
371
372 return TRUE;
373}
374
375/*
376 * @implemented
377 */
378BOOL
379WINAPI
381{
382 LARGE_INTEGER NewSystemTime;
386 PVOID State;
387
388 TimeFields.Year = lpSystemTime->wYear;
389 TimeFields.Month = lpSystemTime->wMonth;
390 TimeFields.Day = lpSystemTime->wDay;
391 TimeFields.Hour = lpSystemTime->wHour;
392 TimeFields.Minute = lpSystemTime->wMinute;
393 TimeFields.Second = lpSystemTime->wSecond;
394 TimeFields.Milliseconds = lpSystemTime->wMilliseconds;
395
396 if (!RtlTimeFieldsToTime(&TimeFields, &NewSystemTime))
397 {
399 return FALSE;
400 }
401
403 if (NT_SUCCESS(Status))
404 {
405 Status = NtSetSystemTime(&NewSystemTime, NULL);
407 }
408
409 if (!NT_SUCCESS(Status))
410 {
412 return FALSE;
413 }
414
415 return TRUE;
416}
417
418/*
419 * @implemented
420 */
421DWORD
422WINAPI
424{
425 LARGE_INTEGER TickCount;
426
427 TickCount = KiReadSystemTime(&SharedUserData->TickCount);
428
429 /* Convert to milliseconds */
430 return (DWORD)KiTickCountToMs(TickCount);
431}
432
433/*
434 * @implemented
435 */
436BOOL
437WINAPI
439 OUT PDWORD lpTimeIncrement,
440 OUT PBOOL lpTimeAdjustmentDisabled)
441{
444
446 &TimeInfo,
447 sizeof(TimeInfo),
448 NULL);
449 if (!NT_SUCCESS(Status))
450 {
452 return FALSE;
453 }
454
455 *lpTimeAdjustment = (DWORD)TimeInfo.TimeAdjustment;
456 *lpTimeIncrement = (DWORD)TimeInfo.TimeIncrement;
457 *lpTimeAdjustmentDisabled = (BOOL)TimeInfo.Enable;
458
459 return TRUE;
460}
461
462/*
463 * @implemented
464 */
465BOOL
466WINAPI
468 IN BOOL bTimeAdjustmentDisabled)
469{
472
473 TimeInfo.TimeAdjustment = (ULONG)dwTimeAdjustment;
474 TimeInfo.Enable = (BOOLEAN)bTimeAdjustmentDisabled;
475
477 &TimeInfo,
478 sizeof(TimeInfo));
479 if (!NT_SUCCESS(Status))
480 {
482 return FALSE;
483 }
484
485 return TRUE;
486}
487
488/*
489 * @implemented
490 */
491BOOL
492WINAPI
494 OUT LPFILETIME lpKernelTime OPTIONAL,
495 OUT LPFILETIME lpUserTime OPTIONAL)
496{
498 LARGE_INTEGER TotalUserTime, TotalKernTime, TotalIdleTime;
500 CCHAR i;
502
503 TotalUserTime.QuadPart = TotalKernTime.QuadPart = TotalIdleTime.QuadPart = 0;
504
507
508 ProcPerfInfo = RtlAllocateHeap(RtlGetProcessHeap(), 0, BufferSize);
509 if (!ProcPerfInfo)
510 {
512 return FALSE;
513 }
514
516 ProcPerfInfo,
518 &ReturnLength);
520 {
521 if (lpIdleTime)
522 {
524 {
525 TotalIdleTime.QuadPart += ProcPerfInfo[i].IdleTime.QuadPart;
526 }
527
528 lpIdleTime->dwLowDateTime = TotalIdleTime.LowPart;
529 lpIdleTime->dwHighDateTime = TotalIdleTime.HighPart;
530 }
531
532 if (lpKernelTime)
533 {
535 {
536 TotalKernTime.QuadPart += ProcPerfInfo[i].KernelTime.QuadPart;
537 }
538
539 lpKernelTime->dwLowDateTime = TotalKernTime.LowPart;
540 lpKernelTime->dwHighDateTime = TotalKernTime.HighPart;
541 }
542
543 if (lpUserTime)
544 {
546 {
547 TotalUserTime.QuadPart += ProcPerfInfo[i].UserTime.QuadPart;
548 }
549
550 lpUserTime->dwLowDateTime = TotalUserTime.LowPart;
551 lpUserTime->dwHighDateTime = TotalUserTime.HighPart;
552 }
553 }
554 else if (NT_SUCCESS(Status))
555 {
557 }
558
559 RtlFreeHeap(RtlGetProcessHeap(), 0, ProcPerfInfo);
560 if (!NT_SUCCESS(Status))
561 {
563 return FALSE;
564 }
565
566 return TRUE;
567}
568
569/*
570 * @unimplemented
571 */
572BOOL
573WINAPI
575{
576 STUB;
577 return 0;
578}
579
580/* EOF */
NTSYSAPI NTSTATUS NTAPI NtSetSystemInformation(IN INT SystemInformationClass, IN PVOID SystemInformation, IN ULONG SystemInformationLength)
_In_ PVOID _In_ ULONG _Out_ PVOID _In_ ULONG _Inout_ PULONG ReturnLength
LONG NTSTATUS
Definition: precomp.h:26
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
Definition: heap.c:616
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
Definition: heap.c:634
#define STATUS_NO_MEMORY
Definition: d3dkmdt.h:51
#define BufferSize
Definition: mmc.h:75
#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:33
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define SetLastError(x)
Definition: compat.h:752
PBASE_STATIC_SERVER_DATA BaseStaticServerData
Definition: dllmain.c:19
BOOL WINAPI SetClientTimeZoneInformation(IN CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation)
Definition: time.c:574
VOID WINAPI GetSystemTimeAsFileTime(OUT PFILETIME lpFileTime)
Definition: time.c:128
BOOL WINAPI GetSystemTimes(OUT LPFILETIME lpIdleTime OPTIONAL, OUT LPFILETIME lpKernelTime OPTIONAL, OUT LPFILETIME lpUserTime OPTIONAL)
Definition: time.c:493
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
Definition: time.c:183
BOOL WINAPI SystemTimeToFileTime(IN CONST SYSTEMTIME *lpSystemTime, OUT LPFILETIME lpFileTime)
Definition: time.c:153
BOOL WINAPI SetSystemTimeAdjustment(IN DWORD dwTimeAdjustment, IN BOOL bTimeAdjustmentDisabled)
Definition: time.c:467
BOOL WINAPI SetLocalTime(IN CONST SYSTEMTIME *lpSystemTime)
Definition: time.c:328
BOOL WINAPI GetSystemTimeAdjustment(OUT PDWORD lpTimeAdjustment, OUT PDWORD lpTimeIncrement, OUT PBOOL lpTimeAdjustmentDisabled)
Definition: time.c:438
BOOL WINAPI IsTimeZoneRedirectionEnabled(VOID)
Definition: time.c:26
BOOL WINAPI SetSystemTime(IN CONST SYSTEMTIME *lpSystemTime)
Definition: time.c:380
BOOL WINAPI FileTimeToLocalFileTime(IN CONST FILETIME *lpFileTime, OUT LPFILETIME lpLocalFileTime)
Definition: time.c:216
BOOL WINAPI DosDateTimeToFileTime(IN WORD wFatDate, IN WORD wFatTime, OUT LPFILETIME lpFileTime)
Definition: time.c:75
LONG WINAPI CompareFileTime(IN CONST FILETIME *lpFileTime1, IN CONST FILETIME *lpFileTime2)
Definition: time.c:106
BOOL WINAPI LocalFileTimeToFileTime(IN CONST FILETIME *lpLocalFileTime, OUT LPFILETIME lpFileTime)
Definition: time.c:244
VOID WINAPI GetLocalTime(OUT LPSYSTEMTIME lpSystemTime)
Definition: time.c:272
BOOL WINAPI FileTimeToDosDateTime(IN CONST FILETIME *lpFileTime, OUT LPWORD lpFatDate, OUT LPWORD lpFatTime)
Definition: time.c:37
VOID WINAPI GetSystemTime(OUT LPSYSTEMTIME lpSystemTime)
Definition: time.c:304
VOID WINAPI GetSystemTimePreciseAsFileTime(OUT PFILETIME lpFileTime)
Definition: time.c:143
ULONG WINAPI DECLSPEC_HOTPATCH GetTickCount(void)
Definition: sync.c:182
BOOLEAN RtlTimeToTimeFields(IN PLARGE_INTEGER Time, IN PTIME_FIELDS TimeFields)
BOOLEAN RtlTimeFieldsToTime(IN PTIME_FIELDS TimeFields, IN PLARGE_INTEGER Time)
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
@ SystemTimeAdjustmentInformation
Definition: ntddk_ex.h:39
@ SystemProcessorPerformanceInformation
Definition: ntddk_ex.h:19
Status
Definition: gdiplustypes.h:25
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define STUB
Definition: kernel32.h:27
BOOL * PBOOL
Definition: minwindef.h:137
#define SE_SYSTEMTIME_PRIVILEGE
Definition: security.c:596
static PTIME_FIELDS TimeFields
Definition: time.c:36
struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
FORCEINLINE ULONG64 KiTickCountToMs(_In_ LARGE_INTEGER TickCount)
Definition: kefuncs.h:453
FORCEINLINE LARGE_INTEGER KiReadSystemTime(_In_ volatile const KSYSTEM_TIME *SystemTime)
Definition: kefuncs.h:403
NTSYSAPI NTSTATUS NTAPI RtlAcquirePrivilege(_In_ PULONG Privilege, _In_ ULONG NumPriv, _In_ ULONG Flags, _Out_ PVOID *ReturnedState)
NTSYSAPI VOID NTAPI RtlReleasePrivilege(_In_ PVOID ReturnedState)
#define BOOL
Definition: nt_native.h:43
#define DWORD
Definition: nt_native.h:44
NTSTATUS NTAPI NtSetSystemTime(IN PLARGE_INTEGER SystemTime, OUT PLARGE_INTEGER PreviousTime OPTIONAL)
Definition: time.c:452
#define STATUS_INTERNAL_ERROR
Definition: ntstatus.h:559
#define CONST
Definition: pedump.c:81
#define BOOLEAN
Definition: pedump.c:73
DWORD * PDWORD
Definition: pedump.c:68
long LONG
Definition: pedump.c:60
DWORD BaseSetLastNTError(IN NTSTATUS Status)
Definition: reactos.cpp:167
#define SharedUserData
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
NTSYSAPI NTSTATUS NTAPI NtQuerySystemInformation(IN SYSTEM_INFORMATION_CLASS SystemInfoClass, OUT PVOID SystemInfoBuffer, IN ULONG SystemInfoBufferSize, OUT PULONG BytesReturned OPTIONAL)
KSYSTEM_TIME ktTermsrvClientBias
Definition: base.h:139
ULONG TermsrvClientTimeZoneId
Definition: base.h:140
SYSTEM_BASIC_INFORMATION SysInfo
Definition: base.h:130
USHORT Milliseconds
Definition: env_spec_w32.h:717
USHORT Weekday
Definition: env_spec_w32.h:718
uint16_t * LPWORD
Definition: typedefs.h:56
#define IN
Definition: typedefs.h:39
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
char CCHAR
Definition: typedefs.h:51
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
struct _LARGE_INTEGER::@2500 u
LONGLONG QuadPart
Definition: typedefs.h:114
ULONG LowPart
Definition: typedefs.h:106
BOOL Privilege(LPTSTR pszPrivilege, BOOL bEnable)
Definition: user_lib.cpp:531
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:254
#define TIME_ZONE_ID_INVALID
Definition: winbase.h:310
#define WINAPI
Definition: msvc.h:6