added IDL and test for lsa_OpenSecret()
[ira/wip.git] / source4 / librpc / idl / dfs.idl
1 /*
2   dfs interface definition
3 */
4
5 #include "idl_types.h"
6
7 [ uuid(4fc742e0-4a10-11cf-8273-00aa004ae673),
8   version(3.0),
9   pointer_default(unique)
10 ] interface netdfs
11 {
12         /******************/
13         /* Function: 0x00 */
14         void dfs_Exist(
15                 [out,ref] uint32 *exist_flag
16                 );
17
18
19         /******************/
20         /* Function: 0x01 */
21         WERROR dfs_Add (
22                 [in,ref]     unistr *path,
23                 [in,ref]     unistr *server,
24                 [in]         unistr *share,
25                 [in]         unistr *comment,
26                 [in]         uint32  flags
27                 );
28
29         /******************/
30         /* Function: 0x02 */
31         WERROR dfs_Remove (
32                 [in,ref] unistr *path,
33                 [in]     unistr *server,
34                 [in]     unistr *share
35                 );
36
37         /******************/
38         /* Function: 0x03 */
39         WERROR dfs_SetInfo ();
40
41         /******************/
42         /* Function: 0x04 */
43
44         typedef struct {
45                 unistr *path;
46         } dfs_Info1;
47
48         typedef struct {
49                 unistr *path;
50                 unistr *comment;
51                 uint32 state;
52                 uint32 num_stores;
53         } dfs_Info2;
54
55         typedef struct {
56                 uint32 state;
57                 unistr *server;
58                 unistr *share;
59         } dfs_StorageInfo;
60
61         typedef struct {
62                 unistr *path;
63                 unistr *comment;
64                 uint32 state;
65                 uint32 num_stores;
66                 [size_is(num_stores)] dfs_StorageInfo *stores;
67         } dfs_Info3;
68
69         typedef struct {
70                 unistr *path;
71                 unistr *comment;
72                 uint32 state;
73                 uint32 timeout;
74                 GUID   guid;
75                 uint32 num_stores;
76                 [size_is(num_stores)] dfs_StorageInfo *stores;
77         } dfs_Info4;
78
79         typedef struct {
80                 unistr *comment;
81         } dfs_Info100;
82
83         typedef struct {
84                 uint32 state;
85         } dfs_Info101;
86
87         typedef struct {
88                 uint32 timeout;
89         } dfs_Info102;
90
91         typedef struct {
92                 unistr *dom_root;
93         } dfs_Info200;
94
95         typedef struct {
96                 uint32 flags;
97                 unistr *dom_root;
98         } dfs_Info300;
99
100         typedef union {
101                 [case(1)]   dfs_Info1 *info1;
102                 [case(2)]   dfs_Info2 *info2;
103                 [case(3)]   dfs_Info3 *info3;
104                 [case(4)]   dfs_Info4 *info4;
105                 [case(100)] dfs_Info100 *info100;
106                 [case(101)] dfs_Info101 *info101;
107                 [case(102)] dfs_Info102 *info102;
108                 [default] ;
109         } dfs_Info;
110
111         WERROR dfs_GetInfo (
112                 [in,ref] unistr *path,
113                 [in]     unistr *server,
114                 [in]     unistr *share,
115                 [in]     uint32 level,
116                 [out,switch_is(level)] dfs_Info info
117                 );
118
119         /******************/
120         /* Function: 0x05 */
121
122         typedef struct {
123                 uint32 count;
124                 [size_is(count)] dfs_Info1 *s;
125         } dfs_EnumArray1;
126
127         typedef struct {
128                 uint32 count;
129                 [size_is(count)] dfs_Info2 *s;
130         } dfs_EnumArray2;
131
132         typedef struct {
133                 uint32 count;
134                 [size_is(count)] dfs_Info3 *s;
135         } dfs_EnumArray3;
136
137         typedef struct {
138                 uint32 count;
139                 [size_is(count)] dfs_Info4 *s;
140         } dfs_EnumArray4;
141
142         typedef struct {
143                 uint32 count;
144                 [size_is(count)] dfs_Info200 *s;
145         } dfs_EnumArray200;
146
147         typedef struct {
148                 uint32 count;
149                 [size_is(count)] dfs_Info300 *s;
150         } dfs_EnumArray300;
151
152
153         typedef union {
154                 [case(1)] dfs_EnumArray1 *info1;
155                 [case(2)] dfs_EnumArray2 *info2;
156                 [case(3)] dfs_EnumArray3 *info3;
157                 [case(4)] dfs_EnumArray4 *info4;
158                 [case(200)] dfs_EnumArray200 *info200;
159                 [case(300)] dfs_EnumArray300 *info300;
160         } dfs_EnumInfo;
161
162         typedef struct {
163                 uint32 level;
164                 [switch_is(level)] dfs_EnumInfo e;
165         } dfs_EnumStruct;
166
167         WERROR dfs_Enum (
168                 [in] uint32 level,
169                 [in] uint32 bufsize,
170                 [in,out] dfs_EnumStruct *info,
171                 [in]     uint32 *unknown,
172                 [in,out] uint32 *total
173                 );
174 }