Quote: "You pass it the same way as you do any other primitive data type, but you must define the function parameters."
Indeed, but as WickedX said this will only give the function access to a local copy of the udt variable. So you can read its content, but not alter the variable originally passed to the function. I'm also not sure about performance, if DBPro really copies all the values defined in the UDT it might get rather slow for complex types.
I personally prefer the method of storing my udt variables within arrays (such as "dim Unit(UnitCount) as Unit_Type") and pass the array ID to any function that is meant to manipulate the variable.