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