关于filetime结构

Cform 2004-01-29 07:45:08
//利用句柄查出过程的详细信息
#define _WIN32_WINNT 0X500
#define WINVER 0X500

#include <windows.h>
...
//当在用户模式机内核模式下都提供所消耗时间,在内核模式下进行所耗时间的64位计算的帮助助方法;
DOWRD GETKERNELmODEpERCENTAGE(const FILETIME & ftkernel,
const FILETIME & ftuser)
{
//将FILETIME结构转化为64位整数千;
ULONGLONG qwkernel=(((ULONGLONG)ftkernel.dwHightDateTime<<32) +ftkernel.dwLowDateTime);
ULONGLONG qwUser=(((ULONGLONG)ftUser.dwHightDateTime<<32)
+ftUser.dwLowDateTime);

ULONGLONG qwTotal=qwkernel+qwUser;

...
有几点不明白FILETIME结构中dwHighDateTime和dwLowDateTime分别是32位值,可我不知道知道具体表达法,两个都年月日时分秒,还是其中一个是年月日另一个是时分秒?
上题中提到把两个值转换成64位值相加,总不能是2004年再加2004年吧?可还请高手明示?
...全文
2424 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ross33123 2004-02-02
  • 打赏
  • 举报
回复
如果你确信高32位肯定是0

那当然可以只用低32位
Cform 2004-02-02
  • 打赏
  • 举报
回复
我的意思是的说这个例子只用其中的32位值就可以了,为什么还要转化为64值呢???
ross33123 2004-01-29
  • 打赏
  • 举报
回复
因为现在的计算机是32位的,所以要用两个32位的数合成一个64位的数
Cform 2004-01-29
  • 打赏
  • 举报
回复
既然两个是同时表示,我们只用一个就行了,为什么还要用两个来表示,
而且用两个表示,用的时候为什么又要加起来呢
Greaitm 2004-01-29
  • 打赏
  • 举报
回复
是两个同时表示,实际上就是一个64位的数,表示从1601-1-1以来的时间,单位是万分之一毫秒
windyloft 2004-01-29
  • 打赏
  • 举报
回复
DWORD dwLowDateTime; /* low 32 bits */
DWORD dwHighDateTime; /* high 32 bits */
nkwesley 2004-01-29
  • 打赏
  • 举报
回复
FILETIME结构和CTime这些类的用法不同
他用一个64位的数来表示一个时间的相对值,而原点时间就是January 1, 1601
ross33123 2004-01-29
  • 打赏
  • 举报
回复
The FILETIME structure is a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 (UTC).

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧