| /** | |
| * This file has no copyright assigned and is placed in the Public Domain. | |
| * This file is part of the w64 mingw-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 |