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