home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / msinc.pak / LMSHARE.H < prev    next >
C/C++ Source or Header  |  1997-07-23  |  11KB  |  461 lines

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