I'm not 100% sure that I fully understand what you intend to do, but when you call a function, the parameters are already on the stack. The assembler code for this is produced by the compiler before calling the function.

When you call something like

foo(MyStruct)

MyStruct is copied onto the stack and the function foo can access all members of it.