home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / sdk / winh / winnt / lmshare.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-11  |  10.0 KB  |  434 lines

  1. /*++ BUILD Version: 0001    // Increment this if a change has global effects
  2.  
  3. Copyright (c) 1990-1995  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_502 {
  137.     LPTSTR  shi502_netname;
  138.     DWORD   shi502_type;
  139.     LPTSTR  shi502_remark;
  140.     DWORD   shi502_permissions;
  141.     DWORD   shi502_max_uses;
  142.     DWORD   shi502_current_uses;
  143.     LPTSTR  shi502_path;
  144.     LPTSTR  shi502_passwd;
  145.     DWORD   shi502_reserved;
  146.     PSECURITY_DESCRIPTOR  shi502_security_descriptor;
  147. } SHARE_INFO_502, *PSHARE_INFO_502, *LPSHARE_INFO_502;
  148.  
  149. typedef struct _SHARE_INFO_1004 {
  150.     LPTSTR  shi1004_remark;
  151. } SHARE_INFO_1004, *PSHARE_INFO_1004, *LPSHARE_INFO_1004;
  152.  
  153. typedef struct _SHARE_INFO_1006 {
  154.     DWORD   shi1006_max_uses;
  155. } SHARE_INFO_1006, *PSHARE_INFO_1006, *LPSHARE_INFO_1006;
  156.  
  157. typedef struct _SHARE_INFO_1501 {
  158.     DWORD   shi1501_reserved;
  159.     PSECURITY_DESCRIPTOR  shi1501_security_descriptor;
  160. } SHARE_INFO_1501, *PSHARE_INFO_1501, *LPSHARE_INFO_1501;
  161.  
  162. //
  163. // Special Values and Constants - Share
  164. //
  165.  
  166. //
  167. // Values for parm_err parameter.
  168. //
  169.  
  170. #define SHARE_NETNAME_PARMNUM         1
  171. #define SHARE_TYPE_PARMNUM            3
  172. #define SHARE_REMARK_PARMNUM          4
  173. #define SHARE_PERMISSIONS_PARMNUM     5
  174. #define SHARE_MAX_USES_PARMNUM        6
  175. #define SHARE_CURRENT_USES_PARMNUM    7
  176. #define SHARE_PATH_PARMNUM            8
  177. #define SHARE_PASSWD_PARMNUM          9
  178. #define SHARE_FILE_SD_PARMNUM       501
  179.  
  180. //
  181. // Single-field infolevels for NetShareSetInfo.
  182. //
  183.  
  184. #define SHARE_REMARK_INFOLEVEL          \
  185.             (PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM)
  186. #define SHARE_MAX_USES_INFOLEVEL        \
  187.             (PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM)
  188. #define SHARE_FILE_SD_INFOLEVEL         \
  189.             (PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM)
  190.  
  191. #define SHI1_NUM_ELEMENTS       4
  192. #define SHI2_NUM_ELEMENTS       10
  193.  
  194.  
  195. //
  196. // Share types (shi1_type and shi2_type fields).
  197. //
  198.  
  199. #define STYPE_DISKTREE          0
  200. #define STYPE_PRINTQ            1
  201. #define STYPE_DEVICE            2
  202. #define STYPE_IPC               3
  203. #define STYPE_DFS               100
  204.  
  205. #define STYPE_SPECIAL           0x80000000
  206.  
  207. #define SHI_USES_UNLIMITED      (DWORD)-1
  208.  
  209. #endif // _LMSHARE_
  210.  
  211. //
  212. // SESSION API
  213. //
  214.  
  215. #ifndef _LMSESSION_
  216. #define _LMSESSION_
  217.  
  218. //
  219. // Function Prototypes Session
  220. //
  221.  
  222. NET_API_STATUS NET_API_FUNCTION
  223. NetSessionEnum (
  224.     IN  LPTSTR      servername OPTIONAL,
  225.     IN  LPTSTR      UncClientName OPTIONAL,
  226.     IN  LPTSTR      username OPTIONAL,
  227.     IN  DWORD       level,
  228.     OUT LPBYTE      *bufptr,
  229.     IN  DWORD       prefmaxlen,
  230.     OUT LPDWORD     entriesread,
  231.     OUT LPDWORD     totalentries,
  232.     IN OUT LPDWORD  resume_handle OPTIONAL
  233.     );
  234.  
  235. NET_API_STATUS NET_API_FUNCTION
  236. NetSessionDel (
  237.     IN  LPTSTR      servername OPTIONAL,
  238.     IN  LPTSTR      UncClientName,
  239.     IN  LPTSTR      username
  240.     );
  241.  
  242. NET_API_STATUS NET_API_FUNCTION
  243. NetSessionGetInfo (
  244.     IN  LPTSTR      servername OPTIONAL,
  245.     IN  LPTSTR      UncClientName,
  246.     IN  LPTSTR      username,
  247.     IN  DWORD       level,
  248.     OUT LPBYTE      *bufptr
  249.     );
  250.  
  251.  
  252. //
  253. // Data Structures - Session
  254. //
  255.  
  256. typedef struct _SESSION_INFO_0 {
  257.     LPTSTR    sesi0_cname;              // client name (no backslashes)
  258. } SESSION_INFO_0, *PSESSION_INFO_0, *LPSESSION_INFO_0;
  259.  
  260. typedef struct _SESSION_INFO_1 {
  261.     LPTSTR    sesi1_cname;              // client name (no backslashes)
  262.     LPTSTR    sesi1_username;
  263.     DWORD     sesi1_num_opens;
  264.     DWORD     sesi1_time;
  265.     DWORD     sesi1_idle_time;
  266.     DWORD     sesi1_user_flags;
  267. } SESSION_INFO_1, *PSESSION_INFO_1, *LPSESSION_INFO_1;
  268.  
  269. typedef struct _SESSION_INFO_2 {
  270.     LPTSTR    sesi2_cname;              // client name (no backslashes)
  271.     LPTSTR    sesi2_username;
  272.     DWORD     sesi2_num_opens;
  273.     DWORD     sesi2_time;
  274.     DWORD     sesi2_idle_time;
  275.     DWORD     sesi2_user_flags;
  276.     LPTSTR    sesi2_cltype_name;
  277. } SESSION_INFO_2, *PSESSION_INFO_2, *LPSESSION_INFO_2;
  278.  
  279. typedef struct _SESSION_INFO_10 {
  280.     LPTSTR    sesi10_cname;             // client name (no backslashes)
  281.     LPTSTR    sesi10_username;
  282.     DWORD     sesi10_time;
  283.     DWORD     sesi10_idle_time;
  284. } SESSION_INFO_10, *PSESSION_INFO_10, *LPSESSION_INFO_10;
  285.  
  286. typedef struct _SESSION_INFO_502 {
  287.     LPTSTR    sesi502_cname;             // client name (no backslashes)
  288.     LPTSTR    sesi502_username;
  289.     DWORD     sesi502_num_opens;
  290.     DWORD     sesi502_time;
  291.     DWORD     sesi502_idle_time;
  292.     DWORD     sesi502_user_flags;
  293.     LPTSTR    sesi502_cltype_name;
  294.     LPTSTR    sesi502_transport;
  295. } SESSION_INFO_502, *PSESSION_INFO_502, *LPSESSION_INFO_502;
  296.  
  297.  
  298. //
  299. // Special Values and Constants - Session
  300. //
  301.  
  302.  
  303. //
  304. // Bits defined in sesi1_user_flags.
  305. //
  306.  
  307. #define SESS_GUEST          0x00000001  // session is logged on as a guest
  308. #define SESS_NOENCRYPTION   0x00000002  // session is not using encryption
  309.  
  310. #define SESI1_NUM_ELEMENTS  8
  311. #define SESI2_NUM_ELEMENTS  9
  312.  
  313. #endif // _LMSESSION_
  314.  
  315. //
  316. // CONNECTION API
  317. //
  318.  
  319. #ifndef _LMCONNECTION_
  320.  
  321. #define _LMCONNECTION_
  322.  
  323. //
  324. // Function Prototypes - CONNECTION
  325. //
  326.  
  327. NET_API_STATUS NET_API_FUNCTION
  328. NetConnectionEnum (
  329.     IN  LPTSTR  servername OPTIONAL,
  330.     IN  LPTSTR  qualifier,
  331.     IN  DWORD   level,
  332.     OUT LPBYTE  *bufptr,
  333.     IN  DWORD   prefmaxlen,
  334.     OUT LPDWORD entriesread,
  335.     OUT LPDWORD totalentries,
  336.     IN OUT LPDWORD resume_handle OPTIONAL
  337.     );
  338.  
  339. //
  340. // Data Structures - CONNECTION
  341. //
  342.  
  343. typedef struct _CONNECTION_INFO_0 {
  344.     DWORD   coni0_id;
  345. } CONNECTION_INFO_0, *PCONNECTION_INFO_0, *LPCONNECTION_INFO_0;
  346.  
  347. typedef struct _CONNECTION_INFO_1 {
  348.     DWORD   coni1_id;
  349.     DWORD   coni1_type;
  350.     DWORD   coni1_num_opens;
  351.     DWORD   coni1_num_users;
  352.     DWORD   coni1_time;
  353.     LPTSTR  coni1_username;
  354.     LPTSTR  coni1_netname;
  355. } CONNECTION_INFO_1, *PCONNECTION_INFO_1, *LPCONNECTION_INFO_1;
  356.  
  357. #endif // _LMCONNECTION_
  358.  
  359. //
  360. // FILE API
  361. //
  362.  
  363. #ifndef _LMFILE_
  364. #define _LMFILE_
  365.  
  366. //
  367. // Function Prototypes - FILE
  368. //
  369.  
  370. NET_API_STATUS NET_API_FUNCTION
  371. NetFileClose (
  372.     IN LPTSTR   servername OPTIONAL,
  373.     IN DWORD    fileid
  374.     );
  375.  
  376. NET_API_STATUS NET_API_FUNCTION
  377. NetFileEnum (
  378.     IN  LPTSTR      servername OPTIONAL,
  379.     IN  LPTSTR      basepath OPTIONAL,
  380.     IN  LPTSTR      username OPTIONAL,
  381.     IN  DWORD       level,
  382.     OUT LPBYTE      *bufptr,
  383.     IN  DWORD       prefmaxlen,
  384.     OUT LPDWORD     entriesread,
  385.     OUT LPDWORD     totalentries,
  386.     IN OUT LPDWORD  resume_handle OPTIONAL
  387.     );
  388.  
  389. NET_API_STATUS NET_API_FUNCTION
  390. NetFileGetInfo (
  391.     IN  LPTSTR  servername OPTIONAL,
  392.     IN  DWORD   fileid,
  393.     IN  DWORD   level,
  394.     OUT LPBYTE  *bufptr
  395.     );
  396.  
  397. //
  398. // Data Structures - File
  399. //
  400.  
  401. //  File APIs are available at information levels 2 & 3 only. Levels 0 &
  402. //  1 are not supported.
  403. //
  404.  
  405. typedef struct _FILE_INFO_2 {
  406.     DWORD     fi2_id;
  407. } FILE_INFO_2, *PFILE_INFO_2, *LPFILE_INFO_2;
  408.  
  409. typedef struct _FILE_INFO_3 {
  410.     DWORD     fi3_id;
  411.     DWORD     fi3_permissions;
  412.     DWORD     fi3_num_locks;
  413.     LPTSTR    fi3_pathname;
  414.     LPTSTR    fi3_username;
  415. } FILE_INFO_3, *PFILE_INFO_3, *LPFILE_INFO_3;
  416.  
  417. //
  418. // Special Values and Constants - File
  419. //
  420.  
  421. //
  422. // bit values for permissions
  423. //
  424.  
  425. #define PERM_FILE_READ      0x1 // user has read access
  426. #define PERM_FILE_WRITE     0x2 // user has write access
  427. #define PERM_FILE_CREATE    0x4 // user has create access
  428.  
  429. #ifdef __cplusplus
  430. }
  431. #endif
  432.  
  433. #endif // _LMFILE_
  434.