1 // Copyright © 2015, skdltmxn
2 // Licensed under the MIT License <LICENSE.md>
3 // This file contains structures, function prototypes, and definitions for the NetDfs API
4 pub const DFS_VOLUME_STATES: ::DWORD = 0xF;
5 pub const DFS_VOLUME_STATE_OK: ::DWORD = 1;
6 pub const DFS_VOLUME_STATE_INCONSISTENT: ::DWORD = 2;
7 pub const DFS_VOLUME_STATE_OFFLINE: ::DWORD = 3;
8 pub const DFS_VOLUME_STATE_ONLINE: ::DWORD = 4;
9 pub const DFS_VOLUME_STATE_RESYNCHRONIZE: ::DWORD = 0x10;
10 pub const DFS_VOLUME_STATE_STANDBY: ::DWORD = 0x20;
11 pub const DFS_VOLUME_STATE_FORCE_SYNC: ::DWORD = 0x40;
12 pub const DFS_VOLUME_FLAVORS: ::DWORD = 0x0300;
13 pub const DFS_VOLUME_FLAVOR_UNUSED1: ::DWORD = 0x0000;
14 pub const DFS_VOLUME_FLAVOR_STANDALONE: ::DWORD = 0x0100;
15 pub const DFS_VOLUME_FLAVOR_AD_BLOB: ::DWORD = 0x0200;
16 pub const DFS_STORAGE_FLAVOR_UNUSED2: ::DWORD = 0x0300;
17 pub const DFS_STORAGE_STATES: ::ULONG = 0xF;
18 pub const DFS_STORAGE_STATE_OFFLINE: ::ULONG = 1;
19 pub const DFS_STORAGE_STATE_ONLINE: ::ULONG = 2;
20 pub const DFS_STORAGE_STATE_ACTIVE: ::ULONG = 4;
21 ENUM!{enum DFS_TARGET_PRIORITY_CLASS {
22     DfsInvalidPriorityClass = -1i32 as u32,
23     DfsSiteCostNormalPriorityClass = 0,
24     DfsGlobalHighPriorityClass,
25     DfsSiteCostHighPriorityClass,
26     DfsSiteCostLowPriorityClass,
27     DfsGlobalLowPriorityClass,
28 }}
29 STRUCT!{struct DFS_TARGET_PRIORITY {
30     TargetPriorityClass: DFS_TARGET_PRIORITY_CLASS,
31     TargetPriorityRank: ::USHORT,
32     Reserved: ::USHORT,
33 }}
34 pub type PDFS_TARGET_PRIORITY = *mut DFS_TARGET_PRIORITY;
35 STRUCT!{struct DFS_INFO_1 {
36     EntryPath: ::LPWSTR,
37 }}
38 pub type PDFS_INFO_1 = *mut DFS_INFO_1;
39 pub type LPDFS_INFO_1 = *mut DFS_INFO_1;
40 #[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_1_32 {
41     EntryPath: ::ULONG,
42 }}
43 #[cfg(target_arch="x86_64")]
44 pub type PDFS_INFO_1_32 = *mut DFS_INFO_1_32;
45 #[cfg(target_arch="x86_64")]
46 pub type LPDFS_INFO_1_32 = *mut DFS_INFO_1_32;
47 STRUCT!{struct DFS_INFO_2 {
48     EntryPath: ::LPWSTR,
49     Comment: ::LPWSTR,
50     State: ::DWORD,
51     NumberOfStorages: ::DWORD,
52 }}
53 pub type PDFS_INFO_2 = *mut DFS_INFO_2;
54 pub type LPDFS_INFO_2 = *mut DFS_INFO_2;
55 #[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_2_32 {
56     EntryPath: ::ULONG,
57     Comment: ::ULONG,
58     State: ::DWORD,
59     NumberOfStorages: ::DWORD,
60 }}
61 #[cfg(target_arch="x86_64")]
62 pub type PDFS_INFO_2_32 = *mut DFS_INFO_2_32;
63 #[cfg(target_arch="x86_64")]
64 pub type LPDFS_INFO_2_32 = *mut DFS_INFO_2_32;
65 STRUCT!{struct DFS_STORAGE_INFO {
66     State: ::ULONG,
67     ServerName: ::LPWSTR,
68     ShareName: ::LPWSTR,
69 }}
70 pub type PDFS_STORAGE_INFO = *mut DFS_STORAGE_INFO;
71 pub type LPDFS_STORAGE_INFO = *mut DFS_STORAGE_INFO;
72 #[cfg(target_arch="x86_64")] STRUCT!{struct DFS_STORAGE_INFO_0_32 {
73     State: ::ULONG,
74     ServerName: ::ULONG,
75     ShareName: ::ULONG,
76 }}
77 #[cfg(target_arch="x86_64")]
78 pub type PDFS_STORAGE_INFO_0_32 = *mut DFS_STORAGE_INFO_0_32;
79 #[cfg(target_arch="x86_64")]
80 pub type LPDFS_STORAGE_INFO_0_32 = *mut DFS_STORAGE_INFO_0_32;
81 STRUCT!{struct DFS_STORAGE_INFO_1 {
82     State: ::ULONG,
83     ServerName: ::LPWSTR,
84     ShareName: ::LPWSTR,
85     TargetPriority: DFS_TARGET_PRIORITY,
86 }}
87 pub type PDFS_STORAGE_INFO_1 = *mut DFS_STORAGE_INFO_1;
88 pub type LPDFS_STORAGE_INFO_1 = *mut DFS_STORAGE_INFO_1;
89 STRUCT!{struct DFS_INFO_3 {
90     EntryPath: ::LPWSTR,
91     Comment: ::LPWSTR,
92     State: ::DWORD,
93     NumberOfStorages: ::DWORD,
94     Storage: LPDFS_STORAGE_INFO,
95 }}
96 pub type PDFS_INFO_3 = *mut DFS_INFO_3;
97 pub type LPDFS_INFO_3 = *mut DFS_INFO_3;
98 #[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_3_32 {
99     EntryPath: ::ULONG,
100     Comment: ::ULONG,
101     State: ::DWORD,
102     NumberOfStorages: ::DWORD,
103     Storage: ::ULONG,
104 }}
105 #[cfg(target_arch="x86_64")]
106 pub type PDFS_INFO_3_32 = *mut DFS_INFO_3_32;
107 #[cfg(target_arch="x86_64")]
108 pub type LPDFS_INFO_3_32 = *mut DFS_INFO_3_32;
109 STRUCT!{struct DFS_INFO_4 {
110     EntryPath: ::LPWSTR,
111     Comment: ::LPWSTR,
112     State: ::DWORD,
113     Timeout: ::ULONG,
114     Guid: ::GUID,
115     NumberOfStorages: ::DWORD,
116     Storage: LPDFS_STORAGE_INFO,
117 }}
118 pub type PDFS_INFO_4 = *mut DFS_INFO_4;
119 pub type LPDFS_INFO_4 = *mut DFS_INFO_4;
120 #[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_4_32 {
121     EntryPath: ::ULONG,
122     Comment: ::ULONG,
123     State: ::DWORD,
124     Timeout: ::ULONG,
125     Guid: ::GUID,
126     NumberOfStorages: ::DWORD,
127     Storage: ::ULONG,
128 }}
129 #[cfg(target_arch="x86_64")]
130 pub type PDFS_INFO_4_32 = *mut DFS_INFO_4_32;
131 #[cfg(target_arch="x86_64")]
132 pub type LPDFS_INFO_4_32 = *mut DFS_INFO_4_32;
133 STRUCT!{struct DFS_INFO_5 {
134     EntryPath: ::LPWSTR,
135     Comment: ::LPWSTR,
136     State: ::DWORD,
137     Timeout: ::ULONG,
138     Guid: ::GUID,
139     PropertyFlags: ::ULONG,
140     MetadataSize: ::ULONG,
141     NumberOfStorages: ::DWORD,
142 }}
143 pub type PDFS_INFO_5 = *mut DFS_INFO_5;
144 pub type LPDFS_INFO_5 = *mut DFS_INFO_5;
145 STRUCT!{struct DFS_INFO_6 {
146     EntryPath: ::LPWSTR,
147     Comment: ::LPWSTR,
148     State: ::DWORD,
149     Timeout: ::ULONG,
150     Guid: ::GUID,
151     PropertyFlags: ::ULONG,
152     MetadataSize: ::ULONG,
153     NumberOfStorages: ::DWORD,
154     Storage: LPDFS_STORAGE_INFO,
155 }}
156 pub type PDFS_INFO_6 = *mut DFS_INFO_6;
157 pub type LPDFS_INFO_6 = *mut DFS_INFO_6;
158 STRUCT!{struct DFS_INFO_7 {
159     GenerationGuid: ::GUID,
160 }}
161 pub type PDFS_INFO_7 = *mut DFS_INFO_7;
162 pub type LPDFS_INFO_7 = *mut DFS_INFO_7;
163 STRUCT!{struct DFS_INFO_8 {
164     EntryPath: ::LPWSTR,
165     Comment: ::LPWSTR,
166     State: ::DWORD,
167     Timeout: ::ULONG,
168     Guid: ::GUID,
169     PropertyFlags: ::ULONG,
170     MetadataSize: ::ULONG,
171     SdLengthReserved: ::ULONG,
172     pSecurityDescriptor: ::PSECURITY_DESCRIPTOR,
173     NumberOfStorages: ::DWORD,
174 }}
175 pub type PDFS_INFO_8 = *mut DFS_INFO_8;
176 pub type LPDFS_INFO_8 = *mut DFS_INFO_8;
177 STRUCT!{struct DFS_INFO_9 {
178     EntryPath: ::LPWSTR,
179     Comment: ::LPWSTR,
180     State: ::DWORD,
181     Timeout: ::ULONG,
182     Guid: ::GUID,
183     PropertyFlags: ::ULONG,
184     MetadataSize: ::ULONG,
185     SdLengthReserved: ::ULONG,
186     pSecurityDescriptor: ::PSECURITY_DESCRIPTOR,
187     NumberOfStorages: ::DWORD,
188     Storage: LPDFS_STORAGE_INFO,
189 }}
190 pub type PDFS_INFO_9 = *mut DFS_INFO_9;
191 pub type LPDFS_INFO_9 = *mut DFS_INFO_9;
192 pub const DFS_PROPERTY_FLAG_INSITE_REFERRALS: ::ULONG = 0x00000001;
193 pub const DFS_PROPERTY_FLAG_ROOT_SCALABILITY: ::ULONG = 0x00000002;
194 pub const DFS_PROPERTY_FLAG_SITE_COSTING: ::ULONG = 0x00000004;
195 pub const DFS_PROPERTY_FLAG_TARGET_FAILBACK: ::ULONG = 0x00000008;
196 pub const DFS_PROPERTY_FLAG_CLUSTER_ENABLED: ::ULONG = 0x00000010;
197 pub const DFS_PROPERTY_FLAG_ABDE: ::ULONG = 0x00000020;
198 pub const DFS_VALID_PROPERTY_FLAGS: ::ULONG = DFS_PROPERTY_FLAG_INSITE_REFERRALS
199     | DFS_PROPERTY_FLAG_ROOT_SCALABILITY | DFS_PROPERTY_FLAG_SITE_COSTING
200     | DFS_PROPERTY_FLAG_TARGET_FAILBACK | DFS_PROPERTY_FLAG_CLUSTER_ENABLED
201     | DFS_PROPERTY_FLAG_ABDE;
202 STRUCT!{struct DFS_INFO_50 {
203     NamespaceMajorVersion: ::ULONG,
204     NamespaceMinorVersion: ::ULONG,
205     NamespaceCapabilities: ::ULONGLONG,
206 }}
207 pub type PDFS_INFO_50 = *mut DFS_INFO_50;
208 pub type LPDFS_INFO_50 = *mut DFS_INFO_50;
209 STRUCT!{struct DFS_INFO_100 {
210     Comment: ::LPWSTR,
211 }}
212 pub type PDFS_INFO_100 = *mut DFS_INFO_100;
213 pub type LPDFS_INFO_100 = *mut DFS_INFO_100;
214 STRUCT!{struct DFS_INFO_101 {
215     State: ::DWORD,
216 }}
217 pub type PDFS_INFO_101 = *mut DFS_INFO_101;
218 pub type LPDFS_INFO_101 = *mut DFS_INFO_101;
219 STRUCT!{struct DFS_INFO_102 {
220     Timeout: ::ULONG,
221 }}
222 pub type PDFS_INFO_102 = *mut DFS_INFO_102;
223 pub type LPDFS_INFO_102 = *mut DFS_INFO_102;
224 STRUCT!{struct DFS_INFO_103 {
225     PropertyFlagMask: ::ULONG,
226     PropertyFlags: ::ULONG,
227 }}
228 pub type PDFS_INFO_103 = *mut DFS_INFO_103;
229 pub type LPDFS_INFO_103 = *mut DFS_INFO_103;
230 STRUCT!{struct DFS_INFO_104 {
231     TargetPriority: DFS_TARGET_PRIORITY,
232 }}
233 pub type PDFS_INFO_104 = *mut DFS_INFO_104;
234 pub type LPDFS_INFO_104 = *mut DFS_INFO_104;
235 STRUCT!{struct DFS_INFO_105 {
236     Comment: ::LPWSTR,
237     State: ::DWORD,
238     Timeout: ::ULONG,
239     PropertyFlagMask: ::ULONG,
240     PropertyFlags: ::ULONG,
241 }}
242 pub type PDFS_INFO_105 = *mut DFS_INFO_105;
243 pub type LPDFS_INFO_105 = *mut DFS_INFO_105;
244 STRUCT!{struct DFS_INFO_106 {
245     State: ::DWORD,
246     TargetPriority: DFS_TARGET_PRIORITY,
247 }}
248 pub type PDFS_INFO_106 = *mut DFS_INFO_106;
249 pub type LPDFS_INFO_106 = *mut DFS_INFO_106;
250 STRUCT!{struct DFS_INFO_107 {
251     Comment: ::LPWSTR,
252     State: ::DWORD,
253     Timeout: ::ULONG,
254     PropertyFlagMask: ::ULONG,
255     PropertyFlags: ::ULONG,
256     SdLengthReserved: ::ULONG,
257     pSecurityDescriptor: ::PSECURITY_DESCRIPTOR,
258 }}
259 pub type PDFS_INFO_107 = *mut DFS_INFO_107;
260 pub type LPDFS_INFO_107 = *mut DFS_INFO_107;
261 STRUCT!{struct DFS_INFO_150 {
262     SdLengthReserved: ::ULONG,
263     pSecurityDescriptor: ::PSECURITY_DESCRIPTOR,
264 }}
265 pub type PDFS_INFO_150 = *mut DFS_INFO_150;
266 pub type LPDFS_INFO_150 = *mut DFS_INFO_150;
267 STRUCT!{struct DFS_INFO_200 {
268     FtDfsName: ::LPWSTR,
269 }}
270 pub type PDFS_INFO_200 = *mut DFS_INFO_200;
271 pub type LPDFS_INFO_200 = *mut DFS_INFO_200;
272 STRUCT!{struct DFS_INFO_300 {
273     Flags: ::DWORD,
274     DfsName: ::LPWSTR,
275 }}
276 pub type PDFS_INFO_300 = *mut DFS_INFO_300;
277 pub type LPDFS_INFO_300 = *mut DFS_INFO_300;
278 pub const DFS_ADD_VOLUME: ::DWORD = 1;
279 pub const DFS_RESTORE_VOLUME: ::DWORD = 2;
280 pub const NET_DFS_SETDC_FLAGS: ::DWORD = 0x00000000;
281 pub const NET_DFS_SETDC_TIMEOUT: ::DWORD = 0x00000001;
282 pub const NET_DFS_SETDC_INITPKT: ::DWORD = 0x00000002;
283 STRUCT!{struct DFS_SITENAME_INFO {
284     SiteFlags: ::ULONG,
285     SiteName: ::LPWSTR,
286 }}
287 pub type PDFS_SITENAME_INFO = *mut DFS_SITENAME_INFO;
288 pub type LPDFS_SITENAME_INFO = *mut DFS_SITENAME_INFO;
289 pub const DFS_SITE_PRIMARY: ::ULONG = 0x1;
290 STRUCT!{struct DFS_SITELIST_INFO {
291     cSites: ::ULONG,
292     Site: [DFS_SITENAME_INFO; 1],
293 }}
294 pub type PDFS_SITELIST_INFO = *mut DFS_SITELIST_INFO;
295 pub type LPDFS_SITELIST_INFO = *mut DFS_SITELIST_INFO;
296 ENUM!{enum DFS_NAMESPACE_VERSION_ORIGIN {
297     DFS_NAMESPACE_VERSION_ORIGIN_COMBINED = 0,
298     DFS_NAMESPACE_VERSION_ORIGIN_SERVER,
299     DFS_NAMESPACE_VERSION_ORIGIN_DOMAIN,
300 }}
301 pub type PDFS_NAMESPACE_VERSION_ORIGIN = *mut DFS_NAMESPACE_VERSION_ORIGIN;
302 pub const DFS_NAMESPACE_CAPABILITY_ABDE: ::ULONGLONG = 0x0000000000000001;
303 STRUCT!{struct DFS_SUPPORTED_NAMESPACE_VERSION_INFO {
304     DomainDfsMajorVersion: ::ULONG,
305     DomainDfsMinorVersion: ::ULONG,
306     DomainDfsCapabilities: ::ULONGLONG,
307     StandaloneDfsMajorVersion: ::ULONG,
308     StandaloneDfsMinorVersion: ::ULONG,
309     StandaloneDfsCapabilities: ::ULONGLONG,
310 }}
311 pub type PDFS_SUPPORTED_NAMESPACE_VERSION_INFO = *mut DFS_SUPPORTED_NAMESPACE_VERSION_INFO;
312