«операция не поддерживается» при вызове RPC-вызова в Vista - PullRequest
3 голосов
/ 15 апреля 2009

Мое приложение использует Microsoft RPC для межпроцессного взаимодействия. Когда два процесса выполняются на одном компьютере и один процесс пытается вызвать метод, объявленный как (нотация IDL):

error_status_t rpcMethod( [in] pipe byte parameter );

этот вызов завершается неудачно с RPC_S_CANNOT_SUPPORT («Запрошенная операция не поддерживается») и никогда не достигает стороны сервера, а примитивы push () / pull () поставляемого канала никогда не вызываются. Это воспроизводится только в Vista при использовании протокола ncalrpc , а не иначе.

Я также обнаружил следующее в журналах просмотра событий:

Приложение («имя исполняемого файла моей программы» \ service) (PID: 344) использует функциональные возможности Windows, которых нет в этом выпуске Windows. Для получения обновленной версии приложения, пожалуйста, свяжитесь с поставщиком приложения. Техническая информация, которую необходимо передать поставщику приложения, такова: «Метод RPC, использующий синхронные каналы, был вызван в интерфейсе протокола ncalrpc с уникальным идентификатором (фактический UUID здесь). Использование и поддержка синхронных каналов в этой последовательности протокола устарел для этого выпуска Windows. Для получения информации о процессе устаревания см. http://go.microsoft.com/fwlink/?LinkId=36415." Действие пользователя. Обратитесь к поставщику приложения для получения обновленной версии приложения

Ссылка в тексте сообщения перенаправляет на страницу, которая вряд ли уместна.

Есть ли обходной путь для этой проблемы, кроме изменения последовательности протокола или отсутствия использования каналов?

1 Ответ

2 голосов
/ 15 апреля 2009

Скорее всего, вы используете метод, который не поддерживается в Vista.

Значение перечисления RPC_NOTIFICATIONS, которое указывает тип уведомления, запрошенного сервером RPC.

Windows Vista: В настоящее время поддерживаются только RpcNotificationClientDisconnect и RpcNotificationCallCancel. Если для этого параметра указано любое другое значение, возвращается код ошибки RPC_S_CANNOT_SUPPORT.

См. MSDN

...