#ifdef _MSC_VER
#pragma once
#endif // _MSC_VER
#ifndef _TIMEZONEAPI_H_
#define _TIMEZONEAPI_H_
#include <apiset.h>
#include <apisetcconv.h>
#include <minwindef.h>
#include <minwinbase.h>
#ifdef __cplusplus
extern
"C"
{
#endif
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#define TIME_ZONE_ID_INVALID ((DWORD)0xFFFFFFFF)
typedef
struct
{
;
[
32
];
;
;
[
32
];
;
;
}
, *
, *
;
typedef
struct
{
;
[
32
];
;
;
[
32
];
;
;
[
128
];
;
}
, *
;
_Success_(return != FALSE)
(
_In_opt_ CONST TIME_ZONE_INFORMATION* lpTimeZoneInformation,
_In_ CONST SYSTEMTIME* lpUniversalTime,
_Out_ LPSYSTEMTIME lpLocalTime
);
_Success_(return != FALSE)
(
_In_opt_ CONST TIME_ZONE_INFORMATION* lpTimeZoneInformation,
_In_ CONST SYSTEMTIME* lpLocalTime,
_Out_ LPSYSTEMTIME lpUniversalTime
);
_Success_(return != FALSE)
(
_In_ CONST FILETIME* lpFileTime,
_Out_ LPSYSTEMTIME lpSystemTime
);
_Success_(return != FALSE)
(
_In_ CONST SYSTEMTIME* lpSystemTime,
_Out_ LPFILETIME lpFileTime
);
_Success_(return != TIME_ZONE_ID_INVALID)
(
_Out_ LPTIME_ZONE_INFORMATION lpTimeZoneInformation
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
(
_In_ CONST TIME_ZONE_INFORMATION* lpTimeZoneInformation
);
#if (_WIN32_WINNT >= 0x0600)
(
_In_ CONST DYNAMIC_TIME_ZONE_INFORMATION* lpTimeZoneInformation
const
DYNAMIC_TIME_ZONE_INFORMATION
*
);
#endif // _WIN32_WINNT >= 0x0600
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= 0x0600)
_Success_(return != TIME_ZONE_ID_INVALID)
(
_Out_ PDYNAMIC_TIME_ZONE_INFORMATION pTimeZoneInformation
PDYNAMIC_TIME_ZONE_INFORMATION
);
#endif // _WIN32_WINNT >= 0x0600
#if (_WIN32_WINNT >= 0x0601)
_Success_(return != FALSE)
(
_In_opt_ PDYNAMIC_TIME_ZONE_INFORMATION pdtzi,
PDYNAMIC_TIME_ZONE_INFORMATION
,
_Out_ LPTIME_ZONE_INFORMATION ptzi
);
#endif // _WIN32_WINNT >= 0x0601
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
_Success_(return == ERROR_SUCCESS)
(
_In_ CONST DWORD dwIndex,
_Out_ PDYNAMIC_TIME_ZONE_INFORMATION lpTimeZoneInformation
PDYNAMIC_TIME_ZONE_INFORMATION
);
_Success_(return == ERROR_SUCCESS)
(
_In_ CONST PDYNAMIC_TIME_ZONE_INFORMATION lpTimeZoneInformation,
const
PDYNAMIC_TIME_ZONE_INFORMATION
,
);
_Success_(return != FALSE)
(
_In_opt_ CONST DYNAMIC_TIME_ZONE_INFORMATION* lpTimeZoneInformation,
const
DYNAMIC_TIME_ZONE_INFORMATION
*
,
_In_ CONST SYSTEMTIME* lpUniversalTime,
_Out_ LPSYSTEMTIME lpLocalTime
);
_Success_(return != FALSE)
(
_In_opt_ CONST DYNAMIC_TIME_ZONE_INFORMATION* lpTimeZoneInformation,
const
DYNAMIC_TIME_ZONE_INFORMATION
*
,
_In_ CONST SYSTEMTIME* lpLocalTime,
_Out_ LPSYSTEMTIME lpUniversalTime
);
#endif /* (_WIN32_WINNT >= _WIN32_WINNT_WIN8) */
#if (NTDDI_VERSION >= NTDDI_WIN10_RS5)
_Success_(return != FALSE)
(
_In_opt_ CONST TIME_ZONE_INFORMATION* timeZoneInformation,
_In_ CONST FILETIME* localFileTime,
_Out_ SYSTEMTIME* localSystemTime
);
_Success_(return != FALSE)
(
_In_opt_ CONST TIME_ZONE_INFORMATION* timeZoneInformation,
_In_ CONST SYSTEMTIME* localSystemTime,
_Out_ FILETIME* localFileTime
);
#endif /* (NTDDI_VERSION >= NTDDI_WIN10_RS5) */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#ifdef __cplusplus
}
#endif
#endif // _TIMEZONEAPI_H_