/
srvsvc.idl
107 lines (90 loc) · 2.22 KB
/
srvsvc.idl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
[
uuid(4b324fc8-1670-01d3-1278-5a47bf6ee188),
version(3.0)
]
interface srvsvc
{
import "../rpc.idl";
typedef struct {
[string] wchar_t *netname;
} ShareInfo0;
typedef struct {
int count;
[size_is(count)] ShareInfo0 *array;
} ShareInfoCtr0;
typedef struct {
[string] wchar_t *netname;
int type;
[string] wchar_t *remark;
} ShareInfo1;
typedef struct {
int count;
[size_is(count)] ShareInfo1 *array;
} ShareInfoCtr1;
typedef struct {
[string] wchar_t *netname;
int type;
[string] wchar_t *remark;
uint32_t permissions;
uint32_t max_uses;
uint32_t current_uses;
[string] wchar_t *path;
[string] wchar_t *password;
uint32_t sd_size;
[size_is(sd_size)] uint8_t *security_descriptor;
} ShareInfo502;
typedef struct {
int count;
[size_is(count)] ShareInfo502 *array;
} ShareInfoCtr502;
typedef [switch_type(int)] union {
[case(0)] ShareInfo0 *info0;
[case(1)] ShareInfo1 *info1;
[case(502)] ShareInfo502 *info1;
} ShareInfo;
typedef [switch_type(int)] union {
[case(0)] ShareInfoCtr0 *info0;
[case(1)] ShareInfoCtr1 *info1;
[case(502)] ShareInfoCtr502 *info1;
} ShareCtr;
[op(0x0f)]
int ShareEnumAll([in,string,unique] wchar_t *servername,
[in,out] int *level,
[in,out,switch_is(*level)] ShareCtr *info,
[in] unsigned long prefmaxlen,
[out] unsigned long *totalentries,
[in,out] unsigned long *resume_handle);
[op(0x10)]
int ShareGetInfo([in,string,unique] wchar_t *servername,
[in,string] wchar_t *sharename,
[in] int level,
[out,switch_is(level)] ShareInfo *info);
typedef struct {
unsigned long platform_id;
[string] wchar_t *name;
} ServerInfo100;
typedef [switch_type(int)] union {
[case(0)] ServerInfo100 *info0;
} ServerInfo;
[op(0x15)]
int ServerGetInfo([in,string,unique] wchar_t *servername,
[in] int level,
[out,switch_is(level)] ServerInfo *info);
typedef struct {
uint32_t elapsedt;
uint32_t msecs;
uint32_t hours;
uint32_t mins;
uint32_t secs;
uint32_t hunds;
uint32_t timezone;
uint32_t tinterval;
uint32_t day;
uint32_t month;
uint32_t year;
uint32_t weekday;
} TimeOfDayInfo;
[op(0x1c)]
int RemoteTOD([in,string,unique] wchar_t *servername,
[out,unique] TimeOfDayInfo *info);
}