1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00
samba-mirror/testprogs/win32/rpcecho/rpcecho.idl
2008-08-27 16:22:45 +10:00

147 lines
2.8 KiB
Plaintext

/*
RPC echo IDL.
Copyright (C) Tim Potter 2003
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __PIDL__
#define unistr [string] wchar_t *
#endif
[
uuid(60a15ec5-4de8-11d7-a637-005056a20182),
version(1.0)
]
interface rpcecho
{
// Add one to an integer
void AddOne(
[in] int in_data,
[out] int *out_data
);
// Echo an array of bytes back at the caller
void EchoData(
[in] int len,
[in] [size_is(len)] char in_data[],
[out] [size_is(len)] char out_data[]
);
// Sink data to the server
void SinkData(
[in] int len,
[in] [size_is(len)] char in_data[]
);
// Source data from server
void SourceData(
[in] int len,
[out] [size_is(len)] char out_data[]
);
const long myconstant = 42;
/* test strings */
void TestCall (
[in] unistr *s1,
[out] unistr *s2
);
/* test some alignment issues */
typedef struct {
char v;
} echo_info1;
typedef struct {
short v;
} echo_info2;
typedef struct {
long v;
} echo_info3;
typedef struct {
hyper v;
} echo_info4;
typedef struct {
char v1;
hyper v2;
} echo_info5;
typedef struct {
char v1;
echo_info1 info1;
} echo_info6;
typedef struct {
char v1;
echo_info4 info4;
} echo_info7;
typedef union {
[case(1)] echo_info1 info1;
[case(2)] echo_info2 info2;
[case(3)] echo_info3 info3;
[case(4)] echo_info4 info4;
[case(5)] echo_info5 info5;
[case(6)] echo_info6 info6;
[case(7)] echo_info7 info7;
} echo_Info;
long TestCall2 (
[in] short level,
[out,switch_is(level)] echo_Info **info
);
long TestSleep(
[in] long seconds
);
typedef enum {
ECHO_ENUM1 = 1,
ECHO_ENUM2 = 2
} echo_Enum1;
typedef [v1_enum] enum {
ECHO_ENUM1_32 = 1,
ECHO_ENUM2_32 = 2
} echo_Enum1_32;
typedef struct {
echo_Enum1 e1;
echo_Enum1_32 e2;
} echo_Enum2;
typedef union {
[case(ECHO_ENUM1)] echo_Enum1 e1;
[case(ECHO_ENUM2)] echo_Enum2 e2;
} echo_Enum3;
void echo_TestEnum(
[in,out,ref] echo_Enum1 *foo1,
[in,out,ref] echo_Enum2 *foo2,
[in,out,ref,switch_is(*foo1)] echo_Enum3 *foo3
);
typedef struct {
long x;
[size_is(x)] short surrounding[*];
} echo_Surrounding;
void echo_TestSurrounding(
[in,out,ref] echo_Surrounding *data
);
short echo_TestDoublePointer([in] short ***data);
}