home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 May / PCP163A.iso / Runimage / Cbuilder4 / Include / LMSHARE.H < prev    next >
Encoding:
C/C++ Source or Header  |  1999-01-26  |  11.7 KB  |  477 lines

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