1 // Copyright © 2015, skdltmxn
2 // Licensed under the MIT License <LICENSE.md>
3 // This file contains structures, function prototypes, and definitions
4 // for the NetUser, NetUserModals, NetGroup, NetAccess, and NetLogon API.
5 STRUCT!{struct USER_INFO_0 {
6     usri0_name: ::LPWSTR,
7 }}
8 pub type PUSER_INFO_0 = *mut USER_INFO_0;
9 pub type LPUSER_INFO_0 = *mut USER_INFO_0;
10 STRUCT!{struct USER_INFO_1 {
11     usri1_name: ::LPWSTR,
12     usri1_password: ::LPWSTR,
13     usri1_password_age: ::DWORD,
14     usri1_priv: ::DWORD,
15     usri1_home_dir: ::LPWSTR,
16     usri1_comment: ::LPWSTR,
17     usri1_flags: ::DWORD,
18     usri1_script_path: ::LPWSTR,
19 }}
20 pub type PUSER_INFO_1 = *mut USER_INFO_1;
21 pub type LPUSER_INFO_1 = *mut USER_INFO_1;
22 STRUCT!{struct USER_INFO_2 {
23     usri2_name: ::LPWSTR,
24     usri2_password: ::LPWSTR,
25     usri2_password_age: ::DWORD,
26     usri2_priv: ::DWORD,
27     usri2_home_dir: ::LPWSTR,
28     usri2_comment: ::LPWSTR,
29     usri2_flags: ::DWORD,
30     usri2_script_path: ::LPWSTR,
31     usri2_auth_flags: ::DWORD,
32     usri2_full_name: ::LPWSTR,
33     usri2_usr_comment: ::LPWSTR,
34     usri2_parms: ::LPWSTR,
35     usri2_workstations: ::LPWSTR,
36     usri2_last_logon: ::DWORD,
37     usri2_last_logoff: ::DWORD,
38     usri2_acct_expires: ::DWORD,
39     usri2_max_storage: ::DWORD,
40     usri2_units_per_week: ::DWORD,
41     usri2_logon_hours: ::PBYTE,
42     usri2_bad_pw_count: ::DWORD,
43     usri2_num_logons: ::DWORD,
44     usri2_logon_server: ::LPWSTR,
45     usri2_country_code: ::DWORD,
46     usri2_code_page: ::DWORD,
47 }}
48 pub type PUSER_INFO_2 = *mut USER_INFO_2;
49 pub type LPUSER_INFO_2 = *mut USER_INFO_2;
50 STRUCT!{struct USER_INFO_3 {
51     usri3_name: ::LPWSTR,
52     usri3_password: ::LPWSTR,
53     usri3_password_age: ::DWORD,
54     usri3_priv: ::DWORD,
55     usri3_home_dir: ::LPWSTR,
56     usri3_comment: ::LPWSTR,
57     usri3_flags: ::DWORD,
58     usri3_script_path: ::LPWSTR,
59     usri3_auth_flags: ::DWORD,
60     usri3_full_name: ::LPWSTR,
61     usri3_usr_comment: ::LPWSTR,
62     usri3_parms: ::LPWSTR,
63     usri3_workstations: ::LPWSTR,
64     usri3_last_logon: ::DWORD,
65     usri3_last_logoff: ::DWORD,
66     usri3_acct_expires: ::DWORD,
67     usri3_max_storage: ::DWORD,
68     usri3_units_per_week: ::DWORD,
69     usri3_logon_hours: ::PBYTE,
70     usri3_bad_pw_count: ::DWORD,
71     usri3_num_logons: ::DWORD,
72     usri3_logon_server: ::LPWSTR,
73     usri3_country_code: ::DWORD,
74     usri3_code_page: ::DWORD,
75     usri3_user_id: ::DWORD,
76     usri3_primary_group_id: ::DWORD,
77     usri3_profile: ::LPWSTR,
78     usri3_home_dir_drive: ::LPWSTR,
79     usri3_password_expired: ::DWORD,
80 }}
81 pub type PUSER_INFO_3 = *mut USER_INFO_3;
82 pub type LPUSER_INFO_3 = *mut USER_INFO_3;
83 STRUCT!{struct USER_INFO_4 {
84     usri4_name: ::LPWSTR,
85     usri4_password: ::LPWSTR,
86     usri4_password_age: ::DWORD,
87     usri4_priv: ::DWORD,
88     usri4_home_dir: ::LPWSTR,
89     usri4_comment: ::LPWSTR,
90     usri4_flags: ::DWORD,
91     usri4_script_path: ::LPWSTR,
92     usri4_auth_flags: ::DWORD,
93     usri4_full_name: ::LPWSTR,
94     usri4_usr_comment: ::LPWSTR,
95     usri4_parms: ::LPWSTR,
96     usri4_workstations: ::LPWSTR,
97     usri4_last_logon: ::DWORD,
98     usri4_last_logoff: ::DWORD,
99     usri4_acct_expires: ::DWORD,
100     usri4_max_storage: ::DWORD,
101     usri4_units_per_week: ::DWORD,
102     usri4_logon_hours: ::PBYTE,
103     usri4_bad_pw_count: ::DWORD,
104     usri4_num_logons: ::DWORD,
105     usri4_logon_server: ::LPWSTR,
106     usri4_country_code: ::DWORD,
107     usri4_code_page: ::DWORD,
108     usri4_user_sid: ::PSID,
109     usri4_primary_group_id: ::DWORD,
110     usri4_profile: ::LPWSTR,
111     usri4_home_dir_drive: ::LPWSTR,
112     usri4_password_expired: ::DWORD,
113 }}
114 pub type PUSER_INFO_4 = *mut USER_INFO_4;
115 pub type LPUSER_INFO_4 = *mut USER_INFO_4;
116 STRUCT!{struct USER_INFO_10 {
117     usri10_name: ::LPWSTR,
118     usri10_comment: ::LPWSTR,
119     usri10_usr_comment: ::LPWSTR,
120     usri10_full_name: ::LPWSTR,
121 }}
122 pub type PUSER_INFO_10 = *mut USER_INFO_10;
123 pub type LPUSER_INFO_10 = *mut USER_INFO_10;
124 STRUCT!{struct USER_INFO_11 {
125     usri11_name: ::LPWSTR,
126     usri11_comment: ::LPWSTR,
127     usri11_usr_comment: ::LPWSTR,
128     usri11_full_name: ::LPWSTR,
129     usri11_priv: ::DWORD,
130     usri11_auth_flags: ::DWORD,
131     usri11_password_age: ::DWORD,
132     usri11_home_dir: ::LPWSTR,
133     usri11_parms: ::LPWSTR,
134     usri11_last_logon: ::DWORD,
135     usri11_last_logoff: ::DWORD,
136     usri11_bad_pw_count: ::DWORD,
137     usri11_num_logons: ::DWORD,
138     usri11_logon_server: ::LPWSTR,
139     usri11_country_code: ::DWORD,
140     usri11_workstations: ::LPWSTR,
141     usri11_max_storage: ::DWORD,
142     usri11_units_per_week: ::DWORD,
143     usri11_logon_hours: ::PBYTE,
144     usri11_code_page: ::DWORD,
145 }}
146 pub type PUSER_INFO_11 = *mut USER_INFO_11;
147 pub type LPUSER_INFO_11 = *mut USER_INFO_11;
148 STRUCT!{struct USER_INFO_20 {
149     usri20_name: ::LPWSTR,
150     usri20_full_name: ::LPWSTR,
151     usri20_comment: ::LPWSTR,
152     usri20_flags: ::DWORD,
153     usri20_user_id: ::DWORD,
154 }}
155 pub type PUSER_INFO_20 = *mut USER_INFO_20;
156 pub type LPUSER_INFO_20 = *mut USER_INFO_20;
157 STRUCT!{struct USER_INFO_21 {
158     usri21_password: [::BYTE; ::ENCRYPTED_PWLEN],
159 }}
160 pub type PUSER_INFO_21 = *mut USER_INFO_21;
161 pub type LPUSER_INFO_21 = *mut USER_INFO_21;
162 STRUCT!{struct USER_INFO_22 {
163     usri22_name: ::LPWSTR,
164     usri22_password: [::BYTE; ::ENCRYPTED_PWLEN],
165     usri22_password_age: ::DWORD,
166     usri22_priv: ::DWORD,
167     usri22_home_dir: ::LPWSTR,
168     usri22_comment: ::LPWSTR,
169     usri22_flags: ::DWORD,
170     usri22_script_path: ::LPWSTR,
171     usri22_auth_flags: ::DWORD,
172     usri22_full_name: ::LPWSTR,
173     usri22_usr_comment: ::LPWSTR,
174     usri22_parms: ::LPWSTR,
175     usri22_workstations: ::LPWSTR,
176     usri22_last_logon: ::DWORD,
177     usri22_last_logoff: ::DWORD,
178     usri22_acct_expires: ::DWORD,
179     usri22_max_storage: ::DWORD,
180     usri22_units_per_week: ::DWORD,
181     usri22_logon_hours: ::PBYTE,
182     usri22_bad_pw_count: ::DWORD,
183     usri22_num_logons: ::DWORD,
184     usri22_logon_server: ::LPWSTR,
185     usri22_country_code: ::DWORD,
186     usri22_code_page: ::DWORD,
187 }}
188 pub type PUSER_INFO_22 = *mut USER_INFO_22;
189 pub type LPUSER_INFO_22 = *mut USER_INFO_22;
190 STRUCT!{struct USER_INFO_23 {
191     usri23_name: ::LPWSTR,
192     usri23_full_name: ::LPWSTR,
193     usri23_comment: ::LPWSTR,
194     usri23_flags: ::DWORD,
195     usri23_user_sid: ::PSID,
196 }}
197 pub type PUSER_INFO_23 = *mut USER_INFO_23;
198 pub type LPUSER_INFO_23 = *mut USER_INFO_23;
199 STRUCT!{struct USER_INFO_24 {
200     usri24_internet_identity: ::BOOL,
201     usri24_flags: ::DWORD,
202     usri24_internet_provider_name: ::LPWSTR,
203     usri24_internet_principal_name: ::LPWSTR,
204     usri24_user_sid: ::PSID,
205 }}
206 pub type PUSER_INFO_24 = *mut USER_INFO_24;
207 pub type LPUSER_INFO_24 = *mut USER_INFO_24;
208 STRUCT!{struct USER_INFO_1003 {
209     usri1003_password: ::LPWSTR,
210 }}
211 pub type PUSER_INFO_1003 = *mut USER_INFO_1003;
212 pub type LPUSER_INFO_1003 = *mut USER_INFO_1003;
213 STRUCT!{struct USER_INFO_1005 {
214     usri1005_priv: ::DWORD,
215 }}
216 pub type PUSER_INFO_1005 = *mut USER_INFO_1005;
217 pub type LPUSER_INFO_1005 = *mut USER_INFO_1005;
218 STRUCT!{struct USER_INFO_1006 {
219     usri1006_home_dir: ::LPWSTR,
220 }}
221 pub type PUSER_INFO_1006 = *mut USER_INFO_1006;
222 pub type LPUSER_INFO_1006 = *mut USER_INFO_1006;
223 STRUCT!{struct USER_INFO_1007 {
224     usri1007_comment: ::LPWSTR,
225 }}
226 pub type PUSER_INFO_1007 = *mut USER_INFO_1007;
227 pub type LPUSER_INFO_1007 = *mut USER_INFO_1007;
228 STRUCT!{struct USER_INFO_1008 {
229     usri1008_flags: ::DWORD,
230 }}
231 pub type PUSER_INFO_1008 = *mut USER_INFO_1008;
232 pub type LPUSER_INFO_1008 = *mut USER_INFO_1008;
233 STRUCT!{struct USER_INFO_1009 {
234     usri1009_script_path: ::LPWSTR,
235 }}
236 pub type PUSER_INFO_1009 = *mut USER_INFO_1009;
237 pub type LPUSER_INFO_1009 = *mut USER_INFO_1009;
238 STRUCT!{struct USER_INFO_1010 {
239     usri1010_auth_flags: ::DWORD,
240 }}
241 pub type PUSER_INFO_1010 = *mut USER_INFO_1010;
242 pub type LPUSER_INFO_1010 = *mut USER_INFO_1010;
243 STRUCT!{struct USER_INFO_1011 {
244     usri1011_full_name: ::LPWSTR,
245 }}
246 pub type PUSER_INFO_1011 = *mut USER_INFO_1011;
247 pub type LPUSER_INFO_1011 = *mut USER_INFO_1011;
248 STRUCT!{struct USER_INFO_1012 {
249     usri1012_usr_comment: ::LPWSTR,
250 }}
251 pub type PUSER_INFO_1012 = *mut USER_INFO_1012;
252 pub type LPUSER_INFO_1012 = *mut USER_INFO_1012;
253 STRUCT!{struct USER_INFO_1013 {
254     usri1013_parms: ::LPWSTR,
255 }}
256 pub type PUSER_INFO_1013 = *mut USER_INFO_1013;
257 pub type LPUSER_INFO_1013 = *mut USER_INFO_1013;
258 STRUCT!{struct USER_INFO_1014 {
259     usri1014_workstations: ::LPWSTR,
260 }}
261 pub type PUSER_INFO_1014 = *mut USER_INFO_1014;
262 pub type LPUSER_INFO_1014 = *mut USER_INFO_1014;
263 STRUCT!{struct USER_INFO_1017 {
264     usri1017_acct_expires: ::DWORD,
265 }}
266 pub type PUSER_INFO_1017 = *mut USER_INFO_1017;
267 pub type LPUSER_INFO_1017 = *mut USER_INFO_1017;
268 STRUCT!{struct USER_INFO_1018 {
269     usri1018_max_storage: ::DWORD,
270 }}
271 pub type PUSER_INFO_1018 = *mut USER_INFO_1018;
272 pub type LPUSER_INFO_1018 = *mut USER_INFO_1018;
273 STRUCT!{struct USER_INFO_1020 {
274     usri1020_units_per_week: ::DWORD,
275     usri1020_logon_hours: ::LPBYTE,
276 }}
277 pub type PUSER_INFO_1020 = *mut USER_INFO_1020;
278 pub type LPUSER_INFO_1020 = *mut USER_INFO_1020;
279 STRUCT!{struct USER_INFO_1023 {
280     usri1023_logon_server: ::LPWSTR,
281 }}
282 pub type PUSER_INFO_1023 = *mut USER_INFO_1023;
283 pub type LPUSER_INFO_1023 = *mut USER_INFO_1023;
284 STRUCT!{struct USER_INFO_1024 {
285     usri1024_country_code: ::DWORD,
286 }}
287 pub type PUSER_INFO_1024 = *mut USER_INFO_1024;
288 pub type LPUSER_INFO_1024 = *mut USER_INFO_1024;
289 STRUCT!{struct USER_INFO_1025 {
290     usri1025_code_page: ::DWORD,
291 }}
292 pub type PUSER_INFO_1025 = *mut USER_INFO_1025;
293 pub type LPUSER_INFO_1025 = *mut USER_INFO_1025;
294 STRUCT!{struct USER_INFO_1051 {
295     usri1051_primary_group_id: ::DWORD,
296 }}
297 pub type PUSER_INFO_1051 = *mut USER_INFO_1051;
298 pub type LPUSER_INFO_1051 = *mut USER_INFO_1051;
299 STRUCT!{struct USER_INFO_1052 {
300     usri1052_profile: ::LPWSTR,
301 }}
302 pub type PUSER_INFO_1052 = *mut USER_INFO_1052;
303 pub type LPUSER_INFO_1052 = *mut USER_INFO_1052;
304 STRUCT!{struct USER_INFO_1053 {
305     usri1053_home_dir_drive: ::LPWSTR,
306 }}
307 pub type PUSER_INFO_1053 = *mut USER_INFO_1053;
308 pub type LPUSER_INFO_1053 = *mut USER_INFO_1053;
309 STRUCT!{struct USER_MODALS_INFO_0 {
310     usrmod0_min_passwd_len: ::DWORD,
311     usrmod0_max_passwd_age: ::DWORD,
312     usrmod0_min_passwd_age: ::DWORD,
313     usrmod0_force_logoff: ::DWORD,
314     usrmod0_password_hist_len: ::DWORD,
315 }}
316 pub type PUSER_MODALS_INFO_0 = *mut USER_MODALS_INFO_0;
317 pub type LPUSER_MODALS_INFO_0 = *mut USER_MODALS_INFO_0;
318 STRUCT!{struct USER_MODALS_INFO_1 {
319     usrmod1_role: ::DWORD,
320     usrmod1_primary: ::LPWSTR,
321 }}
322 pub type PUSER_MODALS_INFO_1 = *mut USER_MODALS_INFO_1;
323 pub type LPUSER_MODALS_INFO_1 = *mut USER_MODALS_INFO_1;
324 STRUCT!{struct USER_MODALS_INFO_2 {
325     usrmod2_domain_name: ::LPWSTR,
326     usrmod2_domain_id: ::PSID,
327 }}
328 pub type PUSER_MODALS_INFO_2 = *mut USER_MODALS_INFO_2;
329 pub type LPUSER_MODALS_INFO_2 = *mut USER_MODALS_INFO_2;
330 STRUCT!{struct USER_MODALS_INFO_3 {
331     usrmod3_lockout_duration: ::DWORD,
332     usrmod3_lockout_observation_window: ::DWORD,
333     usrmod3_lockout_threshold: ::DWORD,
334 }}
335 pub type PUSER_MODALS_INFO_3 = *mut USER_MODALS_INFO_3;
336 pub type LPUSER_MODALS_INFO_3 = *mut USER_MODALS_INFO_3;
337 STRUCT!{struct USER_MODALS_INFO_1001 {
338     usrmod1001_min_passwd_len: ::DWORD,
339 }}
340 pub type PUSER_MODALS_INFO_1001 = *mut USER_MODALS_INFO_1001;
341 pub type LPUSER_MODALS_INFO_1001 = *mut USER_MODALS_INFO_1001;
342 STRUCT!{struct USER_MODALS_INFO_1002 {
343     usrmod1002_max_passwd_age: ::DWORD,
344 }}
345 pub type PUSER_MODALS_INFO_1002 = *mut USER_MODALS_INFO_1002;
346 pub type LPUSER_MODALS_INFO_1002 = *mut USER_MODALS_INFO_1002;
347 STRUCT!{struct USER_MODALS_INFO_1003 {
348     usrmod1003_min_passwd_age: ::DWORD,
349 }}
350 pub type PUSER_MODALS_INFO_1003 = *mut USER_MODALS_INFO_1003;
351 pub type LPUSER_MODALS_INFO_1003 = *mut USER_MODALS_INFO_1003;
352 STRUCT!{struct USER_MODALS_INFO_1004 {
353     usrmod1004_force_logoff: ::DWORD,
354 }}
355 pub type PUSER_MODALS_INFO_1004 = *mut USER_MODALS_INFO_1004;
356 pub type LPUSER_MODALS_INFO_1004 = *mut USER_MODALS_INFO_1004;
357 STRUCT!{struct USER_MODALS_INFO_1005 {
358     usrmod1005_password_hist_len: ::DWORD,
359 }}
360 pub type PUSER_MODALS_INFO_1005 = *mut USER_MODALS_INFO_1005;
361 pub type LPUSER_MODALS_INFO_1005 = *mut USER_MODALS_INFO_1005;
362 STRUCT!{struct USER_MODALS_INFO_1006 {
363     usrmod1006_role: ::DWORD,
364 }}
365 pub type PUSER_MODALS_INFO_1006 = *mut USER_MODALS_INFO_1006;
366 pub type LPUSER_MODALS_INFO_1006 = *mut USER_MODALS_INFO_1006;
367 STRUCT!{struct USER_MODALS_INFO_1007 {
368     usrmod1007_primary: ::LPWSTR,
369 }}
370 pub type PUSER_MODALS_INFO_1007 = *mut USER_MODALS_INFO_1007;
371 pub type LPUSER_MODALS_INFO_1007 = *mut USER_MODALS_INFO_1007;
372 pub const UF_SCRIPT: ::DWORD = 0x0001;
373 pub const UF_ACCOUNTDISABLE: ::DWORD = 0x0002;
374 pub const UF_HOMEDIR_REQUIRED: ::DWORD = 0x0008;
375 pub const UF_LOCKOUT: ::DWORD = 0x0010;
376 pub const UF_PASSWD_NOTREQD: ::DWORD = 0x0020;
377 pub const UF_PASSWD_CANT_CHANGE: ::DWORD = 0x0040;
378 pub const UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED: ::DWORD = 0x0080;
379 pub const UF_TEMP_DUPLICATE_ACCOUNT: ::DWORD = 0x0100;
380 pub const UF_NORMAL_ACCOUNT: ::DWORD = 0x0200;
381 pub const UF_INTERDOMAIN_TRUST_ACCOUNT: ::DWORD = 0x0800;
382 pub const UF_WORKSTATION_TRUST_ACCOUNT: ::DWORD = 0x1000;
383 pub const UF_SERVER_TRUST_ACCOUNT: ::DWORD = 0x2000;
384 pub const UF_MACHINE_ACCOUNT_MASK: ::DWORD = UF_INTERDOMAIN_TRUST_ACCOUNT
385     | UF_WORKSTATION_TRUST_ACCOUNT | UF_SERVER_TRUST_ACCOUNT;
386 pub const UF_ACCOUNT_TYPE_MASK: ::DWORD = UF_TEMP_DUPLICATE_ACCOUNT | UF_NORMAL_ACCOUNT
387     | UF_INTERDOMAIN_TRUST_ACCOUNT |  UF_WORKSTATION_TRUST_ACCOUNT |  UF_SERVER_TRUST_ACCOUNT;
388 pub const UF_DONT_EXPIRE_PASSWD: ::DWORD = 0x10000;
389 pub const UF_MNS_LOGON_ACCOUNT: ::DWORD = 0x20000;
390 pub const UF_SMARTCARD_REQUIRED: ::DWORD = 0x40000;
391 pub const UF_TRUSTED_FOR_DELEGATION: ::DWORD = 0x80000;
392 pub const UF_NOT_DELEGATED: ::DWORD = 0x100000;
393 pub const UF_USE_DES_KEY_ONLY: ::DWORD = 0x200000;
394 pub const UF_DONT_REQUIRE_PREAUTH: ::DWORD = 0x400000;
395 pub const UF_PASSWORD_EXPIRED: ::DWORD = 0x800000;
396 pub const UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION: ::DWORD = 0x1000000;
397 pub const UF_NO_AUTH_DATA_REQUIRED: ::DWORD = 0x2000000;
398 pub const UF_PARTIAL_SECRETS_ACCOUNT: ::DWORD = 0x4000000;
399 pub const UF_USE_AES_KEYS: ::DWORD = 0x8000000;
400 pub const UF_SETTABLE_BITS: ::DWORD = UF_SCRIPT |  UF_ACCOUNTDISABLE |  UF_LOCKOUT
401     | UF_HOMEDIR_REQUIRED | UF_PASSWD_NOTREQD | UF_PASSWD_CANT_CHANGE | UF_ACCOUNT_TYPE_MASK
402     | UF_DONT_EXPIRE_PASSWD | UF_MNS_LOGON_ACCOUNT | UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED
403     | UF_SMARTCARD_REQUIRED | UF_TRUSTED_FOR_DELEGATION | UF_NOT_DELEGATED | UF_USE_DES_KEY_ONLY
404     | UF_DONT_REQUIRE_PREAUTH | UF_PASSWORD_EXPIRED | UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION
405     | UF_NO_AUTH_DATA_REQUIRED | UF_USE_AES_KEYS | UF_PARTIAL_SECRETS_ACCOUNT;
406 pub const FILTER_TEMP_DUPLICATE_ACCOUNT: ::DWORD = 0x0001;
407 pub const FILTER_NORMAL_ACCOUNT: ::DWORD = 0x0002;
408 pub const FILTER_INTERDOMAIN_TRUST_ACCOUNT: ::DWORD = 0x0008;
409 pub const FILTER_WORKSTATION_TRUST_ACCOUNT: ::DWORD = 0x0010;
410 pub const FILTER_SERVER_TRUST_ACCOUNT: ::DWORD = 0x0020;
411 pub const LG_INCLUDE_INDIRECT: ::DWORD = 0x0001;
412 pub const AF_OP_PRINT: ::DWORD = 0x1;
413 pub const AF_OP_COMM: ::DWORD = 0x2;
414 pub const AF_OP_SERVER: ::DWORD = 0x4;
415 pub const AF_OP_ACCOUNTS: ::DWORD = 0x8;
416 pub const AF_SETTABLE_BITS: ::DWORD = AF_OP_PRINT | AF_OP_COMM | AF_OP_SERVER | AF_OP_ACCOUNTS;
417 pub const UAS_ROLE_STANDALONE: ::DWORD = 0;
418 pub const UAS_ROLE_MEMBER: ::DWORD = 1;
419 pub const UAS_ROLE_BACKUP: ::DWORD = 2;
420 pub const UAS_ROLE_PRIMARY: ::DWORD = 3;
421 pub const USER_NAME_PARMNUM: ::DWORD = 1;
422 pub const USER_PASSWORD_PARMNUM: ::DWORD = 3;
423 pub const USER_PASSWORD_AGE_PARMNUM: ::DWORD = 4;
424 pub const USER_PRIV_PARMNUM: ::DWORD = 5;
425 pub const USER_HOME_DIR_PARMNUM: ::DWORD = 6;
426 pub const USER_COMMENT_PARMNUM: ::DWORD = 7;
427 pub const USER_FLAGS_PARMNUM: ::DWORD = 8;
428 pub const USER_SCRIPT_PATH_PARMNUM: ::DWORD = 9;
429 pub const USER_AUTH_FLAGS_PARMNUM: ::DWORD = 10;
430 pub const USER_FULL_NAME_PARMNUM: ::DWORD = 11;
431 pub const USER_USR_COMMENT_PARMNUM: ::DWORD = 12;
432 pub const USER_PARMS_PARMNUM: ::DWORD = 13;
433 pub const USER_WORKSTATIONS_PARMNUM: ::DWORD = 14;
434 pub const USER_LAST_LOGON_PARMNUM: ::DWORD = 15;
435 pub const USER_LAST_LOGOFF_PARMNUM: ::DWORD = 16;
436 pub const USER_ACCT_EXPIRES_PARMNUM: ::DWORD = 17;
437 pub const USER_MAX_STORAGE_PARMNUM: ::DWORD = 18;
438 pub const USER_UNITS_PER_WEEK_PARMNUM: ::DWORD = 19;
439 pub const USER_LOGON_HOURS_PARMNUM: ::DWORD = 20;
440 pub const USER_PAD_PW_COUNT_PARMNUM: ::DWORD = 21;
441 pub const USER_NUM_LOGONS_PARMNUM: ::DWORD = 22;
442 pub const USER_LOGON_SERVER_PARMNUM: ::DWORD = 23;
443 pub const USER_COUNTRY_CODE_PARMNUM: ::DWORD = 24;
444 pub const USER_CODE_PAGE_PARMNUM: ::DWORD = 25;
445 pub const USER_PRIMARY_GROUP_PARMNUM: ::DWORD = 51;
446 pub const USER_PROFILE: ::DWORD = 52;
447 pub const USER_PROFILE_PARMNUM: ::DWORD = 52;
448 pub const USER_HOME_DIR_DRIVE_PARMNUM: ::DWORD = 53;
449 pub const USER_NAME_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_NAME_PARMNUM;
450 pub const USER_PASSWORD_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_PASSWORD_PARMNUM;
451 pub const USER_PASSWORD_AGE_INFOLEVEL: ::DWORD =
452     ::PARMNUM_BASE_INFOLEVEL + USER_PASSWORD_AGE_PARMNUM;
453 pub const USER_PRIV_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_PRIV_PARMNUM;
454 pub const USER_HOME_DIR_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_HOME_DIR_PARMNUM;
455 pub const USER_COMMENT_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_COMMENT_PARMNUM;
456 pub const USER_FLAGS_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_FLAGS_PARMNUM;
457 pub const USER_SCRIPT_PATH_INFOLEVEL: ::DWORD =
458     ::PARMNUM_BASE_INFOLEVEL + USER_SCRIPT_PATH_PARMNUM;
459 pub const USER_AUTH_FLAGS_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_AUTH_FLAGS_PARMNUM;
460 pub const USER_FULL_NAME_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_FULL_NAME_PARMNUM;
461 pub const USER_USR_COMMENT_INFOLEVEL: ::DWORD =
462     ::PARMNUM_BASE_INFOLEVEL + USER_USR_COMMENT_PARMNUM;
463 pub const USER_PARMS_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_PARMS_PARMNUM;
464 pub const USER_WORKSTATIONS_INFOLEVEL: ::DWORD =
465     ::PARMNUM_BASE_INFOLEVEL + USER_WORKSTATIONS_PARMNUM;
466 pub const USER_LAST_LOGON_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_LAST_LOGON_PARMNUM;
467 pub const USER_LAST_LOGOFF_INFOLEVEL: ::DWORD =
468     ::PARMNUM_BASE_INFOLEVEL + USER_LAST_LOGOFF_PARMNUM;
469 pub const USER_ACCT_EXPIRES_INFOLEVEL: ::DWORD =
470     ::PARMNUM_BASE_INFOLEVEL + USER_ACCT_EXPIRES_PARMNUM;
471 pub const USER_MAX_STORAGE_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_MAX_STORAGE_PARMNUM;
472 pub const USER_UNITS_PER_WEEK_INFOLEVEL: ::DWORD =
473     ::PARMNUM_BASE_INFOLEVEL + USER_UNITS_PER_WEEK_PARMNUM;
474 pub const USER_LOGON_HOURS_INFOLEVEL: ::DWORD =
475     ::PARMNUM_BASE_INFOLEVEL + USER_LOGON_HOURS_PARMNUM;
476 pub const USER_PAD_PW_COUNT_INFOLEVEL: ::DWORD =
477     ::PARMNUM_BASE_INFOLEVEL + USER_PAD_PW_COUNT_PARMNUM;
478 pub const USER_NUM_LOGONS_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_NUM_LOGONS_PARMNUM;
479 pub const USER_LOGON_SERVER_INFOLEVEL: ::DWORD =
480     ::PARMNUM_BASE_INFOLEVEL + USER_LOGON_SERVER_PARMNUM;
481 pub const USER_COUNTRY_CODE_INFOLEVEL: ::DWORD =
482     ::PARMNUM_BASE_INFOLEVEL + USER_COUNTRY_CODE_PARMNUM;
483 pub const USER_CODE_PAGE_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_CODE_PAGE_PARMNUM;
484 pub const USER_PRIMARY_GROUP_INFOLEVEL: ::DWORD =
485     ::PARMNUM_BASE_INFOLEVEL + USER_PRIMARY_GROUP_PARMNUM;
486 pub const USER_HOME_DIR_DRIVE_INFOLEVEL: ::DWORD =
487     ::PARMNUM_BASE_INFOLEVEL + USER_HOME_DIR_DRIVE_PARMNUM;
488 pub const TIMEQ_FOREVER: ::DWORD = -1i32 as ::DWORD;
489 pub const USER_MAXSTORAGE_UNLIMITED: ::DWORD = -1i32 as ::DWORD;
490 pub const USER_NO_LOGOFF: ::DWORD = -1i32 as ::DWORD;
491 pub const UNITS_PER_DAY: ::DWORD = 24;
492 pub const UNITS_PER_WEEK: ::DWORD = UNITS_PER_DAY * 7;
493 pub const USER_PRIV_MASK: ::DWORD = 0x3;
494 pub const USER_PRIV_GUEST: ::DWORD = 0;
495 pub const USER_PRIV_USER: ::DWORD = 1;
496 pub const USER_PRIV_ADMIN: ::DWORD = 2;
497 pub const MAX_PASSWD_LEN: ::DWORD = ::PWLEN;
498 pub const DEF_MIN_PWLEN: ::DWORD = 6;
499 pub const DEF_PWUNIQUENESS: ::DWORD = 5;
500 pub const DEF_MAX_PWHIST: ::DWORD = 8;
501 pub const DEF_MAX_PWAGE: ::DWORD = TIMEQ_FOREVER;
502 pub const DEF_MIN_PWAGE: ::DWORD = 0;
503 pub const DEF_FORCE_LOGOFF: ::DWORD = 0xffffffff;
504 pub const DEF_MAX_BADPW: ::DWORD = 0;
505 pub const ONE_DAY: ::DWORD = 1 * 24 * 3600;
506 pub const VALIDATED_LOGON: ::DWORD = 0;
507 pub const PASSWORD_EXPIRED: ::DWORD = 2;
508 pub const NON_VALIDATED_LOGON: ::DWORD = 3;
509 pub const VALID_LOGOFF: ::DWORD = 1;
510 pub const MODALS_MIN_PASSWD_LEN_PARMNUM: ::DWORD = 1;
511 pub const MODALS_MAX_PASSWD_AGE_PARMNUM: ::DWORD = 2;
512 pub const MODALS_MIN_PASSWD_AGE_PARMNUM: ::DWORD = 3;
513 pub const MODALS_FORCE_LOGOFF_PARMNUM: ::DWORD = 4;
514 pub const MODALS_PASSWD_HIST_LEN_PARMNUM: ::DWORD = 5;
515 pub const MODALS_ROLE_PARMNUM: ::DWORD = 6;
516 pub const MODALS_PRIMARY_PARMNUM: ::DWORD = 7;
517 pub const MODALS_DOMAIN_NAME_PARMNUM: ::DWORD = 8;
518 pub const MODALS_DOMAIN_ID_PARMNUM: ::DWORD = 9;
519 pub const MODALS_LOCKOUT_DURATION_PARMNUM: ::DWORD = 10;
520 pub const MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM: ::DWORD = 11;
521 pub const MODALS_LOCKOUT_THRESHOLD_PARMNUM: ::DWORD = 12;
522 pub const MODALS_MIN_PASSWD_LEN_INFOLEVEL: ::DWORD =
523     ::PARMNUM_BASE_INFOLEVEL + MODALS_MIN_PASSWD_LEN_PARMNUM;
524 pub const MODALS_MAX_PASSWD_AGE_INFOLEVEL: ::DWORD =
525     ::PARMNUM_BASE_INFOLEVEL + MODALS_MAX_PASSWD_AGE_PARMNUM;
526 pub const MODALS_MIN_PASSWD_AGE_INFOLEVEL: ::DWORD =
527     ::PARMNUM_BASE_INFOLEVEL + MODALS_MIN_PASSWD_AGE_PARMNUM;
528 pub const MODALS_FORCE_LOGOFF_INFOLEVEL: ::DWORD =
529     ::PARMNUM_BASE_INFOLEVEL + MODALS_FORCE_LOGOFF_PARMNUM;
530 pub const MODALS_PASSWD_HIST_LEN_INFOLEVEL: ::DWORD =
531     ::PARMNUM_BASE_INFOLEVEL + MODALS_PASSWD_HIST_LEN_PARMNUM;
532 pub const MODALS_ROLE_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + MODALS_ROLE_PARMNUM;
533 pub const MODALS_PRIMARY_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + MODALS_PRIMARY_PARMNUM;
534 pub const MODALS_DOMAIN_NAME_INFOLEVEL: ::DWORD =
535     ::PARMNUM_BASE_INFOLEVEL + MODALS_DOMAIN_NAME_PARMNUM;
536 pub const MODALS_DOMAIN_ID_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + MODALS_DOMAIN_ID_PARMNUM;
537 STRUCT!{struct GROUP_INFO_0 {
538     grpi0_name: ::LPWSTR,
539 }}
540 pub type PGROUP_INFO_0 = *mut GROUP_INFO_0;
541 pub type LPGROUP_INFO_0 = *mut GROUP_INFO_0;
542 STRUCT!{struct GROUP_INFO_1 {
543     grpi1_name: ::LPWSTR,
544     grpi1_comment: ::LPWSTR,
545 }}
546 pub type PGROUP_INFO_1 = *mut GROUP_INFO_1;
547 pub type LPGROUP_INFO_1 = *mut GROUP_INFO_1;
548 STRUCT!{struct GROUP_INFO_2 {
549     grpi2_name: ::LPWSTR,
550     grpi2_comment: ::LPWSTR,
551     grpi2_group_id: ::DWORD,
552     grpi2_attributes: ::DWORD,
553 }}
554 pub type PGROUP_INFO_2 = *mut GROUP_INFO_2;
555 STRUCT!{struct GROUP_INFO_3 {
556     grpi3_name: ::LPWSTR,
557     grpi3_comment: ::LPWSTR,
558     grpi3_group_sid: ::PSID,
559     grpi3_attributes: ::DWORD,
560 }}
561 pub type PGROUP_INFO_3 = *mut GROUP_INFO_3;
562 STRUCT!{struct GROUP_INFO_1002 {
563     grpi1002_comment: ::LPWSTR,
564 }}
565 pub type PGROUP_INFO_1002 = *mut GROUP_INFO_1002;
566 pub type LPGROUP_INFO_1002 = *mut GROUP_INFO_1002;
567 STRUCT!{struct GROUP_INFO_1005 {
568     grpi1005_attributes: ::DWORD,
569 }}
570 pub type PGROUP_INFO_1005 = *mut GROUP_INFO_1005;
571 pub type LPGROUP_INFO_1005 = *mut GROUP_INFO_1005;
572 STRUCT!{struct GROUP_USERS_INFO_0 {
573     grui0_name: ::LPWSTR,
574 }}
575 pub type PGROUP_USERS_INFO_0 = *mut GROUP_USERS_INFO_0;
576 pub type LPGROUP_USERS_INFO_0 = *mut GROUP_USERS_INFO_0;
577 STRUCT!{struct GROUP_USERS_INFO_1 {
578     grui1_name: ::LPWSTR,
579     grui1_attributes: ::DWORD,
580 }}
581 pub type PGROUP_USERS_INFO_1 = *mut GROUP_USERS_INFO_1;
582 pub type LPGROUP_USERS_INFO_1 = *mut GROUP_USERS_INFO_1;
583 pub const GROUPIDMASK: ::DWORD = 0x8000;
584 pub const GROUP_SPECIALGRP_USERS: &'static str = "USERS";
585 pub const GROUP_SPECIALGRP_ADMINS: &'static str = "ADMINS";
586 pub const GROUP_SPECIALGRP_GUESTS: &'static str = "GUESTS";
587 pub const GROUP_SPECIALGRP_LOCAL: &'static str = "LOCAL";
588 pub const GROUP_ALL_PARMNUM: ::DWORD = 0;
589 pub const GROUP_NAME_PARMNUM: ::DWORD = 1;
590 pub const GROUP_COMMENT_PARMNUM: ::DWORD = 2;
591 pub const GROUP_ATTRIBUTES_PARMNUM: ::DWORD = 3;
592 pub const GROUP_ALL_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + GROUP_ALL_PARMNUM;
593 pub const GROUP_NAME_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + GROUP_NAME_PARMNUM;
594 pub const GROUP_COMMENT_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + GROUP_COMMENT_PARMNUM;
595 pub const GROUP_ATTRIBUTES_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + GROUP_ATTRIBUTES_PARMNUM;
596 STRUCT!{struct LOCALGROUP_INFO_0 {
597     lgrpi0_name: ::LPWSTR,
598 }}
599 pub type PLOCALGROUP_INFO_0 = *mut LOCALGROUP_INFO_0;
600 pub type LPLOCALGROUP_INFO_0 = *mut LOCALGROUP_INFO_0;
601 STRUCT!{struct LOCALGROUP_INFO_1 {
602     lgrpi1_name: ::LPWSTR,
603     lgrpi1_comment: ::LPWSTR,
604 }}
605 pub type PLOCALGROUP_INFO_1 = *mut LOCALGROUP_INFO_1;
606 pub type LPLOCALGROUP_INFO_1 = *mut LOCALGROUP_INFO_1;
607 STRUCT!{struct LOCALGROUP_INFO_1002 {
608     lgrpi1002_comment: ::LPWSTR,
609 }}
610 pub type PLOCALGROUP_INFO_1002 = *mut LOCALGROUP_INFO_1002;
611 pub type LPLOCALGROUP_INFO_1002 = *mut LOCALGROUP_INFO_1002;
612 STRUCT!{struct LOCALGROUP_MEMBERS_INFO_0 {
613     lgrmi0_sid: ::PSID,
614 }}
615 pub type PLOCALGROUP_MEMBERS_INFO_0 = *mut LOCALGROUP_MEMBERS_INFO_0;
616 pub type LPLOCALGROUP_MEMBERS_INFO_0 = *mut LOCALGROUP_MEMBERS_INFO_0;
617 STRUCT!{struct LOCALGROUP_MEMBERS_INFO_1 {
618     lgrmi1_sid: ::PSID,
619     lgrmi1_sidusage: ::SID_NAME_USE,
620     lgrmi1_name: ::LPWSTR,
621 }}
622 pub type PLOCALGROUP_MEMBERS_INFO_1 = *mut LOCALGROUP_MEMBERS_INFO_1;
623 pub type LPLOCALGROUP_MEMBERS_INFO_1 = *mut LOCALGROUP_MEMBERS_INFO_1;
624 STRUCT!{struct LOCALGROUP_MEMBERS_INFO_2 {
625     lgrmi2_sid: ::PSID,
626     lgrmi2_sidusage: ::SID_NAME_USE,
627     lgrmi2_domainandname: ::LPWSTR,
628 }}
629 pub type PLOCALGROUP_MEMBERS_INFO_2 = *mut LOCALGROUP_MEMBERS_INFO_2;
630 pub type LPLOCALGROUP_MEMBERS_INFO_2 = *mut LOCALGROUP_MEMBERS_INFO_2;
631 STRUCT!{struct LOCALGROUP_MEMBERS_INFO_3 {
632     lgrmi3_domainandname: ::LPWSTR,
633 }}
634 pub type PLOCALGROUP_MEMBERS_INFO_3 = *mut LOCALGROUP_MEMBERS_INFO_3;
635 pub type LPLOCALGROUP_MEMBERS_INFO_3 = *mut LOCALGROUP_MEMBERS_INFO_3;
636 STRUCT!{struct LOCALGROUP_USERS_INFO_0 {
637     lgrui0_name: ::LPWSTR,
638 }}
639 pub type PLOCALGROUP_USERS_INFO_0 = *mut LOCALGROUP_USERS_INFO_0;
640 pub type LPLOCALGROUP_USERS_INFO_0 = *mut LOCALGROUP_USERS_INFO_0;
641 pub const LOCALGROUP_NAME_PARMNUM: ::DWORD = 1;
642 pub const LOCALGROUP_COMMENT_PARMNUM: ::DWORD = 2;
643 STRUCT!{struct NET_DISPLAY_USER {
644     usri1_name: ::LPWSTR,
645     usri1_comment: ::LPWSTR,
646     usri1_flags: ::DWORD,
647     usri1_full_name: ::LPWSTR,
648     usri1_user_id: ::DWORD,
649     usri1_next_index: ::DWORD,
650 }}
651 pub type PNET_DISPLAY_USER = *mut NET_DISPLAY_USER;
652 STRUCT!{struct NET_DISPLAY_MACHINE {
653     usri2_name: ::LPWSTR,
654     usri2_comment: ::LPWSTR,
655     usri2_flags: ::DWORD,
656     usri2_user_id: ::DWORD,
657     usri2_next_index: ::DWORD,
658 }}
659 pub type PNET_DISPLAY_MACHINE = *mut NET_DISPLAY_MACHINE;
660 STRUCT!{struct NET_DISPLAY_GROUP {
661     usri3_name: ::LPWSTR,
662     usri3_comment: ::LPWSTR,
663     grpi3_group_id: ::DWORD,
664     grpi3_attributes: ::DWORD,
665     grpi3_next_index: ::DWORD,
666 }}
667 pub type PNET_DISPLAY_GROUP = *mut NET_DISPLAY_GROUP;
668 STRUCT!{struct ACCESS_INFO_0 {
669     acc0_resource_name: ::LPWSTR,
670 }}
671 pub type PACCESS_INFO_0 = *mut ACCESS_INFO_0;
672 pub type LPACCESS_INFO_0 = *mut ACCESS_INFO_0;
673 STRUCT!{struct ACCESS_INFO_1 {
674     acc1_resource_name: ::LPWSTR,
675     acc1_attr: ::DWORD,
676     acc1_count: ::DWORD,
677 }}
678 pub type PACCESS_INFO_1 = *mut ACCESS_INFO_1;
679 pub type LPACCESS_INFO_1 = *mut ACCESS_INFO_1;
680 STRUCT!{struct ACCESS_INFO_1002 {
681     acc1002_attr: ::DWORD,
682 }}
683 pub type PACCESS_INFO_1002 = *mut ACCESS_INFO_1002;
684 pub type LPACCESS_INFO_1002 = *mut ACCESS_INFO_1002;
685 STRUCT!{struct ACCESS_LIST {
686     acl_ugname: ::LPWSTR,
687     acl_access: ::DWORD,
688 }}
689 pub type PACCESS_LIST = *mut ACCESS_LIST;
690 pub type LPACCESS_LIST = *mut ACCESS_LIST;
691 pub const ACCESS_NONE: ::DWORD = 0;
692 pub const ACCESS_ALL: ::DWORD = ACCESS_READ | ACCESS_WRITE | ACCESS_CREATE | ACCESS_EXEC
693     | ACCESS_DELETE | ACCESS_ATRIB | ACCESS_PERM;
694 pub const ACCESS_READ: ::DWORD = 0x01;
695 pub const ACCESS_WRITE: ::DWORD = 0x02;
696 pub const ACCESS_CREATE: ::DWORD = 0x04;
697 pub const ACCESS_EXEC: ::DWORD = 0x08;
698 pub const ACCESS_DELETE: ::DWORD = 0x10;
699 pub const ACCESS_ATRIB: ::DWORD = 0x20;
700 pub const ACCESS_PERM: ::DWORD = 0x40;
701 pub const ACCESS_GROUP: ::DWORD = 0x8000;
702 pub const ACCESS_AUDIT: ::DWORD = 0x1;
703 pub const ACCESS_SUCCESS_OPEN: ::DWORD = 0x10;
704 pub const ACCESS_SUCCESS_WRITE: ::DWORD = 0x20;
705 pub const ACCESS_SUCCESS_DELETE: ::DWORD = 0x40;
706 pub const ACCESS_SUCCESS_ACL: ::DWORD = 0x80;
707 pub const ACCESS_SUCCESS_MASK: ::DWORD = 0xF0;
708 pub const ACCESS_FAIL_OPEN: ::DWORD = 0x100;
709 pub const ACCESS_FAIL_WRITE: ::DWORD = 0x200;
710 pub const ACCESS_FAIL_DELETE: ::DWORD = 0x400;
711 pub const ACCESS_FAIL_ACL: ::DWORD = 0x800;
712 pub const ACCESS_FAIL_MASK: ::DWORD = 0xF00;
713 pub const ACCESS_FAIL_SHIFT: ::DWORD = 4;
714 pub const ACCESS_RESOURCE_NAME_PARMNUM: ::DWORD = 1;
715 pub const ACCESS_ATTR_PARMNUM: ::DWORD = 2;
716 pub const ACCESS_COUNT_PARMNUM: ::DWORD = 3;
717 pub const ACCESS_ACCESS_LIST_PARMNUM: ::DWORD = 4;
718 pub const ACCESS_RESOURCE_NAME_INFOLEVEL: ::DWORD =
719     ::PARMNUM_BASE_INFOLEVEL + ACCESS_RESOURCE_NAME_PARMNUM;
720 pub const ACCESS_ATTR_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + ACCESS_ATTR_PARMNUM;
721 pub const ACCESS_COUNT_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + ACCESS_COUNT_PARMNUM;
722 pub const ACCESS_ACCESS_LIST_INFOLEVEL: ::DWORD =
723     ::PARMNUM_BASE_INFOLEVEL + ACCESS_ACCESS_LIST_PARMNUM;
724 ENUM!{enum NET_VALIDATE_PASSWORD_TYPE {
725     NetValidateAuthentication = 1,
726     NetValidatePasswordChange,
727     NetValidatePasswordReset,
728 }}
729 pub type PNET_VALIDATE_PASSWORD_TYPE = *mut NET_VALIDATE_PASSWORD_TYPE;
730 STRUCT!{struct NET_VALIDATE_PASSWORD_HASH {
731     Length: ::ULONG,
732     Hash: ::LPBYTE,
733 }}
734 pub type PNET_VALIDATE_PASSWORD_HASH = *mut NET_VALIDATE_PASSWORD_HASH;
735 pub const NET_VALIDATE_PASSWORD_LAST_SET: ::ULONG = 0x00000001;
736 pub const NET_VALIDATE_BAD_PASSWORD_TIME: ::ULONG = 0x00000002;
737 pub const NET_VALIDATE_LOCKOUT_TIME: ::ULONG = 0x00000004;
738 pub const NET_VALIDATE_BAD_PASSWORD_COUNT: ::ULONG = 0x00000008;
739 pub const NET_VALIDATE_PASSWORD_HISTORY_LENGTH: ::ULONG = 0x00000010;
740 pub const NET_VALIDATE_PASSWORD_HISTORY: ::ULONG = 0x00000020;
741 STRUCT!{struct NET_VALIDATE_PERSISTED_FIELDS {
742     PresentFields: ::ULONG,
743     PasswordLastSet: ::FILETIME,
744     BadPasswordTime: ::FILETIME,
745     LockoutTime: ::FILETIME,
746     BadPasswordCount: ::ULONG,
747     PasswordHistoryLength: ::ULONG,
748     PasswordHistory: PNET_VALIDATE_PASSWORD_HASH,
749 }}
750 pub type PNET_VALIDATE_PERSISTED_FIELDS = *mut NET_VALIDATE_PERSISTED_FIELDS;
751 STRUCT!{struct NET_VALIDATE_OUTPUT_ARG {
752     ChangedPersistedFields: NET_VALIDATE_PERSISTED_FIELDS,
753     ValidationStatus: ::NET_API_STATUS,
754 }}
755 pub type PNET_VALIDATE_OUTPUT_ARG = *mut NET_VALIDATE_OUTPUT_ARG;
756 STRUCT!{struct NET_VALIDATE_AUTHENTICATION_INPUT_ARG {
757     InputPersistedFields: NET_VALIDATE_PERSISTED_FIELDS,
758     PasswordMatched: ::BOOLEAN,
759 }}
760 pub type PNET_VALIDATE_AUTHENTICATION_INPUT_ARG = *mut NET_VALIDATE_AUTHENTICATION_INPUT_ARG;
761 STRUCT!{struct NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG {
762     InputPersistedFields: NET_VALIDATE_PERSISTED_FIELDS,
763     ClearPassword: ::LPWSTR,
764     UserAccountName: ::LPWSTR,
765     HashedPassword: NET_VALIDATE_PASSWORD_HASH,
766     PasswordMatch: ::BOOLEAN,
767 }}
768 pub type PNET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG = *mut NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG;
769 STRUCT!{struct NET_VALIDATE_PASSWORD_RESET_INPUT_ARG {
770     InputPersistedFields: NET_VALIDATE_PERSISTED_FIELDS,
771     ClearPassword: ::LPWSTR,
772     UserAccountName: ::LPWSTR,
773     HashedPassword: NET_VALIDATE_PASSWORD_HASH,
774     PasswordMustChangeAtNextLogon: ::BOOLEAN,
775     ClearLockout: ::BOOLEAN,
776 }}
777 pub type PNET_VALIDATE_PASSWORD_RESET_INPUT_ARG = *mut NET_VALIDATE_PASSWORD_RESET_INPUT_ARG;
778 pub const NETLOGON_CONTROL_QUERY: ::DWORD = 1;
779 pub const NETLOGON_CONTROL_REPLICATE: ::DWORD = 2;
780 pub const NETLOGON_CONTROL_SYNCHRONIZE: ::DWORD = 3;
781 pub const NETLOGON_CONTROL_PDC_REPLICATE: ::DWORD = 4;
782 pub const NETLOGON_CONTROL_REDISCOVER: ::DWORD = 5;
783 pub const NETLOGON_CONTROL_TC_QUERY: ::DWORD = 6;
784 pub const NETLOGON_CONTROL_TRANSPORT_NOTIFY: ::DWORD = 7;
785 pub const NETLOGON_CONTROL_FIND_USER: ::DWORD = 8;
786 pub const NETLOGON_CONTROL_CHANGE_PASSWORD: ::DWORD = 9;
787 pub const NETLOGON_CONTROL_TC_VERIFY: ::DWORD = 10;
788 pub const NETLOGON_CONTROL_FORCE_DNS_REG: ::DWORD = 11;
789 pub const NETLOGON_CONTROL_QUERY_DNS_REG: ::DWORD = 12;
790 pub const NETLOGON_CONTROL_UNLOAD_NETLOGON_DLL: ::DWORD = 0xFFFB;
791 pub const NETLOGON_CONTROL_BACKUP_CHANGE_LOG: ::DWORD = 0xFFFC;
792 pub const NETLOGON_CONTROL_TRUNCATE_LOG: ::DWORD = 0xFFFD;
793 pub const NETLOGON_CONTROL_SET_DBFLAG: ::DWORD = 0xFFFE;
794 pub const NETLOGON_CONTROL_BREAKPOINT: ::DWORD = 0xFFFF;
795 STRUCT!{struct NETLOGON_INFO_1 {
796     netlog1_flags: ::DWORD,
797     netlog1_pdc_connection_status: ::NET_API_STATUS,
798 }}
799 pub type PNETLOGON_INFO_1 = *mut NETLOGON_INFO_1;
800 STRUCT!{struct NETLOGON_INFO_2 {
801     netlog2_flags: ::DWORD,
802     netlog2_pdc_connection_status: ::NET_API_STATUS,
803     netlog2_trusted_dc_name: ::LPWSTR,
804     netlog2_tc_connection_status: ::NET_API_STATUS,
805 }}
806 pub type PNETLOGON_INFO_2 = *mut NETLOGON_INFO_2;
807 STRUCT!{struct NETLOGON_INFO_3 {
808     netlog3_flags: ::DWORD,
809     netlog3_logon_attempts: ::DWORD,
810     netlog3_reserved1: ::DWORD,
811     netlog3_reserved2: ::DWORD,
812     netlog3_reserved3: ::DWORD,
813     netlog3_reserved4: ::DWORD,
814     netlog3_reserved5: ::DWORD,
815 }}
816 pub type PNETLOGON_INFO_3 = *mut NETLOGON_INFO_3;
817 STRUCT!{struct NETLOGON_INFO_4 {
818     netlog4_trusted_dc_name: ::LPWSTR,
819     netlog4_trusted_domain_name: ::LPWSTR,
820 }}
821 pub type PNETLOGON_INFO_4 = *mut NETLOGON_INFO_4;
822 pub const NETLOGON_REPLICATION_NEEDED: ::DWORD = 0x01;
823 pub const NETLOGON_REPLICATION_IN_PROGRESS: ::DWORD = 0x02;
824 pub const NETLOGON_FULL_SYNC_REPLICATION: ::DWORD = 0x04;
825 pub const NETLOGON_REDO_NEEDED: ::DWORD = 0x08;
826 pub const NETLOGON_HAS_IP: ::DWORD = 0x10;
827 pub const NETLOGON_HAS_TIMESERV: ::DWORD = 0x20;
828 pub const NETLOGON_DNS_UPDATE_FAILURE: ::DWORD = 0x40;
829 pub const NETLOGON_VERIFY_STATUS_RETURNED: ::DWORD = 0x80;
830 DEFINE_GUID!(ServiceAccountPasswordGUID, 0x262E99C9, 0x6160, 0x4871,
831     0xAC, 0xEC, 0x4E, 0x61, 0x73, 0x6B, 0x6F, 0x21);
832 pub const SERVICE_ACCOUNT_FLAG_LINK_TO_HOST_ONLY: ::DWORD = 0x00000001;
833 pub const SERVICE_ACCOUNT_FLAG_ADD_AGAINST_RODC: ::DWORD = 0x00000002;
834 pub const SERVICE_ACCOUNT_FLAG_UNLINK_FROM_HOST_ONLY: ::DWORD = 0x00000001;
835 pub const SERVICE_ACCOUNT_FLAG_REMOVE_OFFLINE: ::DWORD = 0x00000002;
836 ENUM!{enum MSA_INFO_LEVEL {
837     MsaInfoLevel0 = 0,
838     MsaInfoLevelMax,
839 }}
840 pub type PMSA_INFO_LEVEL = *mut MSA_INFO_LEVEL;
841 ENUM!{enum MSA_INFO_STATE {
842     MsaInfoNotExist = 1,
843     MsaInfoNotService,
844     MsaInfoCannotInstall,
845     MsaInfoCanInstall,
846     MsaInfoInstalled,
847 }}
848 pub type PMSA_INFO_STATE = *mut MSA_INFO_STATE;
849 STRUCT!{struct MSA_INFO_0 {
850     State: MSA_INFO_STATE,
851 }}
852 pub type PMSA_INFO_0 = *mut MSA_INFO_0;
853 pub type LPMSA_INFO_0 = *mut MSA_INFO_0;
854