|  | /** | 
|  | * 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 |