3

我的应用程序使用 Microsoft RPC 进行进程间通信。当两个进程在同一台机器上运行并且一个进程尝试调用声明为(IDL 表示法)的方法时:

error_status_t rpcMethod( [in] pipe byte parameter );

此调用因 RPC_S_CANNOT_SUPPORT(“不支持请求的操作”)而失败,并且永远不会到达服务器端,并且永远不会调用所提供管道的 push()/pull() 原语。这仅在使用ncalrpc协议时才会在 Vista 上重现,否则不会。

我还在事件查看器日志中发现了以下内容:

应用程序(“此处的我的程序 exe 文件名”\service)(PID:344)正在使用此版本的 Windows 中不存在的 Windows 功能。如需获取应用程序的更新版本,请联系应用程序供应商。需要传达给应用程序供应商的技术信息是:“已在具有唯一标识符(此处为实际 UUID)的协议序列 ncalrpc 接口上调用了使用同步管道的 RPC 方法。此协议序列上同步管道的使用和支持此版本的 Windows 已弃用。有关弃用过程的信息,请参阅http://go.microsoft.com/fwlink/?LinkId=36415。用户操作联系应用程序供应商以获取应用程序的更新版本

消息文本中的链接重定向到可能不相关的页面。

除了更改协议序列或不使用管道之外,是否有解决此问题的方法?

4

1 回答 1

2

您很可能使用了 Vista 中不支持的方法。

RPC_NOTIFICATIONS 枚举值,指定服务器从 RPC 请求的通知类型。

Windows Vista:目前仅支持 RpcNotificationClientDisconnect 和 RpcNotificationCallCancel。如果为此参数指定了任何其他值,则返回 RPC_S_CANNOT_SUPPORT 错误代码。

见 MSDN

于 2009-04-15T15:05:48.510 回答