Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6598489
  • 博文数量: 227
  • 博客积分: 10047
  • 博客等级: 上将
  • 技术积分: 6678
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-11 10:33
个人简介

网上的蜘蛛

文章分类

全部博文(227)

文章存档

2010年(19)

2009年(29)

2008年(179)

分类: C/C++

2010-04-17 00:20:08

 Windows NT 内核中你是无法使用 time.h 获取当前系统时间的,这个时候你需要用到 Wdm.h(你可以 include Wdm.h, Ntddk.h, 或 Ntifs.h)里面提供的  函数。这个函数和相关头文件需要 Windows 2000, Windows Vista 或者 Windows 7 等 NT 系统。

函数原型:

VOID KeQuerySystemTime(
__out  PLARGE_INTEGER CurrentTime
);

参数:

CurrentTime [out]

这是一个指向当前系统时间的指针。

备注:

系统时间是一个以 100 纳秒为单位从 1601 年 1 月 1 日开始计算的 64 位有符号整数。以下是有关于这个 64 位的  的结构:

typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG  HighPart;
} ;
struct {
DWORD LowPart;
LONG  HighPart;
} u;
LONGLONG QuadPart;
} LARGE_INTEGER, *PLARGE_INTEGER;
>

实际上这是一个为了防止你没有 64 位字符定义而设立的兼容性数据结构。当然如果你有 LONGLONG 定义的话,你可以直接使用里面的 QuadPart 作为你需要使用的时间。例如:

LONGLONG Timer;
LARGE_INTEGER timeUTC;
KeQuerySystemTime(&timeUTC);
Timer = timeUTC.QuadPart;

如上即可。

 

来自一位学弟的博客:

阅读(5397) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~