Annotation of mstools/h/lmaccess.h, revision 1.1

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_

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.