|
|
1.1 root 1: /*++ BUILD Version: 0001 // Increment this if a change has global effects
2:
3: Copyright (c) 1990-1993 Microsoft Corporation
4:
5: Module Name:
6:
7: lmshare.h
8:
9: Abstract:
10:
11: This module defines the API function prototypes and data structures
12: for the following groups of NT API functions:
13: NetShare
14: NetSession
15: NetFile
16: NetConnection
17:
18: Author:
19:
20: Dan Lafferty (danl) 25-Jan-1991
21:
22: Environment:
23:
24: User Mode - Win32
25:
26: Notes:
27:
28: You must include <windef.h> and <lmcons.h> before this file.
29:
30: Revision History:
31:
32: 25-Jan-1991 Danl
33: Ported from LM2.0
34: 14-Apr-1991 w-shanku
35: Changed parmnum values to be more consistent with OS/2 parmnums.
36: 19-Jul-1991 JohnRo
37: Added some OPTIONAL equates to NetConnectionEnum.
38: 20-Aug-1991 JohnRo
39: Added some OPTIONAL equates to NetFile APIs.
40: Changed LPSTR to LPTSTR.
41: 20-Nov-1991 JohnRo
42: Implement remote NetSession APIs. (Added OPTIONAL to NetSession APIs.)
43: Clarify that client name (arg to NetSession APIs) is a UNC computer
44: name, whereas the session info structures contain non-UNC names.
45:
46: --*/
47:
48: //
49: // SHARE API
50: //
51:
52: #ifndef _LMSHARE_
53: #define _LMSHARE_
54:
55: #ifdef __cplusplus
56: extern "C" {
57: #endif
58:
59: //
60: // Function Prototypes - Share
61: //
62:
63: NET_API_STATUS NET_API_FUNCTION
64: NetShareAdd (
65: IN LPTSTR servername,
66: IN DWORD level,
67: IN LPBYTE buf,
68: OUT LPDWORD parm_err
69: );
70:
71: NET_API_STATUS NET_API_FUNCTION
72: NetShareEnum (
73: IN LPTSTR servername,
74: IN DWORD level,
75: OUT LPBYTE *bufptr,
76: IN DWORD prefmaxlen,
77: OUT LPDWORD entriesread,
78: OUT LPDWORD totalentries,
79: IN OUT LPDWORD resume_handle
80: );
81:
82: NET_API_STATUS NET_API_FUNCTION
83: NetShareEnumSticky (
84: IN LPTSTR servername,
85: IN DWORD level,
86: OUT LPBYTE *bufptr,
87: IN DWORD prefmaxlen,
88: OUT LPDWORD entriesread,
89: OUT LPDWORD totalentries,
90: IN OUT LPDWORD resume_handle
91: );
92:
93: NET_API_STATUS NET_API_FUNCTION
94: NetShareGetInfo (
95: IN LPTSTR servername,
96: IN LPTSTR netname,
97: IN DWORD level,
98: OUT LPBYTE *bufptr
99: );
100:
101: NET_API_STATUS NET_API_FUNCTION
102: NetShareSetInfo (
103: IN LPTSTR servername,
104: IN LPTSTR netname,
105: IN DWORD level,
106: IN LPBYTE buf,
107: OUT LPDWORD parm_err
108: );
109:
110: NET_API_STATUS NET_API_FUNCTION
111: NetShareDel (
112: IN LPTSTR servername,
113: IN LPTSTR netname,
114: IN DWORD reserved
115: );
116:
117: NET_API_STATUS NET_API_FUNCTION
118: NetShareDelSticky (
119: IN LPTSTR servername,
120: IN LPTSTR netname,
121: IN DWORD reserved
122: );
123:
124: NET_API_STATUS NET_API_FUNCTION
125: NetShareCheck (
126: IN LPTSTR servername,
127: IN LPTSTR device,
128: OUT LPDWORD type
129: );
130:
131: //
132: // Data Structures - Share
133: //
134:
135: typedef struct _SHARE_INFO_0 {
136: LPTSTR shi0_netname;
137: } SHARE_INFO_0, *PSHARE_INFO_0, *LPSHARE_INFO_0;
138:
139: typedef struct _SHARE_INFO_1 {
140: LPTSTR shi1_netname;
141: DWORD shi1_type;
142: LPTSTR shi1_remark;
143: } SHARE_INFO_1, *PSHARE_INFO_1, *LPSHARE_INFO_1;
144:
145: typedef struct _SHARE_INFO_2 {
146: LPTSTR shi2_netname;
147: DWORD shi2_type;
148: LPTSTR shi2_remark;
149: DWORD shi2_permissions;
150: DWORD shi2_max_uses;
151: DWORD shi2_current_uses;
152: LPTSTR shi2_path;
153: LPTSTR shi2_passwd;
154: } SHARE_INFO_2, *PSHARE_INFO_2, *LPSHARE_INFO_2;
155:
156: typedef struct _SHARE_INFO_502 {
157: LPTSTR shi502_netname;
158: DWORD shi502_type;
159: LPTSTR shi502_remark;
160: DWORD shi502_permissions;
161: DWORD shi502_max_uses;
162: DWORD shi502_current_uses;
163: LPTSTR shi502_path;
164: LPTSTR shi502_passwd;
165: DWORD shi502_reserved;
166: PSECURITY_DESCRIPTOR shi502_security_descriptor;
167: } SHARE_INFO_502, *PSHARE_INFO_502, *LPSHARE_INFO_502;
168:
169: typedef struct _SHARE_INFO_1004 {
170: LPTSTR shi1004_remark;
171: } SHARE_INFO_1004, *PSHARE_INFO_1004, *LPSHARE_INFO_1004;
172:
173: typedef struct _SHARE_INFO_1006 {
174: DWORD shi1006_max_uses;
175: } SHARE_INFO_1006, *PSHARE_INFO_1006, *LPSHARE_INFO_1006;
176:
177: typedef struct _SHARE_INFO_1501 {
178: DWORD shi1501_reserved;
179: PSECURITY_DESCRIPTOR shi1501_security_descriptor;
180: } SHARE_INFO_1501, *PSHARE_INFO_1501, *LPSHARE_INFO_1501;
181:
182: //
183: // Special Values and Constants - Share
184: //
185:
186: //
187: // Values for parm_err parameter.
188: //
189:
190: #define SHARE_NETNAME_PARMNUM 1
191: #define SHARE_TYPE_PARMNUM 3
192: #define SHARE_REMARK_PARMNUM 4
193: #define SHARE_PERMISSIONS_PARMNUM 5
194: #define SHARE_MAX_USES_PARMNUM 6
195: #define SHARE_CURRENT_USES_PARMNUM 7
196: #define SHARE_PATH_PARMNUM 8
197: #define SHARE_PASSWD_PARMNUM 9
198: #define SHARE_FILE_SD_PARMNUM 501
199:
200: //
201: // Single-field infolevels for NetShareSetInfo.
202: //
203:
204: #define SHARE_REMARK_INFOLEVEL \
205: (PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM)
206: #define SHARE_MAX_USES_INFOLEVEL \
207: (PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM)
208: #define SHARE_FILE_SD_INFOLEVEL \
209: (PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM)
210:
211: #define SHI1_NUM_ELEMENTS 4
212: #define SHI2_NUM_ELEMENTS 10
213:
214:
215: //
216: // Share types (shi1_type and shi2_type fields).
217: //
218:
219: #define STYPE_DISKTREE 0
220: #define STYPE_PRINTQ 1
221: #define STYPE_DEVICE 2
222: #define STYPE_IPC 3
223:
224: #define STYPE_SPECIAL 0x80000000
225:
226: #define SHI_USES_UNLIMITED (DWORD)-1
227:
228: #endif // _LMSHARE_
229:
230: //
231: // SESSION API
232: //
233:
234: #ifndef _LMSESSION_
235: #define _LMSESSION_
236:
237: //
238: // Function Prototypes Session
239: //
240:
241: NET_API_STATUS NET_API_FUNCTION
242: NetSessionEnum (
243: IN LPTSTR servername OPTIONAL,
244: IN LPTSTR UncClientName OPTIONAL,
245: IN LPTSTR username OPTIONAL,
246: IN DWORD level,
247: OUT LPBYTE *bufptr,
248: IN DWORD prefmaxlen,
249: OUT LPDWORD entriesread,
250: OUT LPDWORD totalentries,
251: IN OUT LPDWORD resume_handle OPTIONAL
252: );
253:
254: NET_API_STATUS NET_API_FUNCTION
255: NetSessionDel (
256: IN LPTSTR servername OPTIONAL,
257: IN LPTSTR UncClientName,
258: IN LPTSTR username
259: );
260:
261: NET_API_STATUS NET_API_FUNCTION
262: NetSessionGetInfo (
263: IN LPTSTR servername OPTIONAL,
264: IN LPTSTR UncClientName,
265: IN LPTSTR username,
266: IN DWORD level,
267: OUT LPBYTE *bufptr
268: );
269:
270:
271: //
272: // Data Structures - Session
273: //
274:
275: typedef struct _SESSION_INFO_0 {
276: LPTSTR sesi0_cname; // client name (no backslashes)
277: } SESSION_INFO_0, *PSESSION_INFO_0, *LPSESSION_INFO_0;
278:
279: typedef struct _SESSION_INFO_1 {
280: LPTSTR sesi1_cname; // client name (no backslashes)
281: LPTSTR sesi1_username;
282: DWORD sesi1_num_opens;
283: DWORD sesi1_time;
284: DWORD sesi1_idle_time;
285: DWORD sesi1_user_flags;
286: } SESSION_INFO_1, *PSESSION_INFO_1, *LPSESSION_INFO_1;
287:
288: typedef struct _SESSION_INFO_2 {
289: LPTSTR sesi2_cname; // client name (no backslashes)
290: LPTSTR sesi2_username;
291: DWORD sesi2_num_opens;
292: DWORD sesi2_time;
293: DWORD sesi2_idle_time;
294: DWORD sesi2_user_flags;
295: LPTSTR sesi2_cltype_name;
296: } SESSION_INFO_2, *PSESSION_INFO_2, *LPSESSION_INFO_2;
297:
298: typedef struct _SESSION_INFO_10 {
299: LPTSTR sesi10_cname; // client name (no backslashes)
300: LPTSTR sesi10_username;
301: DWORD sesi10_time;
302: DWORD sesi10_idle_time;
303: } SESSION_INFO_10, *PSESSION_INFO_10, *LPSESSION_INFO_10;
304:
305:
306: //
307: // Special Values and Constants - Session
308: //
309:
310:
311: //
312: // Bits defined in sesi1_user_flags.
313: //
314:
315: #define SESS_GUEST 0x00000001 // session is logged on as a guest
316: #define SESS_NOENCRYPTION 0x00000002 // session is not using encryption
317:
318: #define SESI1_NUM_ELEMENTS 8
319: #define SESI2_NUM_ELEMENTS 9
320:
321: #endif // _LMSESSION_
322:
323: //
324: // CONNECTION API
325: //
326:
327: #ifndef _LMCONNECTION_
328:
329: #define _LMCONNECTION_
330:
331: //
332: // Function Prototypes - CONNECTION
333: //
334:
335: NET_API_STATUS NET_API_FUNCTION
336: NetConnectionEnum (
337: IN LPTSTR servername OPTIONAL,
338: IN LPTSTR qualifier,
339: IN DWORD level,
340: OUT LPBYTE *bufptr,
341: IN DWORD prefmaxlen,
342: OUT LPDWORD entriesread,
343: OUT LPDWORD totalentries,
344: IN OUT LPDWORD resume_handle OPTIONAL
345: );
346:
347: //
348: // Data Structures - CONNECTION
349: //
350:
351: typedef struct _CONNECTION_INFO_0 {
352: DWORD coni0_id;
353: } CONNECTION_INFO_0, *PCONNECTION_INFO_0, *LPCONNECTION_INFO_0;
354:
355: typedef struct _CONNECTION_INFO_1 {
356: DWORD coni1_id;
357: DWORD coni1_type;
358: DWORD coni1_num_opens;
359: DWORD coni1_num_users;
360: DWORD coni1_time;
361: LPTSTR coni1_username;
362: LPTSTR coni1_netname;
363: } CONNECTION_INFO_1, *PCONNECTION_INFO_1, *LPCONNECTION_INFO_1;
364:
365: #endif // _LMCONNECTION_
366:
367: //
368: // FILE API
369: //
370:
371: #ifndef _LMFILE_
372: #define _LMFILE_
373:
374: //
375: // Function Prototypes - FILE
376: //
377:
378: NET_API_STATUS NET_API_FUNCTION
379: NetFileClose (
380: IN LPTSTR servername OPTIONAL,
381: IN DWORD fileid
382: );
383:
384: NET_API_STATUS NET_API_FUNCTION
385: NetFileEnum (
386: IN LPTSTR servername OPTIONAL,
387: IN LPTSTR basepath OPTIONAL,
388: IN LPTSTR username OPTIONAL,
389: IN DWORD level,
390: OUT LPBYTE *bufptr,
391: IN DWORD prefmaxlen,
392: OUT LPDWORD entriesread,
393: OUT LPDWORD totalentries,
394: IN OUT LPDWORD resume_handle OPTIONAL
395: );
396:
397: NET_API_STATUS NET_API_FUNCTION
398: NetFileGetInfo (
399: IN LPTSTR servername OPTIONAL,
400: IN DWORD fileid,
401: IN DWORD level,
402: OUT LPBYTE *bufptr
403: );
404:
405: //
406: // Data Structures - File
407: //
408:
409: // File APIs are available at information levels 2 & 3 only. Levels 0 &
410: // 1 are not supported.
411: //
412:
413: typedef struct _FILE_INFO_2 {
414: DWORD fi2_id;
415: } FILE_INFO_2, *PFILE_INFO_2, *LPFILE_INFO_2;
416:
417: typedef struct _FILE_INFO_3 {
418: DWORD fi3_id;
419: DWORD fi3_permissions;
420: DWORD fi3_num_locks;
421: LPTSTR fi3_pathname;
422: LPTSTR fi3_username;
423: } FILE_INFO_3, *PFILE_INFO_3, *LPFILE_INFO_3;
424:
425: //
426: // Special Values and Constants - File
427: //
428:
429: //
430: // bit values for permissions
431: //
432:
433: #define PERM_FILE_READ 0x1 // user has read access
434: #define PERM_FILE_WRITE 0x2 // user has write access
435: #define PERM_FILE_CREATE 0x4 // user has create access
436:
437: #ifdef __cplusplus
438: }
439: #endif
440:
441: #endif // _LMFILE_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.