在Vista上调用RPC调用时“不支持操作”

时间:2009-04-15 09:20:13

标签: c++ windows windows-vista rpc

我的应用程序使用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功能。要获取应用程序的更新版本,请联系应用程序供应商。需要传达给应用程序供应商的技术信息如下:“在具有唯一标识符的协议序列ncalrpc接口上调用了使用同步管道的RPC方法(此处为实际UUID)。在此协议序列上使用和支持同步管道已弃用此版本的Windows。有关弃用过程的信息,请参阅http://go.microsoft.com/fwlink/?LinkId=36415。“用户操作请与应用程序供应商联系以获取应用程序的更新版本

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

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

1 个答案:

答案 0 :(得分:2)

您最有可能使用Vista中不支持的方法。

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

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

See MSDN