阅读:1731回复:12
大放血呀,得到可用的系统时间!
我有一个pci设备,想在计算机启动的时候把系统时间传递给它。 我调用keQuerySystemTime();得到一个64位的数字,这两天我一直在对他进行运算结果不对呀!后来我通过time得到一个从1970年开始的以秒为单位的数,但是还是不对呀!两个数差了很多。我在同一天取得的SystemTime数值差别也和大呀!我是在98下实现的(我的机器2000下,一用ds moniter就死机)。98无法调用systemTimeToLocal(),它是包含在ntddk.h里面的。
1.localtime和systime是不是就是格林威治时间和北京时间的区别? 2.有没有那位同胞已经实现了时间的转化,给我一下好吗?lizhuo666@163.com 3.有明白为什么同一天里这个返回值差别这么大的原因的帮忙解释一下,我实在是想不明白! |
|
最新喜欢:znsoft
|
沙发#
发布于:2003-12-17 19:42
RtlTimeToTimeFields
|
|
板凳#
发布于:2003-12-18 03:46
you need following steps:
1. keQuerySystemTime(&newTime); 2. get current active time bias from registry, that say biasTime; 3. realTime = newTime - biasTime; 4. RtlTimeToTimeFields(); |
|
地板#
发布于:2003-12-18 09:42
why not use ExSystemTimeToLocalTime?
|
|
地下室#
发布于:2003-12-18 17:34
you need following steps: arthurtu 说得对,中间的第 2, 3 步可以用 ExSystemTimeToLocalTime 来实现。 1. KeQuerySystemTime() obtains the current GMT system time. It\'s a count of 100-nanosecond intervals since 1601-01-01. 2. ExSystemTimeToLocalTime() converts a GMT system time value to the local system time for the current time zone. 3. RtlTimeToTimeFields() 得到如下结构: typedef struct TIME_FIELDS { CSHORT Year; CSHORT Month; CSHORT Day; CSHORT Hour; CSHORT Minute; CSHORT Second; CSHORT Milliseconds; CSHORT Weekday; } TIME_FIELDS; 应该就是楼主所要的吧。 |
|
|
5楼#
发布于:2003-12-18 21:56
98下无法使用 exSystemtimetoLocalTime,这个函数包含在ntddk.h
|
|
|
6楼#
发布于:2003-12-19 08:23
longboot也给我发了一个,在2000下可以这么写
{ ... LARGE_INTEGER Now,NowLocal; TIME_FIELDS time; KeQuerySystemTime(&Now); ExSystemTimeToLocalTime(&Now, &NowLocal); RtlTimeToTimeFields(&NowLocal, &time); ... } 但是98下如何做呀!我现在的设备98,2000完全兼容,需要在98下使用呀! |
|
|
7楼#
发布于:2003-12-19 08:35
hong的帖子
|
|
8楼#
发布于:2003-12-19 11:26
我的帖子怎么丢了一个?
这就是为什么我多给hong两分的原因,但是我不清楚第二步是如何实现的,在注册标的什么位置? |
|
|
9楼#
发布于:2003-12-19 12:19
我的帖子怎么丢了一个? 如果是在 Win9x 下,不能调用 ExSystemTimeToLocalTime(),可以这样作: 查询注册表键 (REG_DWORD) HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation\\Bias 得到 Time-Zone Bias 值,再用 GMT System Time 减去 Bias,即可得到 Local System Time。 |
|
|
10楼#
发布于:2003-12-19 13:54
我不知道在驱动里如何更改和读取注册表项?
|
|
|
11楼#
发布于:2003-12-19 17:31
我不知道在驱动里如何更改和读取注册表项? RtlQueryRegistryValues RtlWriteRegistryValue ... 查一下DDK吧 |
|
|
12楼#
发布于:2003-12-22 13:20
[quote]我不知道在驱动里如何更改和读取注册表项? RtlQueryRegistryValues RtlWriteRegistryValue ... 查一下DDK吧 [/quote] 谢谢,已经搞定!但是不知道为什么没法再给你加分了? |
|
|