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