111 lines
3.5 KiB
C
111 lines
3.5 KiB
C
/**
|
|
* 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
|