以前にそのメッセージを確認しましたが、同じ原因ではないと思います。「実行されませんでした」は、多くの原因で発生する可能性のある一般的な RPC エラーです。
私たちの特定のケースでは、WMI を強く叩きすぎて、オブジェクトをクリーンアップしなかったことが原因でした。しかし、あなたの場合は別の原因のようです。
パラメータを短くしたくないと言ったのは知っていますが、それが唯一の方法かもしれません。RPC 呼び出しで 6M を送信する必要がある状況を視覚化するのに苦労しています。その背後にある理由を説明していただければ、さらにお役に立てるかもしれません。
これまでのコメントに基づくその他の可能性:
1/ セグメンテーション。
RPC 呼び出しで、ネットワーク上を移動するデータの量を制限します。これは、送信元でメッセージをセグメント化し、送信先でそれを再構築することで実行できます。たとえば、3 つのパラメーターを使用することができます (サーバーに別の RPC 呼び出しでメッセージ識別子を提供させるか、他の方法を見つけて、2 つのクライアントが同じものを持たないようにすることができます)。 ID): - メッセージ識別子 (メッセージ セグメントを結合するため)。- 最後のフラグ (再構築プロセスを開始するため)。- 限られたサイズのセグメント (例: 1M)。
2/圧縮。
XML はテキストであるため、圧縮に適しています。7zip ライブラリは、サイズの削減という点で私が見た中で最高です。これが十分に速いかどうかは別の問題です。
3/レジストリを変更することで解決できる可能性があります。
RpcMaxSize キーの HKLM/Software/Microsoft/Rpc レジストリ領域を確認してください。これを-1に設定するとサイズ制限が解除されることを示唆しているサイトがいくつかあります(グローバルなので注意してください)。
4/インターフェイスの登録中に修正される可能性があります。
を使用すると、特定のインターフェイスで (3) と同じ効果が得られるようRpcServerRegisterIf2()
です。