【转载】获取系统时间(精确到微秒),驱动中KeQueryPerformanceCounter,Win32程序QueryPerformanceCounter
来源:互联网 发布:ios app 耗电量优化 编辑:程序博客网 时间:2024/05/24 00:16
今天在做驱动开发时,需要操作时间,而且还要精确到us,而GetTickCount()函数只能精确到ms,所以就用到下面的函数:
LARGE_INTEGER KeQueryPerformanceCounter( IN PLARGE_INTEGER PerformanceFrequency OPTIONAL );
其中PerformanceFrequency 表示CPU的频率,此函数返回系统从启动到此刻的时间,类型为LARGE_INTEGER。
使用举例:
ULONG QuerySystemTime()
{
LARGE_INTEGER CurTime, Freq;
CurTime = KeQueryPerformanceCounter(&Freq);
return (ULONG)((CurTime.QuadPart * 1000)/Freq.QuadPart);
}
这个函数的精度为1ms,如果想要得到微秒,则把 1000 改为 1000000。
2.在应用程序中精确获取系统时间,则使用下面函数:
QueryPerformanceCounter(IN OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL);
但这是获取CPU频率就需要下面这个函数了:
QueryPerformanceFrequency(IN OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL);
例子:
*****************************************************test.cpp******************************************************************
#include <stdio.h>
#include <Windows.h>
LONGLONG GetLastTime()
{
// CPU频率
LARGE_INTEGER liQPF;
// 记录开始和结束时间
LARGE_INTEGER liStartTime, liEndTime;
// 记录过程时间
LONGLONG llLastTime;
// 获取CPU频率
QueryPerformanceFrequency(&liQPF);
// 获取开始时间
QueryPerformanceCounter(&liStartTime);
Sleep(10);
// 获取结束时间
QueryPerformanceCounter(&liEndTime);
// 计算持续时间(us)
llLastTime = 1000000 * (liEndTime.QuadPart - liStartTime.QuadPart) / liQPF.QuadPart;
return llLastTime;
}
int main(void)
{
DWORD start,stop;
start = GetTickCount();
Sleep(10);
stop = GetTickCount();
printf("%d ms\n",stop-start); //GetTickCount()计算得到的时间间隔精度为15ms,例如计算10ms间隔结果为0
printf("%d us\n",GetLastTime());//应用程序中时间间隔计算精确到us,QueryPerformanceCounter()
return 0;
}
*****************************************************test.cpp******************************************************************
- 【转载】获取系统时间(精确到微秒),驱动中KeQueryPerformanceCounter,Win32程序QueryPerformanceCounter
- 获取系统时间(精确到微秒),驱动中KeQueryPerformanceCounter,Win32程序QueryPerformanceCounter
- 获取系统时间(精确到微秒),驱动中KeQueryPerformanceCounter,Win32程序QueryPerformanceCounter
- 获取系统时间(精确到微秒),驱动中KeQueryPerformanceCounter,Win32程序QueryPerformanceCounter
- android获取系统时间精确到微秒
- 获取精确到微秒的系统时间
- Windows下精确到微秒的系统时间获取
- C/C++获取精确到微秒级的系统时间
- C++获取系统当前时间(精确到微秒)
- 精确获取时间(QueryPerformanceCounter)
- LUA中时间精确到微秒
- 精确获取时间(QueryPerformanceCounter)
- 精确获取时间(QueryPerformanceCounter)
- 精确获取时间(QueryPerformanceCounter)
- 精确获取时间(QueryPerformanceCounter)
- 精确获取时间(QueryPerformanceCounter)
- 精确获取时间(QueryPerformanceCounter)
- 精确获取时间(QueryPerformanceCounter)
- JavaScript闭包导致的for循环问题解决 【转】
- Nginx_lua
- 关于线程
- asp.net C#如何上传指定路径的图片,不用FileUpload控件[转]
- 安全高性能网站搭建(六)
- 【转载】获取系统时间(精确到微秒),驱动中KeQueryPerformanceCounter,Win32程序QueryPerformanceCounter
- 导入非编译后代码、path是导入xwork文件。
- linux 网页快照(命令行将某url汇成图片) CutyCapt
- windows 8 启动自动加载VHD存储池
- [转]HTML5新功能演示
- Android SQLite总结(一)
- 枚举 转换
- 【重新上本科】排序【调试环境】
- UVa 10258 - Contest Scoreboard