home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / C++ / FreeCommandLineTools.exe / Include / lmshare.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-31  |  11.1 KB  |  470 lines

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