Function return values are similar to out-only parameters because their data is not provided by the client application. However they are managed differently. Unlike out-only parameters, they are not required to be pointers. The remote procedure can return any valid data type except ref pointers and nonencapsulated unions.
Function return values that are pointer types are allocated by the client stub with a call to midl_user_allocate. Accordingly, only the unique or full pointer attribute can be applied to a pointer function-return type.