【问题标题】:Does the Windows API (not CRT) have a memory compare function?Windows API(不是 CRT)是否有内存比较功能?
【发布时间】: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。它可以在内核模式下使用,但没有限制它必须只能在内核模式下使用。

标签: windows winapi memory


【解决方案1】:

据此 https://support.microsoft.com/en-us/help/99456/win32-equivalents-for-c-run-time-functions

似乎没有等同于 memcmp 的 Win32。

另外值得注意的是,RtlCompareMemory 的返回值与 memcmp 不同。它返回相同字节的计数。

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 2010-09-07
    • 2022-12-25
    相关资源
    最近更新 更多