home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Compilers / digital marsC compier / dm / include / win32 / Lmshare.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-08  |  10.2 KB  |  444 lines

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