Чтобы правильно определить функцию внутри файла определения, связанного с RPC - PullRequest
0 голосов
/ 20 мая 2011

Я хочу определить новую функцию внутри моего кода RPC.Я новичок в этом, поэтому я просто дублирую функцию Output и переименую ее в Output2.Но когда я запускаю EXE, всегда вызывается функция Output, хотя я действительно вызывал Output2.Нужно руководство ..

Это код, который я нашел в сети.Я думаю, что это какой-то заглушка.

Вот код, с которым я работаю:

1 Ответ

1 голос
/ 20 мая 2011

Диаграмма на этой странице может помочь вам понять следующее объяснение.То, что вы сделали, создали вторую клиентскую заглушку с именем «Output2» , но , которую новая клиентская заглушка вызывает ту же серверную заглушку, что и «Output» (потому что она передает те же значения в параметры один и два NdrClientCall2) поэтому серверная заглушка в итоге вызывает ту же функцию серверного приложения.

Если ваше приложение RPC разумно сконструировано, вам не следует редактировать файлы, содержащие вызовы NdrClientCall2.Клиентские стаб-файлы обычно генерируются компилятором MIDL.Вам нужно найти файл IDL вашего приложения (и, возможно, связанный файл ACF) и добавить определение для Output2 в ваш IDL.Затем, когда вы перестраиваете свой клиентский проект, компилятор MIDL должен скомпилировать ваш недавно измененный файл IDL (и файл ACF, если необходимо) и сгенерировать новую заглушку клиента.

Аналогично, когда вы компилируете проект сервера (используятот же IDL) компилятор MIDL будет генерировать новые файлы-заглушки сервера.В зависимости от того, как написано ваше серверное приложение, вам, возможно, придется отредактировать файл-заглушку сервера, чтобы подключить заглушку к фактической реализации функции.

Некоторые статьи здесь могут быть полезныно если вы не понимаете, как работает RPC, вы можете откусывать больше, чем можете прожевать.

...