libndr: add support for relative_rap_convert.
[Samba/ekacnet.git] / librpc / idl / echo.idl
blobbf1e318674988ec3a6260b7ab64b8169fe4ed98d
3 uuid("60a15ec5-4de8-11d7-a637-005056a20182"),
4 endpoint("ncacn_np:[\\pipe\\rpcecho]", "ncacn_ip_tcp:", "ncalrpc:"),
5 pointer_default(unique),
6 version(1.0),
7 helpstring("Simple echo pipe")
9 interface rpcecho
11 /* Add one to an integer */
12 void echo_AddOne(
13 [in] uint32 in_data,
14 [out] uint32 *out_data
16 /* Echo an array of bytes back at the caller */
17 void echo_EchoData(
18 [in] uint32 len,
19 [in] [size_is(len)] uint8 in_data[],
20 [out] [size_is(len)] uint8 out_data[]
22 /* Sink data to the server */
23 void echo_SinkData(
24 [in] uint32 len,
25 [in,size_is(len)] uint8 data[]
27 /* Source data from server */
28 void echo_SourceData(
29 [in] uint32 len,
30 [out,size_is(len)] uint8 data[]
33 /* test strings */
34 void echo_TestCall (
35 [in,string,charset(UTF16)] uint16 *s1,
36 [out,string,charset(UTF16)] uint16 **s2
40 /* test some alignment issues */
41 typedef [public] struct {
42 uint8 v;
43 } echo_info1;
45 typedef struct {
46 uint16 v;
47 } echo_info2;
49 typedef struct {
50 uint32 v;
51 } echo_info3;
53 struct echo_info4 {
54 hyper v;
57 typedef struct {
58 uint8 v1;
59 hyper v2;
60 } echo_info5;
62 typedef struct {
63 uint8 v1;
64 echo_info1 info1;
65 } echo_info6;
67 typedef struct {
68 uint8 v1;
69 struct echo_info4 info4;
70 } echo_info7;
72 typedef [switch_type(uint16)] union {
73 [case(1)] echo_info1 info1;
74 [case(2)] echo_info2 info2;
75 [case(3)] echo_info3 info3;
76 [case(4)] struct echo_info4 info4;
77 [case(5)] echo_info5 info5;
78 [case(6)] echo_info6 info6;
79 [case(7)] echo_info7 info7;
80 } echo_Info;
82 NTSTATUS echo_TestCall2 (
83 [in] uint16 level,
84 [out,switch_is(level)] echo_Info *info
87 uint32 echo_TestSleep(
88 [in] uint32 seconds
91 typedef enum {
92 ECHO_ENUM1 = 1,
93 ECHO_ENUM2 = 2
94 } echo_Enum1;
96 typedef [v1_enum] enum {
97 ECHO_ENUM1_32 = 1,
98 ECHO_ENUM2_32 = 2
99 } echo_Enum1_32;
101 typedef struct {
102 echo_Enum1 e1;
103 echo_Enum1_32 e2;
104 } echo_Enum2;
106 typedef [switch_type(uint16)] union {
107 [case(ECHO_ENUM1)] echo_Enum1 e1;
108 [case(ECHO_ENUM2)] echo_Enum2 e2;
109 } echo_Enum3;
111 void echo_TestEnum(
112 [in,out,ref] echo_Enum1 *foo1,
113 [in,out,ref] echo_Enum2 *foo2,
114 [in,out,ref,switch_is(*foo1)] echo_Enum3 *foo3
117 typedef struct {
118 uint32 x;
119 [size_is(x)] uint16 surrounding[*];
120 } echo_Surrounding;
122 void echo_TestSurrounding(
123 [in,out,ref] echo_Surrounding *data
126 uint16 echo_TestDoublePointer([in] uint16 ***data);