Each value element of a LAYOUT_VALUES record must contain a pointer to the type of the layout value that is being set or get. That is, if the layout value is for type T, the arguement must be of type T*.
If CallerAllocMem is FALSE (default), LayoutQueryValues will allocate storage for the returned data. It is the caller's responsibility to free the allocated memory with DosFreeMem.
If CallerAllocMem is TRUE, LayoutQueryValues will assume that the layout value points to allocated memory. I.e. the caller is responsible for allocating and freeing the memory for the queried data.