Я использую 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 ("Сервер уже слушает "), что действительно сбивает с толку.
Я добавил вход в функции, используемые для операций push / pull во время передачи - их никогда не вызывали ни для одного из вызовов, которые не проходят таким образом. Это означает, что передача даже не началась.
Я никогда не сталкиваюсь с таким поведением при вызове методов, в которых параметры не имеют каналов.
В чем может быть причина и обходной путь?