我有一个使用 Microsoft RPC 进行进程间通信的程序。当调用带有 [in, string] 参数的方法时(MIDL 表示法):
interface IOurInterface
{
error_status_t rpcMethod( [in, string] const WCHAR* parameter );
}
调用它通常是成功的。但是如果参数字符串足够长(超过大约 300 万个字符),调用会失败并显示 RPC_S_CALL_FAILED_DNE(“远程过程调用失败并且没有执行。”)。这肯定取决于字符串的长度。如果字符串在限制范围内,相同条件下的相同调用始终成功,如果字符串较长,则始终失败。看起来限制也取决于系统或机器。
有没有人观察到这种行为以及可能的解决方案是什么(不缩短参数)?