home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / WIN_NT / LMAPI.ZIP / H / LMSHARE.H < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-07  |  9.4 KB  |  412 lines

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