“存根收到错误数据”解释

“存根收到错误数据”解释

有时候,Windows 7 会弹出此消息。它何时弹出并不重要,因为我不是在寻求解决方案。我 90% 确定我知道是什么导致弹出此消息。但是,由于与问题无关的原因,我不会费心去修复它。

我真正想知道的是该消息的含义,例如,这个“存根”是什么以及“坏数据”是什么意思?

答案1

经过一番研究,我想我现在可以回答我自己的问题了。实际上,这个问题的答案可以在Stack Overflow 上的答案

当您跨执行边界进行调用时,COM 中会使用“存根”。问题中没有明确说明,但您的 Ada 程序可能是一个 EXE 并实现了进程外 COM 服务器。由于 Windows 中进程之间的隔离性很强,因此很难跨越进程之间的边界。在 Windows 中,这是通过 RPC(远程过程调用)实现的,RPC 是一种跨此类边界进行调用的协议,网络是典型情况。

要进行 RPC 调用,必须将函数的参数序列化为网络数据包。COM 不知道如何执行此操作,因为它对函数的实际参数了解不够,因此需要代理的帮助。一段知道参数类型的代码。接收端是一段非常相似的代码,它执行的操作与代理完全相反。它将参数反序列化并进行内部调用。这就是存根。

失败的一种情况是,当存根收到网络数据包,并且其中包含的数据多于或少于函数参数值所需的数据时。显然,它不知道如何处理该数据包,没有合理的方法将其转换为 StructData_Type 值,并且它会失败并出现“存根收到错误数据”错误。

第三段中的 SturctData_Type 只是指一种用户定义的数据类型,它是程序员定义的,用于以有组织的方式存储数据集合。

相关内容