| /** | 
 |  * This file has no copyright assigned and is placed in the Public Domain. | 
 |  * This file is part of the mingw-w64 runtime package. | 
 |  * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
 |  */ | 
 | #ifndef TIMEPROV_H | 
 | #define TIMEPROV_H | 
 |  | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 |  | 
 | #define wszW32TimeRegKeyTimeProviders L"System\\CurrentControlSet\\Services\\W32Time\\TimeProviders" | 
 | #define wszW32TimeRegKeyPolicyTimeProviders L"Software\\Policies\\Microsoft\\W32Time\\TimeProviders" | 
 | #define wszW32TimeRegValueEnabled L"Enabled" | 
 | #define wszW32TimeRegValueDllName L"DllName" | 
 | #define wszW32TimeRegValueInputProvider L"InputProvider" | 
 |  | 
 | #define TSF_Hardware 0x00000001 | 
 | #define TSF_Authenticated 0x00000002 | 
 |  | 
 |   typedef enum TimeProvCmd { | 
 |     TPC_TimeJumped,TPC_UpdateConfig,TPC_PollIntervalChanged,TPC_GetSamples,TPC_NetTopoChange,TPC_Query,TPC_Shutdown | 
 |   } TimeProvCmd; | 
 |  | 
 |   typedef enum TimeSysInfo { | 
 |     TSI_LastSyncTime,TSI_ClockTickSize,TSI_ClockPrecision,TSI_CurrentTime,TSI_PhaseOffset,TSI_TickCount,TSI_LeapFlags,TSI_Stratum, | 
 |     TSI_ReferenceIdentifier,TSI_PollInterval,TSI_RootDelay,TSI_RootDispersion,TSI_TSFlags | 
 |   } TimeSysInfo; | 
 |  | 
 |   typedef enum TimeJumpedFlags { | 
 |     TJF_Default=0,TJF_UserRequested=1 | 
 |   } TimeJumpedFlags; | 
 |  | 
 |   typedef enum NetTopoChangeFlags { | 
 |     NTC_Default=0,NTC_UserRequested=1 | 
 |   } NetTopoChangeFlags; | 
 |  | 
 |   typedef enum TimeProvState { | 
 |     TPS_Running,TPS_Error | 
 |   } TimeProvState; | 
 |  | 
 |   struct SetProviderStatusInfo; | 
 |  | 
 |   typedef void (WINAPI SetProviderStatusInfoFreeFunc)(struct SetProviderStatusInfo *pspsi); | 
 |  | 
 |   typedef struct SetProviderStatusInfo { | 
 |     TimeProvState tpsCurrentState; | 
 |     DWORD dwStratum; | 
 |     LPWSTR wszProvName; | 
 |     HANDLE hWaitEvent; | 
 |     SetProviderStatusInfoFreeFunc *pfnFree; | 
 |     HRESULT *pHr; | 
 |     DWORD *pdwSysStratum; | 
 |   } SetProviderStatusInfo; | 
 |  | 
 |   typedef HRESULT (WINAPI GetTimeSysInfoFunc)(TimeSysInfo eInfo,void *pvInfo); | 
 |   typedef HRESULT (WINAPI LogTimeProvEventFunc)(WORD wType,WCHAR *wszProvName,WCHAR *wszMessage); | 
 |   typedef HRESULT (WINAPI AlertSamplesAvailFunc)(void); | 
 |   typedef HRESULT (WINAPI SetProviderStatusFunc)(SetProviderStatusInfo *pspsi); | 
 |  | 
 |   typedef struct TimeProvSysCallbacks { | 
 |     DWORD dwSize; | 
 |     GetTimeSysInfoFunc *pfnGetTimeSysInfo; | 
 |     LogTimeProvEventFunc *pfnLogTimeProvEvent; | 
 |     AlertSamplesAvailFunc *pfnAlertSamplesAvail; | 
 |     SetProviderStatusFunc *pfnSetProviderStatus; | 
 |   } TimeProvSysCallbacks; | 
 |  | 
 |   typedef void *TimeProvArgs; | 
 |  | 
 |   typedef struct TimeSample { | 
 |     DWORD dwSize; | 
 |     DWORD dwRefid; | 
 |     __MINGW_EXTENSION signed __int64 toOffset; | 
 |     __MINGW_EXTENSION signed __int64 toDelay; | 
 |     __MINGW_EXTENSION unsigned __int64 tpDispersion; | 
 |     __MINGW_EXTENSION unsigned __int64 nSysTickCount; | 
 |     __MINGW_EXTENSION signed __int64 nSysPhaseOffset; | 
 |     BYTE nLeapFlags; | 
 |     BYTE nStratum; | 
 |     DWORD dwTSFlags; | 
 |     WCHAR wszUniqueName[256]; | 
 |   } TimeSample; | 
 |  | 
 |   typedef struct TpcGetSamplesArgs { | 
 |     BYTE *pbSampleBuf; | 
 |     DWORD cbSampleBuf; | 
 |     DWORD dwSamplesReturned; | 
 |     DWORD dwSamplesAvailable; | 
 |   } TpcGetSamplesArgs; | 
 |  | 
 |   typedef struct TpcTimeJumpedArgs { | 
 |     TimeJumpedFlags tjfFlags; | 
 |   } TpcTimeJumpedArgs; | 
 |  | 
 |   typedef struct TpcNetTopoChangeArgs { | 
 |     NetTopoChangeFlags ntcfFlags; | 
 |   } TpcNetTopoChangeArgs; | 
 |  | 
 |   typedef void *TimeProvHandle; | 
 |  | 
 |   HRESULT WINAPI TimeProvOpen(WCHAR *wszName,TimeProvSysCallbacks *pSysCallbacks,TimeProvHandle *phTimeProv); | 
 |   HRESULT WINAPI TimeProvCommand(TimeProvHandle hTimeProv,TimeProvCmd eCmd,TimeProvArgs pvArgs); | 
 |   HRESULT WINAPI TimeProvClose(TimeProvHandle hTimeProv); | 
 |  | 
 | #ifdef __cplusplus | 
 | } | 
 | #endif | 
 | #endif |