Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // http://codereview.stackexchange.com/questions/110819/delphi-convenience-wrapper-for-getsystemtimepreciseasfiletime
- unit UTestGSTAFT_v1;
- interface
- uses
- {$ifdef VER150} Windows {$else} WinAPI.Windows {$endif};
- procedure zw_GetSystemTimeAsFileTime (var ft: TFileTime); stdcall;
- implementation
- procedure GSTAFT_AutoInit_ (var ft: TFileTime); stdcall; forward;
- type
- TGetSystemTimeAsFileTime = procedure (var ft: TFileTime); stdcall;
- var
- GetSystemTimeAsFileTime_: TGetSystemTimeAsFileTime = GSTAFT_AutoInit_;
- procedure zw_GetSystemTimeAsFileTime (var ft: TFileTime); stdcall;
- begin
- GetSystemTimeAsFileTime_(ft);
- end;
- {$ifdef VER150}
- function InterlockedCompareExchangePointer (var dst: Pointer; new_val, cmp_val: Pointer): Pointer;
- stdcall; external kernel32 name 'InterlockedCompareExchange';
- {$endif}
- procedure GSTAFT_AutoInit_ (var ft: TFileTime); stdcall;
- var
- fp: TFarProc;
- begin
- fp := GetProcAddress(GetModuleHandle('kernel32'), 'GetSystemTimePreciseAsFileTime');
- if fp = nil then
- fp := @GetSystemTimeAsFileTime;
- InterlockedCompareExchangePointer(Pointer(@GetSystemTimeAsFileTime_), fp, @GSTAFT_AutoInit_);
- GetSystemTimeAsFileTime_(ft);
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement