我正在尝试从特定进程运行QueryPerformanceCounter()函数并将其返回值传递给我的C#应用程序。由于这两个过程(我的应用程序和我试图影响的应用程序)不同,我应该遵循什么样的策略?
答案 0 :(得分:1)
QueryPerformanceCounter
在计算机上的所有进程中同步。你可以在本地调用它。这与其他流程所获得的价值相同。
更新:好的,你是在对抗骗子。如果他们正在挂钩你的进程,那么他们也会挂钩你的子进程,所以产生一个帮助程序也无济于事。
您可以做的一件事是关联多个计时器。例如,
QueryPerformanceCounter(&liStart);
dwStart = GetTickCount();
GetSystemTimeAsFileTime(&ftStart);
Sleep(1000);
QueryPerformanceCounter(&liStop);
dwStop = GetTickCount();
GetSystemTimeAsFileTime(&ftStop);
所有四个计时器(QPC,GetTickCount
,GetSystemTimeAsFileTime
和Sleep
)都应在测量误差范围内同意。
您可以做的另一件事是与外部来源相关联。例如,您可以编写一个函数,通过创建文件然后询问文件创建时间从文件系统获取时间。将此与其他四个计时器相关联。其他外部资源是声音和视频硬件。例如,您可以播放1秒的声音片段并查看它需要多长时间。或者等待垂直空白并查看它是否与显示器刷新率匹配。