Annotation of mstools/h/lmaccess.h, revision 1.1.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.