This works, but you must be careful to Forbid() before CreateNewProc() and only Permit() after you've poked the tc_UserData, or you will get rather hard to track race condition.
That does not work because CreateNewProc() will in 99% of cases call code (like DOS functions) which may break Forbid state.
But if using signals for handshake that Forbid/Permit is not necessary anyway as he will do something like
maintask:
proc = CreateNewProc()
proc->pr_Task.tc_UserData = something;
Signal(proc->pr_Task, somesignal);
subtask:
Wait(somesignal);
look at proc->pr_Task.tc_UserData
With somesignal likely being something like SIGBREAKF_CTRL_F.