【发布时间】:2013-09-04 23:08:36
【问题描述】:
我知道我可以在 Windows 中使用 memcmp,但我想知道平台上是否有像 CompareMemory 这样的原生功能。我听说过 RtlCompareMemory,但这显然是针对司机的。
【问题讨论】:
-
Visual Studio 附带的
memcmp的 CRT 实现调用RtlCompareMemory(无论如何都适用于 64 位系统)。 -
RtlCompareMemory 似乎不是官方的。似乎并非所有 Windows 版本都具有此功能(在 Windows 9x/ME 中似乎缺少此功能),因此它也可能在未来的 Windows 版本中被删除。当 msvcrt.dll 已经包含一个内存比较函数时,微软没有理由添加第二个内存比较函数。
-
@Martin 你搞错了。不是根据 CRT 实现的操作系统,而是相反。
RtlCompareMemory也没有什么非官方的。从 Windows 中删除此功能也会使大量驱动程序无用。这不会发生。 -
@IInspectable:是的,它是官方的——但仅适用于内核模式驱动程序。对于 Windows XP,它也适用于应用程序,但并不是说这适用于未来版本的 Windows。关于 memcmp(),我想说的是,这个函数是随 Windows 正式提供的(在 msvcrt.dll 中),所以你可以依赖这个函数存在的事实。因此,没有理由让另一个函数做同样的工作。
-
@Martin
<memory.h>不是 Windows SDK 的一部分。 msvcrt.dll 也不是 Windows 正式发布的。就 Windows 而言,只有一个函数可以比较内存块,RtlCompareMemory。它可以在内核模式下使用,但没有限制它必须只能在内核模式下使用。