3

My application uses Microsoft RPC for interprocess communications. When two processes are run on the same machine and one process tries to call a method declared as (IDL notation):

error_status_t rpcMethod( [in] pipe byte parameter );

this call fails with RPC_S_CANNOT_SUPPORT ("The requested operation is not supported") and never reaches the server side and the push()/pull() primitives of the supplied pipe are never called. This is only reproduced on Vista when using ncalrpc protocol and not otherwise.

I also found the following in the Event Viewer logs:

Application ("my program exe file name here" \service) (PID: 344) is using Windows functionality that is not present in this release of Windows. For obtaining an updated version of the application, please, contact the application vendor. The technical information that needs to be conveyed to the application vendor is this: "An RPC method using synchronous pipes has been called on on protocol sequence ncalrpc interface with unique identifier (actual UUID here). Usage and support of synchronous pipes on this protocol sequence has been deprecated for this release of Windows. For information on the deprecation process, please, see http://go.microsoft.com/fwlink/?LinkId=36415." User Action Contact the application vendor for updated version of the application

The link in the message text redirects to a page that is not likely relevant.

Is there a workaround for this problem except for changing the protocol sequence or not using pipes?

4

1 に答える 1

2

Vista でサポートされていない方法を使用している可能性があります。

サーバーによって RPC から要求された通知の種類を指定する RPC_NOTIFICATIONS 列挙値。

Windows Vista:現在、RpcNotificationClientDisconnect と RpcNotificationCallCancel のみがサポートされています。このパラメータに他の値を指定すると、RPC_S_CANNOT_SUPPORT エラー コードが返されます。

MSDN を参照

于 2009-04-15T15:05:48.510 に答える