// 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.
Comments
0 B
|👍
/👎
0 B
|👍
/👎
0 B
|👍
/👎