home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / lmshare.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  12KB  |  475 lines

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