|
|
1.1 ! root 1: /*++ BUILD Version: 0002 // Increment this if a change has global effects ! 2: ! 3: Copyright (c) 1991-1993 Microsoft Corporation ! 4: ! 5: Module Name: ! 6: ! 7: lmaccess.h ! 8: ! 9: Abstract: ! 10: ! 11: This file contains structures, function prototypes, and definitions ! 12: for the NetUser, NetUserModals, NetGroup, NetAccess, and NetLogon API. ! 13: ! 14: Author: ! 15: ! 16: Dan Lafferty (danl) 10-Mar-1991 ! 17: ! 18: Environment: ! 19: ! 20: User Mode - Win32 ! 21: ! 22: Notes: ! 23: ! 24: You must include NETCONS.H before this file, since this file depends ! 25: on values defined in NETCONS.H. ! 26: ! 27: Revision History: ! 28: ! 29: 10-Mar-1991 danl ! 30: Created from LM2.0 header files and NT-LAN API Spec. ! 31: ! 32: 11-Apr-1991 danhi ! 33: Changed usrmod0_passwd_hist_len to usrmod0_password_hist_len to match ! 34: the LM 2.0 name. ! 35: ! 36: 12-Apr-1991 cliffv ! 37: Moved internal info level 99 out of this public file. ! 38: ! 39: 14-Apr-1991 w-shanku ! 40: Changed ParmNum constants to allow consistency with OS/2 parmnums. ! 41: ! 42: 17-Apr-1991 cliffv ! 43: Added OPTIONAL keyword to function prototypes. ! 44: ! 45: 29-Apr-1991 w-shanku ! 46: Fixed USER_LOGON_INFO structure definition - was given without ! 47: 'typedef' keyword. ! 48: ! 49: 21-Jun-1991 cliffv ! 50: Converted to UNICODE. Added info level for each parmnum. ! 51: ! 52: 16-Jul-1991 JohnRo ! 53: Clarify that NetGetDCName's domain name is OPTIONAL (default is primary ! 54: domain.) ! 55: ! 56: 18-Jul-1991 RFirth ! 57: Created XXX_XXX_INFOLEVELs as counterparts of XXX_XXX_PARMNUMs ! 58: ! 59: 21-Jan-1992 madana ! 60: Sundry API changes ! 61: ! 62: 26-Nov-1992 ritaw ! 63: Added NetLocalGroup APIs. ! 64: ! 65: --*/ ! 66: ! 67: // ! 68: // User Class ! 69: // ! 70: ! 71: #ifndef _LMUSER_ ! 72: #define _LMUSER_ ! 73: ! 74: #ifdef __cplusplus ! 75: extern "C" { ! 76: #endif ! 77: ! 78: #include <lmcons.h> // unfortunately created a dependence on this ! 79: ! 80: // ! 81: // Function Prototypes - User ! 82: // ! 83: ! 84: NET_API_STATUS NET_API_FUNCTION ! 85: NetUserAdd ( ! 86: IN LPWSTR servername OPTIONAL, ! 87: IN DWORD level, ! 88: IN LPBYTE buf, ! 89: OUT LPDWORD parm_err OPTIONAL ! 90: ); ! 91: ! 92: NET_API_STATUS NET_API_FUNCTION ! 93: NetUserEnum ( ! 94: IN LPWSTR servername OPTIONAL, ! 95: IN DWORD level, ! 96: IN DWORD filter, ! 97: OUT LPBYTE *bufptr, ! 98: IN DWORD prefmaxlen, ! 99: OUT LPDWORD entriesread, ! 100: OUT LPDWORD totalentries, ! 101: IN OUT LPDWORD resume_handle OPTIONAL ! 102: ); ! 103: ! 104: NET_API_STATUS NET_API_FUNCTION ! 105: NetUserGetInfo ( ! 106: IN LPWSTR servername OPTIONAL, ! 107: IN LPWSTR username, ! 108: IN DWORD level, ! 109: OUT LPBYTE *bufptr ! 110: ); ! 111: ! 112: NET_API_STATUS NET_API_FUNCTION ! 113: NetUserSetInfo ( ! 114: IN LPWSTR servername OPTIONAL, ! 115: IN LPWSTR username, ! 116: IN DWORD level, ! 117: IN LPBYTE buf, ! 118: OUT LPDWORD parm_err OPTIONAL ! 119: ); ! 120: ! 121: NET_API_STATUS NET_API_FUNCTION ! 122: NetUserDel ( ! 123: IN LPWSTR servername OPTIONAL, ! 124: IN LPWSTR username ! 125: ); ! 126: ! 127: NET_API_STATUS NET_API_FUNCTION ! 128: NetUserGetGroups ( ! 129: IN LPWSTR servername OPTIONAL, ! 130: IN LPWSTR username, ! 131: IN DWORD level, ! 132: OUT LPBYTE *bufptr, ! 133: IN DWORD prefmaxlen, ! 134: OUT LPDWORD entriesread, ! 135: OUT LPDWORD totalentries ! 136: ); ! 137: ! 138: NET_API_STATUS NET_API_FUNCTION ! 139: NetUserSetGroups ( ! 140: IN LPWSTR servername OPTIONAL, ! 141: IN LPWSTR username, ! 142: IN DWORD level, ! 143: IN LPBYTE buf, ! 144: IN DWORD num_entries ! 145: ); ! 146: ! 147: NET_API_STATUS NET_API_FUNCTION ! 148: NetUserGetLocalGroups ( ! 149: IN LPWSTR servername OPTIONAL, ! 150: IN LPWSTR username, ! 151: IN DWORD level, ! 152: IN DWORD flags, ! 153: OUT LPBYTE *bufptr, ! 154: IN DWORD prefmaxlen, ! 155: OUT LPDWORD entriesread, ! 156: OUT LPDWORD totalentries ! 157: ); ! 158: ! 159: NET_API_STATUS NET_API_FUNCTION ! 160: NetUserModalsGet ( ! 161: IN LPWSTR servername OPTIONAL, ! 162: IN DWORD level, ! 163: OUT LPBYTE *bufptr ! 164: ); ! 165: ! 166: NET_API_STATUS NET_API_FUNCTION ! 167: NetUserModalsSet ( ! 168: IN LPWSTR servername OPTIONAL, ! 169: IN DWORD level, ! 170: IN LPBYTE buf, ! 171: OUT LPDWORD parm_err OPTIONAL ! 172: ); ! 173: ! 174: // ! 175: // Data Structures - User ! 176: // ! 177: ! 178: typedef struct _USER_INFO_0 { ! 179: LPWSTR usri0_name; ! 180: }USER_INFO_0, *PUSER_INFO_0, *LPUSER_INFO_0; ! 181: ! 182: typedef struct _USER_INFO_1 { ! 183: LPWSTR usri1_name; ! 184: LPWSTR usri1_password; ! 185: DWORD usri1_password_age; ! 186: DWORD usri1_priv; ! 187: LPWSTR usri1_home_dir; ! 188: LPWSTR usri1_comment; ! 189: DWORD usri1_flags; ! 190: LPWSTR usri1_script_path; ! 191: }USER_INFO_1, *PUSER_INFO_1, *LPUSER_INFO_1; ! 192: ! 193: typedef struct _USER_INFO_2 { ! 194: LPWSTR usri2_name; ! 195: LPWSTR usri2_password; ! 196: DWORD usri2_password_age; ! 197: DWORD usri2_priv; ! 198: LPWSTR usri2_home_dir; ! 199: LPWSTR usri2_comment; ! 200: DWORD usri2_flags; ! 201: LPWSTR usri2_script_path; ! 202: DWORD usri2_auth_flags; ! 203: LPWSTR usri2_full_name; ! 204: LPWSTR usri2_usr_comment; ! 205: LPWSTR usri2_parms; ! 206: LPWSTR usri2_workstations; ! 207: DWORD usri2_last_logon; ! 208: DWORD usri2_last_logoff; ! 209: DWORD usri2_acct_expires; ! 210: DWORD usri2_max_storage; ! 211: DWORD usri2_units_per_week; ! 212: PBYTE usri2_logon_hours; ! 213: DWORD usri2_bad_pw_count; ! 214: DWORD usri2_num_logons; ! 215: LPWSTR usri2_logon_server; ! 216: DWORD usri2_country_code; ! 217: DWORD usri2_code_page; ! 218: }USER_INFO_2, *PUSER_INFO_2, *LPUSER_INFO_2; ! 219: ! 220: typedef struct _USER_INFO_3 { ! 221: LPWSTR usri3_name; ! 222: LPWSTR usri3_password; ! 223: DWORD usri3_password_age; ! 224: DWORD usri3_priv; ! 225: LPWSTR usri3_home_dir; ! 226: LPWSTR usri3_comment; ! 227: DWORD usri3_flags; ! 228: LPWSTR usri3_script_path; ! 229: DWORD usri3_auth_flags; ! 230: LPWSTR usri3_full_name; ! 231: LPWSTR usri3_usr_comment; ! 232: LPWSTR usri3_parms; ! 233: LPWSTR usri3_workstations; ! 234: DWORD usri3_last_logon; ! 235: DWORD usri3_last_logoff; ! 236: DWORD usri3_acct_expires; ! 237: DWORD usri3_max_storage; ! 238: DWORD usri3_units_per_week; ! 239: PBYTE usri3_logon_hours; ! 240: DWORD usri3_bad_pw_count; ! 241: DWORD usri3_num_logons; ! 242: LPWSTR usri3_logon_server; ! 243: DWORD usri3_country_code; ! 244: DWORD usri3_code_page; ! 245: DWORD usri3_user_id; ! 246: DWORD usri3_primary_group_id; ! 247: LPWSTR usri3_profile; ! 248: LPWSTR usri3_home_dir_drive; ! 249: DWORD usri3_password_expired; ! 250: }USER_INFO_3, *PUSER_INFO_3, *LPUSER_INFO_3; ! 251: ! 252: typedef struct _USER_INFO_10 { ! 253: LPWSTR usri10_name; ! 254: LPWSTR usri10_comment; ! 255: LPWSTR usri10_usr_comment; ! 256: LPWSTR usri10_full_name; ! 257: }USER_INFO_10, *PUSER_INFO_10, *LPUSER_INFO_10; ! 258: ! 259: typedef struct _USER_INFO_11 { ! 260: LPWSTR usri11_name; ! 261: LPWSTR usri11_comment; ! 262: LPWSTR usri11_usr_comment; ! 263: LPWSTR usri11_full_name; ! 264: DWORD usri11_priv; ! 265: DWORD usri11_auth_flags; ! 266: DWORD usri11_password_age; ! 267: LPWSTR usri11_home_dir; ! 268: LPWSTR usri11_parms; ! 269: DWORD usri11_last_logon; ! 270: DWORD usri11_last_logoff; ! 271: DWORD usri11_bad_pw_count; ! 272: DWORD usri11_num_logons; ! 273: LPWSTR usri11_logon_server; ! 274: DWORD usri11_country_code; ! 275: LPWSTR usri11_workstations; ! 276: DWORD usri11_max_storage; ! 277: DWORD usri11_units_per_week; ! 278: PBYTE usri11_logon_hours; ! 279: DWORD usri11_code_page; ! 280: }USER_INFO_11, *PUSER_INFO_11, *LPUSER_INFO_11; ! 281: ! 282: typedef struct _USER_INFO_20 { ! 283: LPWSTR usri20_name; ! 284: LPWSTR usri20_full_name; ! 285: LPWSTR usri20_comment; ! 286: DWORD usri20_flags; ! 287: DWORD usri20_user_id; ! 288: }USER_INFO_20, *PUSER_INFO_20, *LPUSER_INFO_20; ! 289: ! 290: typedef struct _USER_INFO_21 { ! 291: BYTE usri21_password[ENCRYPTED_PWLEN]; ! 292: }USER_INFO_21, *PUSER_INFO_21, *LPUSER_INFO_21; ! 293: ! 294: typedef struct _USER_INFO_22 { ! 295: LPWSTR usri22_name; ! 296: BYTE usri22_password[ENCRYPTED_PWLEN]; ! 297: DWORD usri22_password_age; ! 298: DWORD usri22_priv; ! 299: LPWSTR usri22_home_dir; ! 300: LPWSTR usri22_comment; ! 301: DWORD usri22_flags; ! 302: LPWSTR usri22_script_path; ! 303: DWORD usri22_auth_flags; ! 304: LPWSTR usri22_full_name; ! 305: LPWSTR usri22_usr_comment; ! 306: LPWSTR usri22_parms; ! 307: LPWSTR usri22_workstations; ! 308: DWORD usri22_last_logon; ! 309: DWORD usri22_last_logoff; ! 310: DWORD usri22_acct_expires; ! 311: DWORD usri22_max_storage; ! 312: DWORD usri22_units_per_week; ! 313: PBYTE usri22_logon_hours; ! 314: DWORD usri22_bad_pw_count; ! 315: DWORD usri22_num_logons; ! 316: LPWSTR usri22_logon_server; ! 317: DWORD usri22_country_code; ! 318: DWORD usri22_code_page; ! 319: }USER_INFO_22, *PUSER_INFO_22, *LPUSER_INFO_22; ! 320: ! 321: typedef struct _USER_INFO_1003 { ! 322: LPWSTR usri1003_password; ! 323: } USER_INFO_1003, *PUSER_INFO_1003, *LPUSER_INFO_1003; ! 324: ! 325: typedef struct _USER_INFO_1005 { ! 326: DWORD usri1005_priv; ! 327: } USER_INFO_1005, *PUSER_INFO_1005, *LPUSER_INFO_1005; ! 328: ! 329: typedef struct _USER_INFO_1006 { ! 330: LPWSTR usri1006_home_dir; ! 331: } USER_INFO_1006, *PUSER_INFO_1006, *LPUSER_INFO_1006; ! 332: ! 333: typedef struct _USER_INFO_1007 { ! 334: LPWSTR usri1007_comment; ! 335: } USER_INFO_1007, *PUSER_INFO_1007, *LPUSER_INFO_1007; ! 336: ! 337: typedef struct _USER_INFO_1008 { ! 338: DWORD usri1008_flags; ! 339: } USER_INFO_1008, *PUSER_INFO_1008, *LPUSER_INFO_1008; ! 340: ! 341: typedef struct _USER_INFO_1009 { ! 342: LPWSTR usri1009_script_path; ! 343: } USER_INFO_1009, *PUSER_INFO_1009, *LPUSER_INFO_1009; ! 344: ! 345: typedef struct _USER_INFO_1010 { ! 346: DWORD usri1010_auth_flags; ! 347: } USER_INFO_1010, *PUSER_INFO_1010, *LPUSER_INFO_1010; ! 348: ! 349: typedef struct _USER_INFO_1011 { ! 350: LPWSTR usri1011_full_name; ! 351: } USER_INFO_1011, *PUSER_INFO_1011, *LPUSER_INFO_1011; ! 352: ! 353: typedef struct _USER_INFO_1012 { ! 354: LPWSTR usri1012_usr_comment; ! 355: } USER_INFO_1012, *PUSER_INFO_1012, *LPUSER_INFO_1012; ! 356: ! 357: typedef struct _USER_INFO_1013 { ! 358: LPWSTR usri1013_parms; ! 359: } USER_INFO_1013, *PUSER_INFO_1013, *LPUSER_INFO_1013; ! 360: ! 361: typedef struct _USER_INFO_1014 { ! 362: LPWSTR usri1014_workstations; ! 363: } USER_INFO_1014, *PUSER_INFO_1014, *LPUSER_INFO_1014; ! 364: ! 365: typedef struct _USER_INFO_1017 { ! 366: DWORD usri1017_acct_expires; ! 367: } USER_INFO_1017, *PUSER_INFO_1017, *LPUSER_INFO_1017; ! 368: ! 369: typedef struct _USER_INFO_1018 { ! 370: DWORD usri1018_max_storage; ! 371: } USER_INFO_1018, *PUSER_INFO_1018, *LPUSER_INFO_1018; ! 372: ! 373: typedef struct _USER_INFO_1020 { ! 374: DWORD usri1020_units_per_week; ! 375: LPBYTE usri1020_logon_hours; ! 376: } USER_INFO_1020, *PUSER_INFO_1020, *LPUSER_INFO_1020; ! 377: ! 378: typedef struct _USER_INFO_1023 { ! 379: LPWSTR usri1023_logon_server; ! 380: } USER_INFO_1023, *PUSER_INFO_1023, *LPUSER_INFO_1023; ! 381: ! 382: typedef struct _USER_INFO_1024 { ! 383: DWORD usri1024_country_code; ! 384: } USER_INFO_1024, *PUSER_INFO_1024, *LPUSER_INFO_1024; ! 385: ! 386: typedef struct _USER_INFO_1025 { ! 387: DWORD usri1025_code_page; ! 388: } USER_INFO_1025, *PUSER_INFO_1025, *LPUSER_INFO_1025; ! 389: ! 390: typedef struct _USER_INFO_1051 { ! 391: DWORD usri1051_primary_group_id; ! 392: } USER_INFO_1051, *PUSER_INFO_1051, *LPUSER_INFO_1051; ! 393: ! 394: typedef struct _USER_INFO_1052 { ! 395: LPWSTR usri1052_profile; ! 396: } USER_INFO_1052, *PUSER_INFO_1052, *LPUSER_INFO_1052; ! 397: ! 398: typedef struct _USER_INFO_1053 { ! 399: LPWSTR usri1053_home_dir_drive; ! 400: } USER_INFO_1053, *PUSER_INFO_1053, *LPUSER_INFO_1053; ! 401: ! 402: ! 403: // ! 404: // Data Structures - User Modals ! 405: // ! 406: ! 407: typedef struct _USER_MODALS_INFO_0 { ! 408: DWORD usrmod0_min_passwd_len; ! 409: DWORD usrmod0_max_passwd_age; ! 410: DWORD usrmod0_min_passwd_age; ! 411: DWORD usrmod0_force_logoff; ! 412: DWORD usrmod0_password_hist_len; ! 413: }USER_MODALS_INFO_0, *PUSER_MODALS_INFO_0, *LPUSER_MODALS_INFO_0; ! 414: ! 415: typedef struct _USER_MODALS_INFO_1 { ! 416: DWORD usrmod1_role; ! 417: LPWSTR usrmod1_primary; ! 418: }USER_MODALS_INFO_1, *PUSER_MODALS_INFO_1, *LPUSER_MODALS_INFO_1; ! 419: ! 420: typedef struct _USER_MODALS_INFO_2 { ! 421: LPWSTR usrmod2_domain_name; ! 422: PSID usrmod2_domain_id; ! 423: }USER_MODALS_INFO_2, *PUSER_MODALS_INFO_2, *LPUSER_MODALS_INFO_2; ! 424: ! 425: typedef struct _USER_MODALS_INFO_1001 { ! 426: DWORD usrmod1001_min_passwd_len; ! 427: } USER_MODALS_INFO_1001, *PUSER_MODALS_INFO_1001, *LPUSER_MODALS_INFO_1001; ! 428: ! 429: typedef struct _USER_MODALS_INFO_1002 { ! 430: DWORD usrmod1002_max_passwd_age; ! 431: } USER_MODALS_INFO_1002, *PUSER_MODALS_INFO_1002, *LPUSER_MODALS_INFO_1002; ! 432: ! 433: typedef struct _USER_MODALS_INFO_1003 { ! 434: DWORD usrmod1003_min_passwd_age; ! 435: } USER_MODALS_INFO_1003, *PUSER_MODALS_INFO_1003, *LPUSER_MODALS_INFO_1003; ! 436: ! 437: typedef struct _USER_MODALS_INFO_1004 { ! 438: DWORD usrmod1004_force_logoff; ! 439: } USER_MODALS_INFO_1004, *PUSER_MODALS_INFO_1004, *LPUSER_MODALS_INFO_1004; ! 440: ! 441: typedef struct _USER_MODALS_INFO_1005 { ! 442: DWORD usrmod1005_password_hist_len; ! 443: } USER_MODALS_INFO_1005, *PUSER_MODALS_INFO_1005, *LPUSER_MODALS_INFO_1005; ! 444: ! 445: typedef struct _USER_MODALS_INFO_1006 { ! 446: DWORD usrmod1006_role; ! 447: } USER_MODALS_INFO_1006, *PUSER_MODALS_INFO_1006, *LPUSER_MODALS_INFO_1006; ! 448: ! 449: typedef struct _USER_MODALS_INFO_1007 { ! 450: LPWSTR usrmod1007_primary; ! 451: } USER_MODALS_INFO_1007, *PUSER_MODALS_INFO_1007, *LPUSER_MODALS_INFO_1007; ! 452: ! 453: ! 454: // ! 455: // Special Values and Constants - User ! 456: // ! 457: ! 458: // ! 459: // Bit masks for field usriX_flags of USER_INFO_X (X = 0/1). ! 460: // ! 461: ! 462: #define UF_SCRIPT 0x0001 ! 463: #define UF_ACCOUNTDISABLE 0x0002 ! 464: #define UF_HOMEDIR_REQUIRED 0x0008 ! 465: #define UF_LOCKOUT 0x0010 ! 466: #define UF_PASSWD_NOTREQD 0x0020 ! 467: #define UF_PASSWD_CANT_CHANGE 0x0040 ! 468: ! 469: // ! 470: // Account type bits as part of usri_flags. ! 471: // ! 472: ! 473: #define UF_TEMP_DUPLICATE_ACCOUNT 0x0100 ! 474: #define UF_NORMAL_ACCOUNT 0x0200 ! 475: #define UF_INTERDOMAIN_TRUST_ACCOUNT 0x0800 ! 476: #define UF_WORKSTATION_TRUST_ACCOUNT 0x1000 ! 477: #define UF_SERVER_TRUST_ACCOUNT 0x2000 ! 478: ! 479: #define UF_MACHINE_ACCOUNT_MASK ( UF_INTERDOMAIN_TRUST_ACCOUNT | \ ! 480: UF_WORKSTATION_TRUST_ACCOUNT | \ ! 481: UF_SERVER_TRUST_ACCOUNT ) ! 482: ! 483: #define UF_ACCOUNT_TYPE_MASK ( \ ! 484: UF_TEMP_DUPLICATE_ACCOUNT | \ ! 485: UF_NORMAL_ACCOUNT | \ ! 486: UF_INTERDOMAIN_TRUST_ACCOUNT | \ ! 487: UF_WORKSTATION_TRUST_ACCOUNT | \ ! 488: UF_SERVER_TRUST_ACCOUNT \ ! 489: ) ! 490: ! 491: #define UF_DONT_EXPIRE_PASSWD 0x10000 ! 492: ! 493: ! 494: #define UF_SETTABLE_BITS ( \ ! 495: UF_SCRIPT | \ ! 496: UF_ACCOUNTDISABLE | \ ! 497: UF_HOMEDIR_REQUIRED | \ ! 498: UF_PASSWD_NOTREQD | \ ! 499: UF_PASSWD_CANT_CHANGE | \ ! 500: UF_ACCOUNT_TYPE_MASK | \ ! 501: UF_DONT_EXPIRE_PASSWD \ ! 502: ) ! 503: ! 504: // ! 505: // bit masks for the NetUserEnum filter parameter. ! 506: // ! 507: ! 508: #define FILTER_TEMP_DUPLICATE_ACCOUNT (0x0001) ! 509: #define FILTER_NORMAL_ACCOUNT (0x0002) ! 510: // #define FILTER_PROXY_ACCOUNT (0x0004) ! 511: #define FILTER_INTERDOMAIN_TRUST_ACCOUNT (0x0008) ! 512: #define FILTER_WORKSTATION_TRUST_ACCOUNT (0x0010) ! 513: #define FILTER_SERVER_TRUST_ACCOUNT (0x0020) ! 514: ! 515: // ! 516: // bit masks for the NetUserGetLocalGroups flags ! 517: // ! 518: #define LG_INCLUDE_INDIRECT (0x0001) ! 519: ! 520: // ! 521: // Bit masks for field usri2_auth_flags of USER_INFO_2. ! 522: // ! 523: ! 524: #define AF_OP_PRINT 0x1 ! 525: #define AF_OP_COMM 0x2 ! 526: #define AF_OP_SERVER 0x4 ! 527: #define AF_OP_ACCOUNTS 0x8 ! 528: #define AF_SETTABLE_BITS (AF_OP_PRINT | AF_OP_COMM | \ ! 529: AF_OP_SERVER | AF_OP_ACCOUNTS) ! 530: ! 531: // ! 532: // UAS role manifests under NETLOGON ! 533: // ! 534: ! 535: #define UAS_ROLE_STANDALONE 0 ! 536: #define UAS_ROLE_MEMBER 1 ! 537: #define UAS_ROLE_BACKUP 2 ! 538: #define UAS_ROLE_PRIMARY 3 ! 539: ! 540: // ! 541: // Values for ParmError for NetUserSetInfo. ! 542: // ! 543: ! 544: #define USER_NAME_PARMNUM 1 ! 545: #define USER_PASSWORD_PARMNUM 3 ! 546: #define USER_PASSWORD_AGE_PARMNUM 4 ! 547: #define USER_PRIV_PARMNUM 5 ! 548: #define USER_HOME_DIR_PARMNUM 6 ! 549: #define USER_COMMENT_PARMNUM 7 ! 550: #define USER_FLAGS_PARMNUM 8 ! 551: #define USER_SCRIPT_PATH_PARMNUM 9 ! 552: #define USER_AUTH_FLAGS_PARMNUM 10 ! 553: #define USER_FULL_NAME_PARMNUM 11 ! 554: #define USER_USR_COMMENT_PARMNUM 12 ! 555: #define USER_PARMS_PARMNUM 13 ! 556: #define USER_WORKSTATIONS_PARMNUM 14 ! 557: #define USER_LAST_LOGON_PARMNUM 15 ! 558: #define USER_LAST_LOGOFF_PARMNUM 16 ! 559: #define USER_ACCT_EXPIRES_PARMNUM 17 ! 560: #define USER_MAX_STORAGE_PARMNUM 18 ! 561: #define USER_UNITS_PER_WEEK_PARMNUM 19 ! 562: #define USER_LOGON_HOURS_PARMNUM 20 ! 563: #define USER_PAD_PW_COUNT_PARMNUM 21 ! 564: #define USER_NUM_LOGONS_PARMNUM 22 ! 565: #define USER_LOGON_SERVER_PARMNUM 23 ! 566: #define USER_COUNTRY_CODE_PARMNUM 24 ! 567: #define USER_CODE_PAGE_PARMNUM 25 ! 568: #define USER_PRIMARY_GROUP_PARMNUM 51 ! 569: #define USER_PROFILE 52 // ?? Delete when convenient ! 570: #define USER_PROFILE_PARMNUM 52 ! 571: #define USER_HOME_DIR_DRIVE_PARMNUM 53 ! 572: ! 573: // ! 574: // the new infolevel counterparts of the old info level + parmnum ! 575: // ! 576: ! 577: #define USER_NAME_INFOLEVEL \ ! 578: (PARMNUM_BASE_INFOLEVEL + USER_NAME_PARMNUM) ! 579: #define USER_PASSWORD_INFOLEVEL \ ! 580: (PARMNUM_BASE_INFOLEVEL + USER_PASSWORD_PARMNUM) ! 581: #define USER_PASSWORD_AGE_INFOLEVEL \ ! 582: (PARMNUM_BASE_INFOLEVEL + USER_PASSWORD_AGE_PARMNUM) ! 583: #define USER_PRIV_INFOLEVEL \ ! 584: (PARMNUM_BASE_INFOLEVEL + USER_PRIV_PARMNUM) ! 585: #define USER_HOME_DIR_INFOLEVEL \ ! 586: (PARMNUM_BASE_INFOLEVEL + USER_HOME_DIR_PARMNUM) ! 587: #define USER_COMMENT_INFOLEVEL \ ! 588: (PARMNUM_BASE_INFOLEVEL + USER_COMMENT_PARMNUM) ! 589: #define USER_FLAGS_INFOLEVEL \ ! 590: (PARMNUM_BASE_INFOLEVEL + USER_FLAGS_PARMNUM) ! 591: #define USER_SCRIPT_PATH_INFOLEVEL \ ! 592: (PARMNUM_BASE_INFOLEVEL + USER_SCRIPT_PATH_PARMNUM) ! 593: #define USER_AUTH_FLAGS_INFOLEVEL \ ! 594: (PARMNUM_BASE_INFOLEVEL + USER_AUTH_FLAGS_PARMNUM) ! 595: #define USER_FULL_NAME_INFOLEVEL \ ! 596: (PARMNUM_BASE_INFOLEVEL + USER_FULL_NAME_PARMNUM) ! 597: #define USER_USR_COMMENT_INFOLEVEL \ ! 598: (PARMNUM_BASE_INFOLEVEL + USER_USR_COMMENT_PARMNUM) ! 599: #define USER_PARMS_INFOLEVEL \ ! 600: (PARMNUM_BASE_INFOLEVEL + USER_PARMS_PARMNUM) ! 601: #define USER_WORKSTATIONS_INFOLEVEL \ ! 602: (PARMNUM_BASE_INFOLEVEL + USER_WORKSTATIONS_PARMNUM) ! 603: #define USER_LAST_LOGON_INFOLEVEL \ ! 604: (PARMNUM_BASE_INFOLEVEL + USER_LAST_LOGON_PARMNUM) ! 605: #define USER_LAST_LOGOFF_INFOLEVEL \ ! 606: (PARMNUM_BASE_INFOLEVEL + USER_LAST_LOGOFF_PARMNUM) ! 607: #define USER_ACCT_EXPIRES_INFOLEVEL \ ! 608: (PARMNUM_BASE_INFOLEVEL + USER_ACCT_EXPIRES_PARMNUM) ! 609: #define USER_MAX_STORAGE_INFOLEVEL \ ! 610: (PARMNUM_BASE_INFOLEVEL + USER_MAX_STORAGE_PARMNUM) ! 611: #define USER_UNITS_PER_WEEK_INFOLEVEL \ ! 612: (PARMNUM_BASE_INFOLEVEL + USER_UNITS_PER_WEEK_PARMNUM) ! 613: #define USER_LOGON_HOURS_INFOLEVEL \ ! 614: (PARMNUM_BASE_INFOLEVEL + USER_LOGON_HOURS_PARMNUM) ! 615: #define USER_PAD_PW_COUNT_INFOLEVEL \ ! 616: (PARMNUM_BASE_INFOLEVEL + USER_PAD_PW_COUNT_PARMNUM) ! 617: #define USER_NUM_LOGONS_INFOLEVEL \ ! 618: (PARMNUM_BASE_INFOLEVEL + USER_NUM_LOGONS_PARMNUM) ! 619: #define USER_LOGON_SERVER_INFOLEVEL \ ! 620: (PARMNUM_BASE_INFOLEVEL + USER_LOGON_SERVER_PARMNUM) ! 621: #define USER_COUNTRY_CODE_INFOLEVEL \ ! 622: (PARMNUM_BASE_INFOLEVEL + USER_COUNTRY_CODE_PARMNUM) ! 623: #define USER_CODE_PAGE_INFOLEVEL \ ! 624: (PARMNUM_BASE_INFOLEVEL + USER_CODE_PAGE_PARMNUM) ! 625: #define USER_PRIMARY_GROUP_INFOLEVEL \ ! 626: (PARMNUM_BASE_INFOLEVEL + USER_PRIMARY_GROUP_PARMNUM) ! 627: #define USER_POSIX_ID_INFOLEVEL \ ! 628: (PARMNUM_BASE_INFOLEVEL + USER_POSIX_ID_PARMNUM) ! 629: #define USER_HOME_DIR_DRIVE_INFOLEVEL \ ! 630: (PARMNUM_BASE_INFOLEVEL + USER_HOME_DIR_DRIVE_PARMNUM) ! 631: ! 632: // ! 633: // For SetInfo call (parmnum 0) when password change not required ! 634: // ! 635: ! 636: #define NULL_USERSETINFO_PASSWD " " ! 637: ! 638: #define TIMEQ_FOREVER ((unsigned long) -1L) ! 639: #define USER_MAXSTORAGE_UNLIMITED ((unsigned long) -1L) ! 640: #define USER_NO_LOGOFF ((unsigned long) -1L) ! 641: #define UNITS_PER_DAY 24 ! 642: #define UNITS_PER_WEEK UNITS_PER_DAY * 7 ! 643: ! 644: // ! 645: // Privilege levels (USER_INFO_X field usriX_priv (X = 0/1)). ! 646: // ! 647: ! 648: #define USER_PRIV_MASK 0x3 ! 649: #define USER_PRIV_GUEST 0 ! 650: #define USER_PRIV_USER 1 ! 651: #define USER_PRIV_ADMIN 2 ! 652: ! 653: // ! 654: // user modals related defaults ! 655: // ! 656: ! 657: #define MAX_PASSWD_LEN PWLEN ! 658: #define DEF_MIN_PWLEN 6 ! 659: #define DEF_PWUNIQUENESS 5 ! 660: #define DEF_MAX_PWHIST 8 ! 661: ! 662: #define DEF_MAX_PWAGE TIMEQ_FOREVER // forever ! 663: #define DEF_MIN_PWAGE (unsigned long) 0L // 0 days ! 664: #define DEF_FORCE_LOGOFF (unsigned long) 0xffffffff // never ! 665: #define DEF_MAX_BADPW 0 // no limit ! 666: #define ONE_DAY (unsigned long) 01*24*3600 // 01 day ! 667: ! 668: // ! 669: // User Logon Validation (codes returned) ! 670: // ! 671: ! 672: #define VALIDATED_LOGON 0 ! 673: #define PASSWORD_EXPIRED 2 ! 674: #define NON_VALIDATED_LOGON 3 ! 675: ! 676: #define VALID_LOGOFF 1 ! 677: ! 678: // ! 679: // parmnum manifests for user modals ! 680: // ! 681: ! 682: #define MODALS_MIN_PASSWD_LEN_PARMNUM 1 ! 683: #define MODALS_MAX_PASSWD_AGE_PARMNUM 2 ! 684: #define MODALS_MIN_PASSWD_AGE_PARMNUM 3 ! 685: #define MODALS_FORCE_LOGOFF_PARMNUM 4 ! 686: #define MODALS_PASSWD_HIST_LEN_PARMNUM 5 ! 687: #define MODALS_ROLE_PARMNUM 6 ! 688: #define MODALS_PRIMARY_PARMNUM 7 ! 689: #define MODALS_DOMAIN_NAME_PARMNUM 8 ! 690: #define MODALS_DOMAIN_ID_PARMNUM 9 ! 691: ! 692: // ! 693: // the new infolevel counterparts of the old info level + parmnum ! 694: // ! 695: ! 696: #define MODALS_MIN_PASSWD_LEN_INFOLEVEL \ ! 697: (PARMNUM_BASE_INFOLEVEL + MODALS_MIN_PASSWD_LEN_PARMNUM) ! 698: #define MODALS_MAX_PASSWD_AGE_INFOLEVEL \ ! 699: (PARMNUM_BASE_INFOLEVEL + MODALS_MAX_PASSWD_AGE_PARMNUM) ! 700: #define MODALS_MIN_PASSWD_AGE_INFOLEVEL \ ! 701: (PARMNUM_BASE_INFOLEVEL + MODALS_MIN_PASSWD_AGE_PARMNUM) ! 702: #define MODALS_FORCE_LOGOFF_INFOLEVEL \ ! 703: (PARMNUM_BASE_INFOLEVEL + MODALS_FORCE_LOGOFF_PARMNUM) ! 704: #define MODALS_PASSWD_HIST_LEN_INFOLEVEL \ ! 705: (PARMNUM_BASE_INFOLEVEL + MODALS_PASSWD_HIST_LEN_PARMNUM) ! 706: #define MODALS_ROLE_INFOLEVEL \ ! 707: (PARMNUM_BASE_INFOLEVEL + MODALS_ROLE_PARMNUM) ! 708: #define MODALS_PRIMARY_INFOLEVEL \ ! 709: (PARMNUM_BASE_INFOLEVEL + MODALS_PRIMARY_PARMNUM) ! 710: #define MODALS_DOMAIN_NAME_INFOLEVEL \ ! 711: (PARMNUM_BASE_INFOLEVEL + MODALS_DOMAIN_NAME_PARMNUM) ! 712: #define MODALS_DOMAIN_ID_INFOLEVEL \ ! 713: (PARMNUM_BASE_INFOLEVEL + MODALS_DOMAIN_ID_PARMNUM) ! 714: ! 715: #endif // _LMUSER_ ! 716: ! 717: // ! 718: // Group Class ! 719: // ! 720: ! 721: #ifndef _LMGROUP_ ! 722: #define _LMGROUP_ ! 723: ! 724: // ! 725: // Function Prototypes ! 726: // ! 727: ! 728: NET_API_STATUS NET_API_FUNCTION ! 729: NetGroupAdd ( ! 730: IN LPWSTR servername OPTIONAL, ! 731: IN DWORD level, ! 732: IN LPBYTE buf, ! 733: OUT LPDWORD parm_err OPTIONAL ! 734: ); ! 735: ! 736: NET_API_STATUS NET_API_FUNCTION ! 737: NetGroupAddUser ( ! 738: IN LPWSTR servername OPTIONAL, ! 739: IN LPWSTR GroupName, ! 740: IN LPWSTR username ! 741: ); ! 742: ! 743: NET_API_STATUS NET_API_FUNCTION ! 744: NetGroupEnum ( ! 745: IN LPWSTR servername OPTIONAL, ! 746: IN DWORD level, ! 747: OUT LPBYTE *bufptr, ! 748: IN DWORD prefmaxlen, ! 749: OUT LPDWORD entriesread, ! 750: OUT LPDWORD totalentries, ! 751: IN OUT LPDWORD resume_handle OPTIONAL ! 752: ); ! 753: ! 754: NET_API_STATUS NET_API_FUNCTION ! 755: NetGroupGetInfo ( ! 756: IN LPWSTR servername OPTIONAL, ! 757: IN LPWSTR groupname, ! 758: IN DWORD level, ! 759: OUT LPBYTE *bufptr ! 760: ); ! 761: ! 762: NET_API_STATUS NET_API_FUNCTION ! 763: NetGroupSetInfo ( ! 764: IN LPWSTR servername OPTIONAL, ! 765: IN LPWSTR groupname, ! 766: IN DWORD level, ! 767: IN LPBYTE buf, ! 768: OUT LPDWORD parm_err OPTIONAL ! 769: ); ! 770: ! 771: NET_API_STATUS NET_API_FUNCTION ! 772: NetGroupDel ( ! 773: IN LPWSTR servername OPTIONAL, ! 774: IN LPWSTR groupname ! 775: ); ! 776: ! 777: NET_API_STATUS NET_API_FUNCTION ! 778: NetGroupDelUser ( ! 779: IN LPWSTR servername OPTIONAL, ! 780: IN LPWSTR GroupName, ! 781: IN LPWSTR Username ! 782: ); ! 783: ! 784: NET_API_STATUS NET_API_FUNCTION ! 785: NetGroupGetUsers ( ! 786: IN LPWSTR servername OPTIONAL, ! 787: IN LPWSTR groupname, ! 788: IN DWORD level, ! 789: OUT LPBYTE *bufptr, ! 790: IN DWORD prefmaxlen, ! 791: OUT LPDWORD entriesread, ! 792: OUT LPDWORD totalentries, ! 793: IN OUT LPDWORD ResumeHandle ! 794: ); ! 795: ! 796: NET_API_STATUS NET_API_FUNCTION ! 797: NetGroupSetUsers ( ! 798: IN LPWSTR servername OPTIONAL, ! 799: IN LPWSTR groupname, ! 800: IN DWORD level, ! 801: IN LPBYTE buf, ! 802: IN DWORD totalentries ! 803: ); ! 804: ! 805: // ! 806: // Data Structures - Group ! 807: // ! 808: ! 809: typedef struct _GROUP_INFO_0 { ! 810: LPWSTR grpi0_name; ! 811: }GROUP_INFO_0, *PGROUP_INFO_0, *LPGROUP_INFO_0; ! 812: ! 813: typedef struct _GROUP_INFO_1 { ! 814: LPWSTR grpi1_name; ! 815: LPWSTR grpi1_comment; ! 816: }GROUP_INFO_1, *PGROUP_INFO_1, *LPGROUP_INFO_1; ! 817: ! 818: typedef struct _GROUP_INFO_2 { ! 819: LPWSTR grpi2_name; ! 820: LPWSTR grpi2_comment; ! 821: DWORD grpi2_group_id; ! 822: DWORD grpi2_attributes; ! 823: }GROUP_INFO_2, *PGROUP_INFO_2; ! 824: ! 825: typedef struct _GROUP_INFO_1002 { ! 826: LPWSTR grpi1002_comment; ! 827: } GROUP_INFO_1002, *PGROUP_INFO_1002, *LPGROUP_INFO_1002; ! 828: ! 829: typedef struct _GROUP_INFO_1005 { ! 830: DWORD grpi1005_attributes; ! 831: } GROUP_INFO_1005, *PGROUP_INFO_1005, *LPGROUP_INFO_1005; ! 832: ! 833: ! 834: typedef struct _GROUP_USERS_INFO_0 { ! 835: LPWSTR grui0_name; ! 836: } GROUP_USERS_INFO_0, *PGROUP_USERS_INFO_0, *LPGROUP_USERS_INFO_0; ! 837: ! 838: typedef struct _GROUP_USERS_INFO_1 { ! 839: LPWSTR grui1_name; ! 840: DWORD grui1_attributes; ! 841: } GROUP_USERS_INFO_1, *PGROUP_USERS_INFO_1, *LPGROUP_USERS_INFO_1; ! 842: ! 843: // ! 844: // Special Values and Constants - Group ! 845: // ! 846: ! 847: #define GROUPIDMASK 0x8000 // MSB set if uid refers ! 848: // to a group ! 849: ! 850: // ! 851: // Predefined group for all normal users, administrators and guests ! 852: // LOCAL is a special group for pinball local security. ! 853: // ! 854: ! 855: #define GROUP_SPECIALGRP_USERS L"USERS" ! 856: #define GROUP_SPECIALGRP_ADMINS L"ADMINS" ! 857: #define GROUP_SPECIALGRP_GUESTS L"GUESTS" ! 858: #define GROUP_SPECIALGRP_LOCAL L"LOCAL" ! 859: ! 860: // ! 861: // parmnum manifests for SetInfo calls (only comment is settable) ! 862: // ! 863: ! 864: #define GROUP_ALL_PARMNUM 0 ! 865: #define GROUP_NAME_PARMNUM 1 ! 866: #define GROUP_COMMENT_PARMNUM 2 ! 867: #define GROUP_ATTRIBUTES_PARMNUM 3 ! 868: ! 869: // ! 870: // the new infolevel counterparts of the old info level + parmnum ! 871: // ! 872: ! 873: #define GROUP_ALL_INFOLEVEL \ ! 874: (PARMNUM_BASE_INFOLEVEL + GROUP_ALL_PARMNUM) ! 875: #define GROUP_NAME_INFOLEVEL \ ! 876: (PARMNUM_BASE_INFOLEVEL + GROUP_NAME_PARMNUM) ! 877: #define GROUP_COMMENT_INFOLEVEL \ ! 878: (PARMNUM_BASE_INFOLEVEL + GROUP_COMMENT_PARMNUM) ! 879: #define GROUP_ATTRIBUTES_INFOLEVEL \ ! 880: (PARMNUM_BASE_INFOLEVEL + GROUP_ATTRIBUTES_PARMNUM) ! 881: #define GROUP_POSIX_ID_INFOLEVEL \ ! 882: (PARMNUM_BASE_INFOLEVEL + GROUP_POSIX_ID_PARMNUM) ! 883: ! 884: #endif // _LMGROUP_ ! 885: ! 886: // ! 887: // LocalGroup Class ! 888: // ! 889: ! 890: #ifndef _LMLOCALGROUP_ ! 891: #define _LMLOCALGROUP_ ! 892: ! 893: // ! 894: // Function Prototypes ! 895: // ! 896: ! 897: NET_API_STATUS NET_API_FUNCTION ! 898: NetLocalGroupAdd ( ! 899: IN LPWSTR servername OPTIONAL, ! 900: IN DWORD level, ! 901: IN LPBYTE buf, ! 902: OUT LPDWORD parm_err OPTIONAL ! 903: ); ! 904: ! 905: NET_API_STATUS NET_API_FUNCTION ! 906: NetLocalGroupAddMember ( ! 907: IN LPWSTR servername OPTIONAL, ! 908: IN LPWSTR groupname, ! 909: IN PSID membersid ! 910: ); ! 911: ! 912: NET_API_STATUS NET_API_FUNCTION ! 913: NetLocalGroupEnum ( ! 914: IN LPWSTR servername OPTIONAL, ! 915: IN DWORD level, ! 916: OUT LPBYTE *bufptr, ! 917: IN DWORD prefmaxlen, ! 918: OUT LPDWORD entriesread, ! 919: OUT LPDWORD totalentries, ! 920: IN OUT LPDWORD resumehandle OPTIONAL ! 921: ); ! 922: ! 923: NET_API_STATUS NET_API_FUNCTION ! 924: NetLocalGroupGetInfo ( ! 925: IN LPWSTR servername OPTIONAL, ! 926: IN LPWSTR groupname, ! 927: IN DWORD level, ! 928: OUT LPBYTE *bufptr ! 929: ); ! 930: ! 931: NET_API_STATUS NET_API_FUNCTION ! 932: NetLocalGroupSetInfo ( ! 933: IN LPWSTR servername OPTIONAL, ! 934: IN LPWSTR groupname, ! 935: IN DWORD level, ! 936: IN LPBYTE buf, ! 937: OUT LPDWORD parm_err OPTIONAL ! 938: ); ! 939: ! 940: NET_API_STATUS NET_API_FUNCTION ! 941: NetLocalGroupDel ( ! 942: IN LPWSTR servername OPTIONAL, ! 943: IN LPWSTR groupname ! 944: ); ! 945: ! 946: NET_API_STATUS NET_API_FUNCTION ! 947: NetLocalGroupDelMember ( ! 948: IN LPWSTR servername OPTIONAL, ! 949: IN LPWSTR groupname, ! 950: IN PSID membersid ! 951: ); ! 952: ! 953: NET_API_STATUS NET_API_FUNCTION ! 954: NetLocalGroupGetMembers ( ! 955: IN LPWSTR servername OPTIONAL, ! 956: IN LPWSTR localgroupname, ! 957: IN DWORD level, ! 958: OUT LPBYTE *bufptr, ! 959: IN DWORD prefmaxlen, ! 960: OUT LPDWORD entriesread, ! 961: OUT LPDWORD totalentries, ! 962: IN OUT LPDWORD resumehandle ! 963: ); ! 964: ! 965: NET_API_STATUS NET_API_FUNCTION ! 966: NetLocalGroupSetMembers ( ! 967: IN LPWSTR servername OPTIONAL, ! 968: IN LPWSTR groupname, ! 969: IN DWORD level, ! 970: IN LPBYTE buf, ! 971: IN DWORD totalentries ! 972: ); ! 973: ! 974: // ! 975: // Data Structures - LocalGroup ! 976: // ! 977: ! 978: typedef struct _LOCALGROUP_INFO_0 { ! 979: LPWSTR lgrpi0_name; ! 980: }LOCALGROUP_INFO_0, *PLOCALGROUP_INFO_0, *LPLOCALGROUP_INFO_0; ! 981: ! 982: typedef struct _LOCALGROUP_INFO_1 { ! 983: LPWSTR lgrpi1_name; ! 984: LPWSTR lgrpi1_comment; ! 985: }LOCALGROUP_INFO_1, *PLOCALGROUP_INFO_1, *LPLOCALGROUP_INFO_1; ! 986: ! 987: typedef struct _LOCALGROUP_INFO_1002 { ! 988: LPWSTR lgrpi1002_comment; ! 989: }LOCALGROUP_INFO_1002, *PLOCALGROUP_INFO_1002, *LPLOCALGROUP_INFO_1002; ! 990: ! 991: typedef struct _LOCALGROUP_MEMBERS_INFO_0 { ! 992: PSID lgrmi0_sid; ! 993: } LOCALGROUP_MEMBERS_INFO_0, *PLOCALGROUP_MEMBERS_INFO_0, ! 994: *LPLOCALGROUP_MEMBERS_INFO_0; ! 995: ! 996: typedef struct _LOCALGROUP_MEMBERS_INFO_1 { ! 997: PSID lgrmi1_sid; ! 998: SID_NAME_USE lgrmi1_sidusage; ! 999: LPWSTR lgrmi1_name; ! 1000: } LOCALGROUP_MEMBERS_INFO_1, *PLOCALGROUP_MEMBERS_INFO_1, ! 1001: *LPLOCALGROUP_MEMBERS_INFO_1; ! 1002: ! 1003: typedef struct _LOCALGROUP_USERS_INFO_0 { ! 1004: LPWSTR lgrui0_name; ! 1005: } LOCALGROUP_USERS_INFO_0, *PLOCALGROUP_USERS_INFO_0, ! 1006: *LPLOCALGROUP_USERS_INFO_0; ! 1007: ! 1008: ! 1009: #define LOCALGROUP_NAME_PARMNUM 1 ! 1010: #define LOCALGROUP_COMMENT_PARMNUM 2 ! 1011: ! 1012: #endif // _LMLOCALGROUP_ ! 1013: ! 1014: // ! 1015: // Access Class ! 1016: // ! 1017: ! 1018: #ifndef _LMACCESS_ ! 1019: #define _LMACCESS_ ! 1020: ! 1021: ! 1022: ! 1023: // ! 1024: // Function Prototypes - Access ! 1025: // ! 1026: // ! 1027: // The NetAccess APIs are only available to downlevel ! 1028: // ! 1029: ! 1030: #define NetAccessAdd RxNetAccessAdd ! 1031: ! 1032: NET_API_STATUS NET_API_FUNCTION ! 1033: NetAccessAdd ( ! 1034: IN LPTSTR servername OPTIONAL, ! 1035: IN DWORD level, ! 1036: IN LPBYTE buf, ! 1037: OUT LPDWORD parm_err OPTIONAL ! 1038: ); ! 1039: ! 1040: #define NetAccessEnum RxNetAccessEnum ! 1041: ! 1042: NET_API_STATUS NET_API_FUNCTION ! 1043: NetAccessEnum ( ! 1044: IN LPTSTR servername OPTIONAL, ! 1045: IN LPTSTR BasePath, ! 1046: IN DWORD Recursive, ! 1047: IN DWORD level, ! 1048: OUT LPBYTE *bufptr, ! 1049: IN DWORD prefmaxlen, ! 1050: OUT LPDWORD entriesread, ! 1051: OUT LPDWORD totalentries, ! 1052: IN OUT LPDWORD resume_handle OPTIONAL ! 1053: ); ! 1054: ! 1055: #define NetAccessGetInfo RxNetAccessGetInfo ! 1056: ! 1057: NET_API_STATUS NET_API_FUNCTION ! 1058: NetAccessGetInfo ( ! 1059: IN LPTSTR servername OPTIONAL, ! 1060: IN LPTSTR resource, ! 1061: IN DWORD level, ! 1062: OUT LPBYTE *bufptr ! 1063: ); ! 1064: ! 1065: #define NetAccessSetInfo RxNetAccessSetInfo ! 1066: ! 1067: NET_API_STATUS NET_API_FUNCTION ! 1068: NetAccessSetInfo ( ! 1069: IN LPTSTR servername OPTIONAL, ! 1070: IN LPTSTR resource, ! 1071: IN DWORD level, ! 1072: IN LPBYTE buf, ! 1073: OUT LPDWORD parm_err OPTIONAL ! 1074: ); ! 1075: ! 1076: #define NetAccessDel RxNetAccessDel ! 1077: ! 1078: NET_API_STATUS NET_API_FUNCTION ! 1079: NetAccessDel ( ! 1080: IN LPTSTR servername OPTIONAL, ! 1081: IN LPTSTR resource ! 1082: ); ! 1083: ! 1084: #define NetAccessGetUserPerms RxNetAccessGetUserPerms ! 1085: ! 1086: NET_API_STATUS NET_API_FUNCTION ! 1087: NetAccessGetUserPerms ( ! 1088: IN LPTSTR servername OPTIONAL, ! 1089: IN LPTSTR UGname, ! 1090: IN LPTSTR resource, ! 1091: OUT LPDWORD Perms ! 1092: ); ! 1093: ! 1094: // ! 1095: // Data Structures - Access ! 1096: // ! 1097: ! 1098: typedef struct _ACCESS_INFO_0 { ! 1099: LPTSTR acc0_resource_name; ! 1100: }ACCESS_INFO_0, *PACCESS_INFO_0, *LPACCESS_INFO_0; ! 1101: ! 1102: typedef struct _ACCESS_INFO_1 { ! 1103: LPTSTR acc1_resource_name; ! 1104: DWORD acc1_attr; ! 1105: DWORD acc1_count; ! 1106: }ACCESS_INFO_1, *PACCESS_INFO_1, *LPACCESS_INFO_1; ! 1107: ! 1108: typedef struct _ACCESS_INFO_1002 { ! 1109: DWORD acc1002_attr; ! 1110: } ACCESS_INFO_1002, *PACCESS_INFO_1002, *LPACCESS_INFO_1002; ! 1111: ! 1112: ! 1113: typedef struct _ACCESS_LIST { ! 1114: LPTSTR acl_ugname; ! 1115: DWORD acl_access; ! 1116: }ACCESS_LIST, *PACCESS_LIST, *LPACCESS_LIST; ! 1117: ! 1118: // ! 1119: // Special Values and Constants - Access ! 1120: // ! 1121: ! 1122: // ! 1123: // Maximum number of permission entries for each resource. ! 1124: // ! 1125: ! 1126: #define MAXPERMENTRIES 64 ! 1127: ! 1128: // ! 1129: // Bit values for the access permissions. ACCESS_ALL is a handy ! 1130: // way to specify maximum permissions. These are used in ! 1131: // acl_access field of access_list structures. ! 1132: // ! 1133: ! 1134: #define ACCESS_NONE 0 ! 1135: #define ACCESS_ALL ( ACCESS_READ | \ ! 1136: ACCESS_WRITE | \ ! 1137: ACCESS_CREATE | \ ! 1138: ACCESS_EXEC | \ ! 1139: ACCESS_DELETE | \ ! 1140: ACCESS_ATRIB | \ ! 1141: ACCESS_PERM \ ! 1142: ) ! 1143: ! 1144: #define ACCESS_READ 0x01 ! 1145: #define ACCESS_WRITE 0x02 ! 1146: #define ACCESS_CREATE 0x04 ! 1147: #define ACCESS_EXEC 0x08 ! 1148: #define ACCESS_DELETE 0x10 ! 1149: #define ACCESS_ATRIB 0x20 ! 1150: #define ACCESS_PERM 0x40 ! 1151: ! 1152: #define ACCESS_GROUP 0x8000 ! 1153: ! 1154: // ! 1155: // Bit values for the acc1_attr field of the ACCESS_INFO_1 structure. ! 1156: // ! 1157: ! 1158: #define ACCESS_AUDIT 0x1 ! 1159: ! 1160: #define ACCESS_SUCCESS_OPEN 0x10 ! 1161: #define ACCESS_SUCCESS_WRITE 0x20 ! 1162: #define ACCESS_SUCCESS_DELETE 0x40 ! 1163: #define ACCESS_SUCCESS_ACL 0x80 ! 1164: #define ACCESS_SUCCESS_MASK 0xF0 ! 1165: ! 1166: #define ACCESS_FAIL_OPEN 0x100 ! 1167: #define ACCESS_FAIL_WRITE 0x200 ! 1168: #define ACCESS_FAIL_DELETE 0x400 ! 1169: #define ACCESS_FAIL_ACL 0x800 ! 1170: #define ACCESS_FAIL_MASK 0xF00 ! 1171: ! 1172: #define ACCESS_FAIL_SHIFT 4 ! 1173: ! 1174: // ! 1175: // Parmnum value for NetAccessSetInfo. ! 1176: // ! 1177: ! 1178: #define ACCESS_RESOURCE_NAME_PARMNUM 1 ! 1179: #define ACCESS_ATTR_PARMNUM 2 ! 1180: #define ACCESS_COUNT_PARMNUM 3 ! 1181: #define ACCESS_ACCESS_LIST_PARMNUM 4 ! 1182: ! 1183: // ! 1184: // the new infolevel counterparts of the old info level + parmnum ! 1185: // ! 1186: ! 1187: #define ACCESS_RESOURCE_NAME_INFOLEVEL \ ! 1188: (PARMNUM_BASE_INFOLEVEL + ACCESS_RESOURCE_NAME_PARMNUM) ! 1189: #define ACCESS_ATTR_INFOLEVEL \ ! 1190: (PARMNUM_BASE_INFOLEVEL + ACCESS_ATTR_PARMNUM) ! 1191: #define ACCESS_COUNT_INFOLEVEL \ ! 1192: (PARMNUM_BASE_INFOLEVEL + ACCESS_COUNT_PARMNUM) ! 1193: #define ACCESS_ACCESS_LIST_INFOLEVEL \ ! 1194: (PARMNUM_BASE_INFOLEVEL + ACCESS_ACCESS_LIST_PARMNUM) ! 1195: ! 1196: // ! 1197: // ACCESS_LETTERS defines a letter for each bit position in ! 1198: // the acl_access field of struct access_list. Note that some ! 1199: // bits have a corresponding letter of ' ' (space). ! 1200: // ! 1201: ! 1202: #define ACCESS_LETTERS "RWCXDAP " ! 1203: ! 1204: #endif // _LMACCESS_ ! 1205: ! 1206: // ! 1207: // Domain Class ! 1208: // ! 1209: ! 1210: #ifndef _LMDOMAIN_ ! 1211: #define _LMDOMAIN_ ! 1212: ! 1213: // ! 1214: // Function Prototypes - Domain ! 1215: // ! 1216: ! 1217: NET_API_STATUS NET_API_FUNCTION ! 1218: NetGetDCName ( ! 1219: IN LPWSTR servername OPTIONAL, ! 1220: IN LPWSTR domainname OPTIONAL, ! 1221: OUT LPBYTE *bufptr ! 1222: ); ! 1223: ! 1224: NET_API_STATUS NET_API_FUNCTION ! 1225: NetGetAnyDCName ( ! 1226: IN LPWSTR servername OPTIONAL, ! 1227: IN LPWSTR domainname OPTIONAL, ! 1228: OUT LPBYTE *bufptr ! 1229: ); ! 1230: ! 1231: ! 1232: NET_API_STATUS NET_API_FUNCTION ! 1233: I_NetLogonControl( ! 1234: IN LPWSTR ServerName OPTIONAL, ! 1235: IN DWORD FunctionCode, ! 1236: IN DWORD QueryLevel, ! 1237: OUT LPBYTE *Buffer ! 1238: ); ! 1239: ! 1240: NET_API_STATUS NET_API_FUNCTION ! 1241: I_NetLogonControl2( ! 1242: IN LPWSTR ServerName OPTIONAL, ! 1243: IN DWORD FunctionCode, ! 1244: IN DWORD QueryLevel, ! 1245: IN LPBYTE Data, ! 1246: OUT LPBYTE *Buffer ! 1247: ); ! 1248: ! 1249: ! 1250: ! 1251: // ! 1252: // Special Values and Constants - Domain ! 1253: // ! 1254: ! 1255: // ! 1256: // FunctionCode values for I_NetLogonControl. ! 1257: // ! 1258: // NOTE : if you change the following NETLOGON_CONTROL_* values, ! 1259: // change them in net\svcdlls\logonsrv\logon.idl file also. ! 1260: // ! 1261: ! 1262: #define NETLOGON_CONTROL_QUERY 1 // No-op: just query ! 1263: #define NETLOGON_CONTROL_REPLICATE 2 // Force replicate on BDC ! 1264: #define NETLOGON_CONTROL_SYNCHRONIZE 3 // Force synchronize on BDC ! 1265: #define NETLOGON_CONTROL_PDC_REPLICATE 4 // Force PDC to broadcast change ! 1266: #define NETLOGON_CONTROL_REDISCOVER 5 // Force to re-discover trusted domain DCs ! 1267: #define NETLOGON_CONTROL_TC_QUERY 6 // Query status of specified trusted channel status ! 1268: ! 1269: // Debug function codes ! 1270: ! 1271: #define NETLOGON_CONTROL_BACKUP_CHANGE_LOG 0xFFFC ! 1272: #define NETLOGON_CONTROL_TRUNCATE_LOG 0xFFFD ! 1273: #define NETLOGON_CONTROL_SET_DBFLAG 0xFFFE ! 1274: #define NETLOGON_CONTROL_BREAKPOINT 0xFFFF ! 1275: ! 1276: // ! 1277: // Query level 1 for I_NetLogonControl ! 1278: // ! 1279: ! 1280: typedef struct _NETLOGON_INFO_1 { ! 1281: DWORD netlog1_flags; ! 1282: NET_API_STATUS netlog1_pdc_connection_status; ! 1283: } NETLOGON_INFO_1, *PNETLOGON_INFO_1; ! 1284: ! 1285: typedef struct _NETLOGON_INFO_2 { ! 1286: DWORD netlog2_flags; ! 1287: NET_API_STATUS netlog2_pdc_connection_status; ! 1288: #ifdef MIDL_PASS ! 1289: [string] wchar_t * netlog2_trusted_dc_name; ! 1290: #else ! 1291: LPWSTR netlog2_trusted_dc_name; ! 1292: #endif // MIDL_PASS ! 1293: NET_API_STATUS netlog2_tc_connection_status; ! 1294: } NETLOGON_INFO_2, *PNETLOGON_INFO_2; ! 1295: ! 1296: // ! 1297: // Values of netlog1_flags ! 1298: // ! 1299: ! 1300: #define NETLOGON_REPLICATION_NEEDED 0x01 // Database is out of date ! 1301: #define NETLOGON_REPLICATION_IN_PROGRESS 0x02 // Replication is happening now ! 1302: #define NETLOGON_FULL_SYNC_REPLICATION 0x04 // full sync replication required/progress ! 1303: ! 1304: #ifdef __cplusplus ! 1305: } ! 1306: #endif ! 1307: ! 1308: #endif // _LMDOMAIN_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.