DarthGizka icon

experimental unit for zw_GetSystemTimeAsFileTime

DarthGizka | PRO | 11/15/15 11:18:31 AM UTC | 0 ⭐ | 10485 👁️ | Never ⏰ | []
Delphi |

1.21 KB

|

None

|

0 👍

/

0 👎

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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎