我使用 Microsoft RPC 进行进程间通信。我有一个接口,其中包含一组接受字节管道作为“in”参数(IDL 描述)的方法:
[
uuid(ActualGuidHere),
version(1.0),
pointer_default(unique)
]
interface IMyInterface
{
//other irrelevant methods here
error_status_t rpcDoAction( [in] pipe byte params );
//more irrelevant methods here
}
每隔一段时间,当我通过 MIDL 生成并委托给 NdrClientCall2() 的客户端存根在客户端调用此类方法时,它不会到达服务器端,但 NdrClientCall2() 返回 RPC_S_ALREADY_LISTENING(“服务器已经在监听") 这真的很令人困惑。
我在传输过程中添加了用于推/拉操作的函数的日志记录——它们不会被任何以这种方式失败的调用调用。这意味着甚至没有开始传输。
在调用没有管道作为参数的方法时,我从未遇到过这种行为。
可能是什么原因和解决方法?