3 uuid("60a15ec5-4de8-11d7-a637-005056a20182"),
4 endpoint("ncacn_np:[\\pipe\\rpcecho]", "ncacn_ip_tcp:", "ncalrpc:"),
5 pointer_default(unique),
7 helpstring("Simple echo pipe")
11 /* Add one to an integer */
14 [out] uint32
*out_data
16 /* Echo an array of bytes back at the caller */
19 [in] [size_is(len
)] uint8 in_data
[],
20 [out] [size_is(len
)] uint8 out_data
[]
22 /* Sink data to the server */
25 [in,size_is(len
)] uint8 data
[]
27 /* Source data from server */
30 [out,size_is(len
)] uint8 data
[]
35 [in,string,charset
(UTF16
)] uint16
*s1
,
36 [out,string,charset
(UTF16
)] uint16
**s2
40 /* test some alignment issues */
41 typedef [public] struct {
69 struct echo_info4 info4
;
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
;
82 NTSTATUS echo_TestCall2
(
84 [out,switch_is(level
)] echo_Info
*info
87 uint32 echo_TestSleep
(
96 typedef [v1_enum] enum {
106 typedef [switch_type(uint16
)] union {
107 [case(ECHO_ENUM1
)] echo_Enum1 e1
;
108 [case(ECHO_ENUM2
)] echo_Enum2 e2
;
112 [in,out,ref] echo_Enum1
*foo1
,
113 [in,out,ref] echo_Enum2
*foo2
,
114 [in,out,ref,switch_is(*foo1
)] echo_Enum3
*foo3
119 [size_is(x
)] uint16 surrounding
[*];
122 void echo_TestSurrounding
(
123 [in,out,ref] echo_Surrounding
*data
126 uint16 echo_TestDoublePointer
([in] uint16
***data
);