Windows系统调用

时间:2014-07-30 22:01:12

标签: c++ windows operating-system system-calls

在Linux上,似乎getpid()是最简单的系统调用,用于调用以最佳地测量系统调用所花费的时间。有人能够引用我一个简单的Windows系统调用,我可以用它来衡量转换到内核模式所花费的时间吗?

我确实谷歌并在MSDN网站上找到了一个Windows系统调用列表,但他们都提到了打开文件 - 这看起来很奇怪:

http://msdn.microsoft.com/en-us/library/t0wd4t32.aspx

我在Windows 7 64位上。

1 个答案:

答案 0 :(得分:1)

我的建议(这只是基于直觉)是尝试像

这样的东西
CloseHandle(NULL)

WaitForMultipleObjectsEx(0, NULL, 0, 0, FALSE)

理由是它应该是无操作。但是,我没有任何证据支持这一点。


更新

对Win8.1 x64进行一些基准测试显示(未记录的)NtDisplayString(NULL)函数更快,其次是半文档NtAllocateLocallyUniqueId(&some_luid)。您必须使用GetProcAddress从NTDLL动态加载它们;签名是:

NTSTATUS NTAPI PNtAllocateLocallyUniqueId(PLUID LUID);
NTSTATUS NTAPI PNtDisplayString(PUNICODE_STRING DisplayString);