我有一个使用Microsoft RPC进行进程间通信的程序。当与[在,字符串]像这样(MIDL符号)参数的方法的调用:“呼叫失败并且未执行”
interface IOurInterface
{
error_status_t rpcMethod([in, string] const WCHAR* parameter);
}
被调用它通常是成功的。但是,如果参数字符串足够长(超过大约300万个字符),则调用失败,并且RPC_S_CALL_FAILED_DNE(“远程过程调用失败并且未执行。”)。这当然取决于字符串的长度。如果字符串在限制范围内,则在相同条件下的相同调用总是成功,如果字符串较长,则总是失败。它看起来像极限是系统或机器相关的。
有没有人观察过这种行为,以及可能的解决方案是什么(不缩短参数)?
的原因是,我们发送超大对象的XML表示,不希望想到优化它(但它绝对有可能)。所以如果有一个简单的方法来绕过这个问题,它会非常方便。 – sharptooth 2009-04-09 12:55:50
那么,分段是一种可能性:将参数限制为会话标识,最后标记和(例如)1M文本。您必须在源代码处对您的XML进行细分,并在目标位置将它们合并在一起。不是我的第一选择,而是一个应该尽最大努力工作的快速和肮脏的解决方案 – paxdiablo 2009-04-09 13:00:04