Function Return Values

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 reference pointers and nonencapsulated unions.

However, using an [out] parameter instead of a return value for complex data types is recommended. While returning complex data types, the MIDL compiler will generate an /Os mode stub. As a result, all recent error-checking information provided by /robust is lost.

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.