c++高分辨率SYSTEMTIME结构,大于ms
C++ high resolution SYSTEMTIME Structure, greater than ms?
我试图理解Windows中的各种高精度计时技术,并直接与c++中的各种api挂钩。
我知道QPC,并且知道GetSystemTimePreciseAsFileTime()对高精度时间戳使用相同的技术。然而,GetSystemTimeAsFileTime() API似乎被SQL Server用于获得其高精度时间戳(即DATETIME2),我发现这很奇怪。
注意:一个非常好的资源是获取高分辨率时间戳msdn文章(尽管它可能更像是一篇"论文")。
GetSystemTimePreciseAsFileTime ()GetSystemTimePreciseAsFileTime函数获取当前系统日期和时间具有尽可能高的精度(<1us)。的检索到的信息是协调世界时(UTC)格式。
我的问题是SYSTEMTIME结构
指定日期和时间,对使用单独的成员:月、日、年、星期、小时、分钟、秒和毫秒。时间是协调世界时(UTC)或本地时间,取决于被调用的函数。
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
似乎只有毫秒级的精度,这个结构的文档注释了结构的wMilliseconds部分:
wMilliseconds 毫秒。此成员的有效值为0到999。
如果我希望将高精度FILETIME转换为某种SYSTEMTIME结构,我如何保持额外的精度?从FILETIME类型实现自定义转换似乎是一项艰巨的任务?
额外的转换是相当容易的- (fileTime % 10000)
给你SYSTEMTIME没有(在100ns步骤)。所以你可以用它加上SYSTEMTIME。
虽然SYSTEMTIME主要用于UI;原来的FILETIME存储起来更小,并且在许多用途上更容易使用。
- 如何在MS Visual Studio 2019中运行QT UI
- 大于65535的C++数组[size]引发不一致的溢出
- 查找最接近的大于当前数字的数字的索引
- 如何找到大于整数的最小数字
- 为什么签名字符可以保存大于 127 的值?
- 在C++中调用 MS SQL 存储过程
- 如何打印大于"无符号长长"的"std::bitset"的十进制值?
- MS Visual Studio 解决方案结合了非托管C++项目和 C# 项目
- 为什么它总是给我大于 4?
- 如果变量数据包含大于 vector 所有元素的整数,则仅在视觉工作室上接收"矢量下标超出范围"?
- MS 本机单元测试 - 断言::线程失败不起作用
- 在向量中查找大于 0(或通常为 k)的最小元素的最佳方法是什么?
- 使用 RapidXML 解析大型 XML(大小大于 65 KB)文件时出现问题
- 为什么我不能在同一 MS VS 解决方案中的两个控制台应用中使用C++特征(仅标头库)?
- CStdioFile 不能处理大于 2GB 的文件?
- 使用 MS 绕道挂钩在调用钩子函数时崩溃C++
- Windows Toast 通知不适用于 MS CPP 示例代码
- 无法编译 ms _tzSet() 示例
- 当我选择大于 720 的矩阵大小时,程序退出并显示错误代码.可能是什么原因?
- c++高分辨率SYSTEMTIME结构,大于ms