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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
NETDFS.IDL
Abstract:
Contains the Netr (Net Remote) RPC interface specification for the
API associated with the Dfs Manager Service. This includes the following
APIs:
NetDfsEnum
Also contains the RPC specific data structures for these API.
Author:
Milan Shah (milans) 08-Jan-1996
Environment:
User Mode - Win32 - MIDL
Revision History:
08-Jan-1996 Milans Created.
--*/
//
// Interface Attributes
//
[
uuid(4fc742e0-4a10-11cf-8273-00aa004ae673),
version(3.0),
#ifdef __midl
ms_union,
#endif // __midl
pointer_default(unique)
]
interface netdfs
{
import "import.idl";
#include <lmcons.h>
//
// Data structures used by the public Dfs interface
//
typedef struct _DFS_INFO_1_CONTAINER {
DWORD EntriesRead;
[size_is(EntriesRead)] LPDFS_INFO_1 Buffer;
} DFS_INFO_1_CONTAINER, *LPDFS_INFO_1_CONTAINER;
typedef struct _DFS_INFO_2_CONTAINER {
DWORD EntriesRead;
[size_is(EntriesRead)] LPDFS_INFO_2 Buffer;
} DFS_INFO_2_CONTAINER, *LPDFS_INFO_2_CONTAINER;
typedef struct _DFS_INFO_3_CONTAINER {
DWORD EntriesRead;
[size_is(EntriesRead)] LPDFS_INFO_3 Buffer;
} DFS_INFO_3_CONTAINER, *LPDFS_INFO_3_CONTAINER;
typedef struct _DFS_INFO_ENUM_STRUCT {
DWORD Level;
[switch_is(Level)] union {
[case(1)]
LPDFS_INFO_1_CONTAINER DfsInfo1Container;
[case(2)]
LPDFS_INFO_2_CONTAINER DfsInfo2Container;
[case(3)]
LPDFS_INFO_3_CONTAINER DfsInfo3Container;
} DfsInfoContainer;
} DFS_INFO_ENUM_STRUCT, *LPDFS_INFO_ENUM_STRUCT;
typedef [switch_type(unsigned long)] union _DFS_INFO_STRUCT {
[case(1)]
LPDFS_INFO_1 DfsInfo1;
[case(2)]
LPDFS_INFO_2 DfsInfo2;
[case(3)]
LPDFS_INFO_3 DfsInfo3;
[case(100)]
LPDFS_INFO_100 DfsInfo100;
[case(101)]
LPDFS_INFO_101 DfsInfo101;
[default]
;
} DFS_INFO_STRUCT, *LPDFS_INFO_STRUCT;
//
// Data structures are used by the private Dfs Manager interface
//
typedef struct _DFSM_ENTRY_ID {
GUID idSubordinate;
[string, unique] LPWSTR wszSubordinate;
} DFSM_ENTRY_ID, *LPDFSM_ENTRY_ID;
typedef struct _DFSM_RELATION_INFO {
DWORD cSubordinates;
[size_is(cSubordinates)] DFSM_ENTRY_ID eid[];
} DFSM_RELATION_INFO, *LPDFSM_RELATION_INFO;
//
// The public Dfs interface methods
//
DWORD NetrDfsManagerGetVersion();
NET_API_STATUS NetrDfsAdd(
[in,string] LPWSTR DfsEntryPath,
[in,string] LPWSTR ServerName,
[in,unique,string] LPWSTR ShareName,
[in,unique,string] LPWSTR Comment,
[in] DWORD Flags);
NET_API_STATUS NetrDfsRemove(
[in,string] LPWSTR DfsEntryPath,
[in,unique,string] LPWSTR ServerName,
[in,unique,string] LPWSTR ShareName);
NET_API_STATUS NetrDfsSetInfo(
[in,string] LPWSTR DfsEntryPath,
[in,unique,string] LPWSTR ServerName,
[in,unique,string] LPWSTR ShareName,
[in] DWORD Level,
[in,switch_is(Level)] LPDFS_INFO_STRUCT DfsInfo);
NET_API_STATUS NetrDfsGetInfo(
[in,string] LPWSTR DfsEntryPath,
[in,unique,string] LPWSTR ServerName,
[in,unique,string] LPWSTR ShareName,
[in] DWORD Level,
[out,switch_is(Level)] LPDFS_INFO_STRUCT DfsInfo);
NET_API_STATUS NetrDfsEnum(
[in] DWORD Level,
[in] DWORD PrefMaxLen,
[in,out,unique] LPDFS_INFO_ENUM_STRUCT DfsEnum,
[in,out,unique] LPDWORD ResumeHandle);
NET_API_STATUS NetrDfsMove(
[in,string] LPWSTR DfsEntryPath,
[in,string] LPWSTR NewDfsEntryPath);
NET_API_STATUS NetrDfsRename(
[in,string] LPWSTR Path,
[in,string] LPWSTR NewPath);
//
// The private Dfs Manager methods
//
NET_API_STATUS NetrDfsManagerGetConfigInfo(
[in, string] LPWSTR wszServer,
[in, string] LPWSTR wszLocalVolumeEntryPath,
[in] GUID idLocalVolume,
[in, out, unique] LPDFSM_RELATION_INFO *ppRelationInfo);
}
|