在VBA-错误调用约定中检查内存中的两个区域是否相同

在VBA-错误调用约定中检查内存中的两个区域是否相同,vba,pointers,winapi,vb6,stdcall,Vba,Pointers,Winapi,Vb6,Stdcall,我想比较两个地址的内存是否相等。我见过人们用这个: Private Declare Function RtlCompareMemory Lib "ntdll" ( _ ByRef Source1 As Any, _ ByRef Source2 As Any, _ ByVal Length As Long _ ) As Long 然而,当我尝试时,它给出了一个错误的Dll调用约定错误,这通常意味着该函数使用的不是stdcall。然而,这些论坛帖子表明,

我想比较两个地址的内存是否相等。我见过人们用这个:

Private Declare Function RtlCompareMemory Lib "ntdll" ( _
    ByRef Source1 As Any, _
    ByRef Source2 As Any, _
    ByVal Length As Long _
) As Long
然而,当我尝试时,它给出了一个错误的Dll调用约定错误,这通常意味着该函数使用的不是stdcall。然而,这些论坛帖子表明,人们已经成功地将API用于VB6应用程序


自从2005年发表这篇文章以来,在一些ntdll函数中使用的调用约定是否发生了变化?有人能提出一个解决方法吗?我正在寻找在许多VBA发行版中广泛可用的东西。

调用约定当然没有改变。我想你的问题是另外一个问题。@DavidHeffernan我之所以提到,是因为我链接的一个线程说,
“奇怪的是,从2002年10月的MSDN开始,RTLComparemory()只包含在Win2K和XP中”
,但接着提供了一些基准测试,表明它仍然存在并在工作。所以我真的被难住了——我认为调用约定是由<代码> NTySSAPI 定义的,但是我不知道足够的C++来解决扩展它的代码是<代码> STDCALL> /COD> STLLReGeDO,请张贴调用这个函数的代码。是API函数的正确声明。在下面相同的代码中搜索示例用法。当然,调用约定没有更改。我想你的问题是另外一个问题。@DavidHeffernan我之所以提到,是因为我链接的一个线程说,
“奇怪的是,从2002年10月的MSDN开始,RTLComparemory()只包含在Win2K和XP中”
,但接着提供了一些基准测试,表明它仍然存在并在工作。所以我真的被难住了——我认为调用约定是由<代码> NTySSAPI 定义的,但是我不知道足够的C++来解决扩展它的代码是<代码> STDCALL> /COD> STLLReGeDO,请张贴调用这个函数的代码。是API函数的正确声明。在下面的相同代码中搜索示例用法。