Нет. Все указатели функций - это адрес в адресном пространстве вашего процесса. У него нет внутреннего маркера, уникального для разных процессов. Таким образом, даже если ваш указатель на функцию оказался действительным после того, как вы переместили его в B, он вызвал бы эту функцию от имени процесса B.
Например, если у вас было
////PROCESS A////
int processA_myfun() { return 3; }
// get a pointer to pA_mf and pass it to process B
////PROCESS B////
int processB_myfun() { return 4; } // This happens to be at the same virtual address as pA_myfun
// get address from process A
int x = call_myfun(); // call via the pointer
x == 4; // x is 4, because we called process B's version!
Если процессы A и B выполняют один и тот же код, вы можете получить одинаковые функции по одинаковым адресам, но вы все равно будете работать со структурами данных B и глобальной памятью! Итак, короткий ответ: нет, это не то, как вы хотите это сделать!
Кроме того, меры безопасности, такие как рандомизация макета адресного пространства , могут помешать такому типу "уловок".
Вы путаете IPC и RPC. IPC предназначен для передачи данных, таких как ваши объекты или большой текстовый блок. RPC предназначен для выполнения кода в удаленном процессе.