You do not put the data itself into the launch parameters but a pointer to the desired data structure in global memory (device VRAM) into the launch parameter block, similar to any other input or output buffer CUdeviceptr you have in your launch parameters already.
That way you can store arbitrarily complex data structures behind a single pointer.
A discussion about that can be found in this thread:
https://forums.developer.nvidia.com/t/going-through-optix7course-and-am-confused-about-launchparams-and-how-to-get-depth-buffer/201439/2
Here’s another post explaining the basics with more links:
https://forums.developer.nvidia.com/t/optix-launch-parameters-best-practices/231443/2