C++ 是否可以使用查询性能计数器(Win32,C)获取时间戳?

C++ 是否可以使用查询性能计数器(Win32,C)获取时间戳?,c++,winapi,timer,C++,Winapi,Timer,是否可以使用查询性能计数器(Win32,C++)获取时间戳?如果不是,在Win32-C++应用程序上获取时间戳的最准确方法是什么?只是一个计数器,当机器通电并计数时,它包含一些值。它根本没有和挂钟相连 如果足够好的话,可以精确到15毫秒。 如果你的目标是Windows8,那么这是非常精确的 如果您在Windows pre 8上需要真正高分辨率的时间,您可以尝试使用系统时间和性能计数器的混合方法,如下所述: 如果你使用C++ 11,那么你可能想看看或者是。 < P>硬件中有什么时钟源?< /P>

是否可以使用查询性能计数器(Win32,C++)获取时间戳?如果不是,在Win32-C++应用程序上获取时间戳的最准确方法是什么?

只是一个计数器,当机器通电并计数时,它包含一些值。它根本没有和挂钟相连

如果足够好的话,可以精确到15毫秒。
如果你的目标是Windows8,那么这是非常精确的

如果您在Windows pre 8上需要真正高分辨率的时间,您可以尝试使用系统时间和性能计数器的混合方法,如下所述:


如果你使用C++ 11,那么你可能想看看或者是。

< P>硬件中有什么时钟源?< /P> 如果您想要精确,就不能使用QueryPerformacCounter,因为它会随着CPU时钟滴答作响,虽然CPU时钟很快,但并不精确

中断计时器:该计时器生成频率为1 kHz的中断,可能非常精确

HPET:1 MHz定时器。这是你想用的

音频接口采样时钟:该时钟的频率取决于音频采样率,但中断频率取决于音频缓冲区的大小,通常要求比某些毫秒长

我已成功使用可等待计时器以40毫秒的间隔驱动屏幕捕获程序。有关演示,请参阅:。音频轨迹由音频输出到音频输入的模拟反馈记录,表明帧时钟与音频设备的采样时钟保持同步。相同的时钟应在1毫秒内工作,但当机器忙于渲染3d内容和将视频帧压缩为PNG时,则不会工作:-)


要使用音频设备时钟,请记录到虚拟缓冲区。在Windows7上,使用新的音频架构获得尽可能小的缓冲区大小。在较旧的系统上,您需要内核流。如果你想要一个音频结果,你也可以将一个函数生成器插入你的wave设备,并有一个基于trigg条件返回时间戳的循环。这样,你将低于1毫秒

相关:我不使用C++ 11,而且在我正在使用的应用程序中,准确性是非常重要的,但是我觉得使用计数器实际上会完成我想要的任务。谢谢您的响应。谢谢您的响应。我会研究这些选项,看看是否有适合我的。