7,789
社区成员
发帖
与我相关
我的任务
分享
这个在 Win7 64位上都是正常的, 到了Win8那儿,就BUG了?有点说不通吧。
[/quote]
好久不见!
我搜了一下,看见有人在说开机五六小时就负值的,也是WIN8 64位,但没提到原因.
另外这个GetTickCount只是读个值,也许它读的那个地方被改了?比如有名的变速齿轮之类软件,就是HOOK相关的时间API来实现变速的[/quote]
按理说也不应该有什么软件去乱改这些数据。
呃,我们在这儿瞎猜,没有什么意义。
我刚来这个帖子回复时,就说了叫楼主验证一下。
按我在3楼说的做一下验证,找一点“推测依据”也不是难事,他却啥也不过问,
只管自顾自的“问”,对别人的疑惑他当没看见。
问题不能解决,我们也无法确认“出问题”的原因,费那些脑筋干什么!
我不可能为了他这个没什么价值的问题,去装一个毫无意义的Win8来试吧!!!
[/quote]
也是啊!别人楼主都不上心,咱们费个啥劲啊,热脸贴啥冷屁股哈哈
这个在 Win7 64位上都是正常的, 到了Win8那儿,就BUG了?有点说不通吧。
[/quote]
好久不见!
我搜了一下,看见有人在说开机五六小时就负值的,也是WIN8 64位,但没提到原因.
另外这个GetTickCount只是读个值,也许它读的那个地方被改了?比如有名的变速齿轮之类软件,就是HOOK相关的时间API来实现变速的[/quote]
按理说也不应该有什么软件去乱改这些数据。
呃,我们在这儿瞎猜,没有什么意义。
我刚来这个帖子回复时,就说了叫楼主验证一下。
按我在3楼说的做一下验证,找一点“推测依据”也不是难事,他却啥也不过问,
只管自顾自的“问”,对别人的疑惑他当没看见。
问题不能解决,我们也无法确认“出问题”的原因,费那些脑筋干什么!
我不可能为了他这个没什么价值的问题,去装一个毫无意义的Win8来试吧!!!

这个在 Win7 64位上都是正常的, 到了Win8那儿,就BUG了?有点说不通吧。
[/quote]
好久不见!
我搜了一下,看见有人在说开机五六小时就负值的,也是WIN8 64位,但没提到原因.
另外这个GetTickCount只是读个值,也许它读的那个地方被改了?比如有名的变速齿轮之类软件,就是HOOK相关的时间API来实现变速的
这个在 Win7 64位上都是正常的, 到了Win8那儿,就BUG了?有点说不通吧。



你按我说的去验证一下,又不是什么很麻烦的事。
先得摸清楚情况再说啊。
要不你就搜索一下“GetTickCount64”,看看那些资料对你有帮助没。
[/quote]日斤斤计较[/quote]
打错了,非常感谢。
[/quote]
我在 Win7 SP1/64位 下,运行结果完全正常。
真不知道是不是楼主的使用方法(或者说“代码”)是不是有问题。
[/quote]
非常感谢,还有其他答案吗?
你按我说的去验证一下,又不是什么很麻烦的事。
先得摸清楚情况再说啊。
要不你就搜索一下“GetTickCount64”,看看那些资料对你有帮助没。
[/quote]日斤斤计较[/quote]
打错了,非常感谢。
[/quote]
我在 Win7 SP1/64位 下,运行结果完全正常。
真不知道是不是楼主的使用方法(或者说“代码”)是不是有问题。
你按我说的去验证一下,又不是什么很麻烦的事。
先得摸清楚情况再说啊。
要不你就搜索一下“GetTickCount64”,看看那些资料对你有帮助没。
[/quote]日斤斤计较[/quote]
打错了,非常感谢。
你按我说的去验证一下,又不是什么很麻烦的事。
先得摸清楚情况再说啊。
要不你就搜索一下“GetTickCount64”,看看那些资料对你有帮助没。
[/quote]日斤斤计较
你按我说的去验证一下,又不是什么很麻烦的事。
先得摸清楚情况再说啊。
要不你就搜索一下“GetTickCount64”,看看那些资料对你有帮助没。
)
#pragma comment(lib,"ntdll")
#pragma comment(lib,"user32")
#include <afxdisp.h>
#include <windows.h>
#include <winnt.h>
#include <stdio.h>
#include <memory.h>
#include <math.h>
BOOL r;
extern "C" NTSYSAPI NTAPI NtQuerySystemInformation(
IN UINT SystemInformationClass, // 信息类型
OUT PVOID SystemInformation, // 缓冲指针
IN ULONG SystemInformationLength, // 缓冲的字节大小
OUT PULONG ReturnLength OPTIONAL // 写入缓冲的字节数
);
//第一个参数是请求的信息类型。这个参数可以有许多值。为了得到系统启动时间,我们只用其中的一个值:SystemTimeInformation(3)。
//如果,第一个参数是SystemTimeInformation,则第二个参数必须是一个SYSTEM_TIME_INFORMATION结构指针。
typedef struct {
LARGE_INTEGER liKeBootTime;//系统被启动的时间(以1/10000毫秒计)。
LARGE_INTEGER liKeSystemTime;
LARGE_INTEGER liExpTimeZoneBias;
ULONG uCurrentTimeZoneId;
DWORD dwReserved;
} SYSTEM_TIME_INFORMATION;
SYSTEM_TIME_INFORMATION sti;
ULONG rl;
ULONG tk;
FILETIME ft;
//SYSTEMTIME lt;
//extern "C" ULONGLONG WINAPI GetTickCount64(void);
//ULONGLONG tk64;
ULONGLONG d497;
#define days_of_2_32ms 49.71026962962962962962962962963 //(2^32)/24/60/60/1000=49.71026962962962962962962962963
int main() {
NtQuerySystemInformation(3,&sti,sizeof(sti),&rl);//3==SystemTimeOfDayInformation
COleDateTime t,now;
CString s,fmt="%Y-%m-%d %H:%M:%S";
memcpy(&ft,&sti.liKeBootTime,sizeof(LARGE_INTEGER));
t=COleDateTime(ft);
s=t.Format(fmt);
printf(" Boot DateTime: %s\n",s);
tk=GetTickCount();//The elapsed time is stored as a DWORD value. Therefore, the time will wrap around to zero if the system is run continuously for 49.7 days.
now=COleDateTime::GetCurrentTime();
t=now-COleDateTimeSpan((double)tk/86400000.0);
s=t.Format(fmt);
printf("Prev GetTickCount() Wrap to Zero DateTime: %s\n",s);
s=now.Format(fmt);
printf(" GetTickCount():%08X,Now DateTime: %s\n",tk,s);
t=now+COleDateTimeSpan((double)(0xFFFFFFFFu-tk)/86400000.0);
s=t.Format(fmt);
printf("Next GetTickCount() Wrap to Zero DateTime: %s\n",s);
return 0;
}