The type_UserFree Function

The <type>_UserFree function is a helper function for the [ wire_marshal] and [ user_marshal] attributes. The stubs call this function to free the data on the server side. The function is defined as:

void __RPC_USER  <type>_UserFree(
    unsigned long __RPC_FAR * pFlags,
    <type_name>  __RPC_FAR *  pMyObj );

The <type> in the function name means the userm-type specified in the [wire_marshal] or [user_marshal] type definition.

The pFlags parameter is a pointer to an unsigned long flag field. The upper word of the flag contains NDR data representation flags as defined by OSF DCE for floating point, byte order, and character representations. The lower word contains a marshaling context flag as defined by the COM channel. The exact layout of the flags within the field is described in The type_UserSize Function.

The pMyObj parameter is a pointer to a user type object. The NDR engine frees the top-level object. You are responsible for freeing any objects to which the top-level object may point.

Exceptions must be caught and handled locally, exceptions must not be allowed to propigated up the call stack.

Marshaling Rules for user_marshal and wire_marshal

wire_marshal

user_marshal