1 /**
2  * This file is part of the mingw-w64 runtime package.
3  * No warranty is given; refer to the file DISCLAIMER within this package.
4  */
5 #ifndef _TIMEZONEAPI_H_
6 #define _TIMEZONEAPI_H_
7 
8 #include <apiset.h>
9 #include <apisetcconv.h>
10 #include <minwindef.h>
11 #include <minwinbase.h>
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
18 
19 #define TIME_ZONE_ID_INVALID ((DWORD)0xffffffff)
20 
21   typedef struct _TIME_ZONE_INFORMATION {
22     LONG Bias;
23     WCHAR StandardName[32];
24     SYSTEMTIME StandardDate;
25     LONG StandardBias;
26     WCHAR DaylightName[32];
27     SYSTEMTIME DaylightDate;
28     LONG DaylightBias;
29   } TIME_ZONE_INFORMATION,*PTIME_ZONE_INFORMATION,*LPTIME_ZONE_INFORMATION;
30 
31   typedef struct _TIME_DYNAMIC_ZONE_INFORMATION {
32     LONG Bias;
33     WCHAR StandardName[32];
34     SYSTEMTIME StandardDate;
35     LONG StandardBias;
36     WCHAR DaylightName[32];
37     SYSTEMTIME DaylightDate;
38     LONG DaylightBias;
39     WCHAR TimeZoneKeyName[128];
40     BOOLEAN DynamicDaylightTimeDisabled;
41   } DYNAMIC_TIME_ZONE_INFORMATION,*PDYNAMIC_TIME_ZONE_INFORMATION;
42 
43   WINBASEAPI WINBOOL WINAPI SystemTimeToTzSpecificLocalTime (CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation, CONST SYSTEMTIME *lpUniversalTime, LPSYSTEMTIME lpLocalTime);
44   WINBASEAPI WINBOOL WINAPI TzSpecificLocalTimeToSystemTime (CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation, CONST SYSTEMTIME *lpLocalTime, LPSYSTEMTIME lpUniversalTime);
45   WINBASEAPI WINBOOL WINAPI FileTimeToSystemTime (CONST FILETIME *lpFileTime, LPSYSTEMTIME lpSystemTime);
46   WINBASEAPI WINBOOL WINAPI SystemTimeToFileTime (CONST SYSTEMTIME *lpSystemTime, LPFILETIME lpFileTime);
47   WINBASEAPI DWORD WINAPI GetTimeZoneInformation (LPTIME_ZONE_INFORMATION lpTimeZoneInformation);
48 #if _WIN32_WINNT >= 0x0600
49   WINBASEAPI DWORD WINAPI GetDynamicTimeZoneInformation (PDYNAMIC_TIME_ZONE_INFORMATION pTimeZoneInformation);
50 #endif
51 #if _WIN32_WINNT >= 0x0601
52   WINBOOL WINAPI GetTimeZoneInformationForYear (USHORT wYear, PDYNAMIC_TIME_ZONE_INFORMATION pdtzi, LPTIME_ZONE_INFORMATION ptzi);
53 #endif
54 #if _WIN32_WINNT >= 0x0602
55   WINBASEAPI DWORD WINAPI EnumDynamicTimeZoneInformation (CONST DWORD dwIndex, PDYNAMIC_TIME_ZONE_INFORMATION lpTimeZoneInformation);
56   WINBASEAPI DWORD WINAPI GetDynamicTimeZoneInformationEffectiveYears (CONST PDYNAMIC_TIME_ZONE_INFORMATION lpTimeZoneInformation, LPDWORD FirstYear, LPDWORD LastYear);
57   WINBASEAPI WINBOOL WINAPI SystemTimeToTzSpecificLocalTimeEx (CONST DYNAMIC_TIME_ZONE_INFORMATION *lpTimeZoneInformation, CONST SYSTEMTIME *lpUniversalTime, LPSYSTEMTIME lpLocalTime);
58   WINBASEAPI WINBOOL WINAPI TzSpecificLocalTimeToSystemTimeEx (CONST DYNAMIC_TIME_ZONE_INFORMATION *lpTimeZoneInformation, CONST SYSTEMTIME *lpLocalTime, LPSYSTEMTIME lpUniversalTime);
59 #endif
60 
61 #endif
62 
63 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
64   WINBASEAPI WINBOOL WINAPI SetTimeZoneInformation (CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation);
65 #if _WIN32_WINNT >= 0x0600
66   WINBASEAPI WINBOOL WINAPI SetDynamicTimeZoneInformation (CONST DYNAMIC_TIME_ZONE_INFORMATION *lpTimeZoneInformation);
67 #endif
68 #endif
69 
70 #ifdef __cplusplus
71 }
72 #endif
73 #endif
74