[ uuid(60a15ec5-4de8-11d7-a637-005056a20182), version(1.0) ] interface rpcecho { /* Add one to an integer */ void echo_AddOne( [in,out,ref] uint32 *v ); /* Echo an array of bytes back at the caller */ void echo_EchoData( [in] uint32 len, [in] [size_is(len)] uint8 in_data[], [out] [size_is(len)] uint8 out_data[] ); /* Sink data to the server */ void echo_SinkData( [in] uint32 len, [in,ref,size_is(len)] uint8 *data ); /* Source data from server */ void echo_SourceData( [in] uint32 len, [out,ref,size_is(len)] uint8 *data ); #define int uint32 typedef struct { int *count; } echo_Enum1; typedef struct { int *count; } echo_Enum3; typedef union { [case(1)] echo_Enum1 enum1; [case(3)] echo_Enum3 enum3; } echo_EnumInfo; typedef struct { int level; [switch_is(level)] echo_EnumInfo e; } Struct1; void TestCall ( [out] Struct1 *s1 ); }