00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00034
#ifndef _THREADS_1__WIN32__MICRO_TIME_HPP_
00035
#define _THREADS_1__WIN32__MICRO_TIME_HPP_
00036
00037
#define WIN32_LEAN_AND_MEAN
00038
#include <windows.h>
00039
00040
#include <threads_1/h/micro_time.hpp>
00041
00042
namespace threads_1
00043 {
00044
00045
namespace micro_time
00046 {
00047
00052
inline unix_t
00053
_os_get()
00054 {
00055
typedef unsigned __int64 uint64_type;
00056
00057
00058
00059
const uint64_type delta =
00060 (((uint64_type) 0x019DB1DE) << 32) |
00061 ((uint64_type) 0xD53E8000);
00062
00063
00064 FILETIME ft_current;
00065 GetSystemTimeAsFileTime( &ft_current );
00066
00067 uint64_type current =
00068 ((((uint64_type) ft_current.dwHighDateTime) << 32) |
00069 ((uint64_type) ft_current.dwLowDateTime)) - delta;
00070
00071
return unix_t(
00072
00073 (time_t)( ( current ) / 10000000 ),
00074
00075 (
unsigned long)( ( current % 10000000 + 5 ) / 10 ) );
00076 }
00077
00078 }
00079
00080 }
00081
00082
#endif