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
14extern "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