home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / svrapi.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  47KB  |  1,318 lines

  1. /********************************************************************/
  2. /**                     Microsoft Windows                          **/
  3. /**               Copyright(c) Microsoft Corp., 1995               **/
  4. /********************************************************************/
  5.  
  6. /********************************************************************
  7.  *                                                                  *
  8.  *  About this file ...  SVRAPI.H                                   *
  9.  *                                                                  *
  10.  *  This file contains information about the NetAccess,             *
  11.  *  NetConnection, NetFile, NetServer, NetSession, NetShare and     *
  12.  *  NetSecurity APIs.                                               *
  13.  *  There is a section for each set of APIs.                        *
  14.  *  Each section contains:                                          *
  15.  *                                                                  *
  16.  *      Function prototypes.                                        *
  17.  *                                                                  *
  18.  *      Data structure templates.                                   *
  19.  *                                                                  *
  20.  *      Definition of special values.                               *
  21.  *                                                                  *
  22.  *      Description of level of Win95 peer server support           *
  23.  *
  24.  *  For background information refer to the Lan Manager Programmer's
  25.  *  Reference.
  26.  *
  27.  *  WARNING:
  28.  *      The APIs documented herein are not guaranteed to be supported
  29.  * in future versions of Windows. Their primary purpose is to       *
  30.  * administer Win95 peer servers.                                   *
  31.  *                                                                  *
  32.  ********************************************************************/
  33.  
  34. /*
  35.  *      NOTE:  Lengths of ASCIIZ strings are given as the maximum
  36.  *      strlen() value.  This does not include space for the
  37.  *      terminating 0-byte.  When allocating space for such an item,
  38.  *      use the form:
  39.  *
  40.  *              char username[LM20_UNLEN+1];
  41.  *
  42.  *      An exception to this is the PATHLEN manifest, which does
  43.  *      include space for the terminating 0-byte.
  44.  *
  45.  *      User names, computer names and share names should be
  46.  *      upper-cased by the caller and drawn from the ANSI 
  47.  *      character set.
  48.  * 
  49.  */
  50.  
  51. /*NOINC*/
  52. #ifndef SVRAPI_INCLUDED
  53. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  54. #define SVRAPI_INCLUDED
  55.  
  56. #include <lmcons.h>
  57. #include <lmerr.h>
  58.  
  59. #ifndef RC_INVOKED
  60. #pragma pack(1)         /* Assume byte packing throughout */
  61. #endif
  62.  
  63. #ifdef __cplusplus
  64. extern "C" {            /* Assume C declarations for C++ */
  65. #endif    /* __cplusplus */
  66.  
  67. #if !defined(_SVRAPI_)
  68. #define API_FUNCTION DECLSPEC_IMPORT API_RET_TYPE APIENTRY
  69. #else
  70. #define API_FUNCTION API_RET_TYPE APIENTRY
  71. #endif
  72.  
  73. /*INC*/
  74.  
  75.  
  76. /****************************************************************
  77.  *                                                              *
  78.  *                 Access Class                                 *
  79.  *                                                              *
  80.  ****************************************************************/
  81.  
  82.  
  83. /****************************************************************
  84.  *                                                              *
  85.  *                  Function prototypes - ACCESS                *
  86.  *
  87.  *     Requires User level security to be enabled
  88.  *                                                              *
  89.  *    Peer Server Support:
  90.  *      Remote support of these APIs on NWSERVER is limited as
  91.  *      described below:
  92.  *
  93.  *        NetAccessAdd -
  94.  *                local and remote VSERVER - level 2
  95.  *              remote NWSERVER -          level 2
  96.  *        NetAccessCheck - local only
  97.  *      NetAccessDel - 
  98.  *              local, remote NWSERVER and remote VSERVER
  99.  *      NetAccessEnum -
  100.  *              sLevel 0 on remote NWSERVER (fRecursive = 1),
  101.  *              slevel 0, 1, 2 on local and remote VSERVER
  102.  *        NetAccessGetInfo -
  103.  *               all sLevels on local and remote VSERVER,
  104.  *               sLevel 0, 12 on remote NWSERVER
  105.  *      NetAccessSetInfo - 
  106.  *              sLevel 1, 12 on local and remote VSERVER,
  107.  *              sLevel 12 on remote NWSERVER
  108.  *              parmnum = PARMNUM_ALL only
  109.  *      NetAccessGetUserPerms - local and remote VSERVER only
  110.  ****************************************************************/
  111.  
  112. extern API_FUNCTION
  113.   NetAccessAdd ( const char FAR * pszServer,
  114.                  short            sLevel,
  115.                  char FAR *       pbBuffer,
  116.                  unsigned short   cbBuffer );
  117.  
  118. extern API_FUNCTION
  119.   NetAccessCheck ( char FAR *           pszReserved,
  120.                    char FAR *           pszUserName,
  121.                    char FAR *           pszResource,
  122.                    unsigned short       usOperation,
  123.                    unsigned short FAR * pusResult );
  124.  
  125. extern API_FUNCTION
  126.   NetAccessDel ( const char FAR * pszServer,
  127.                  char FAR *       pszResource );
  128.  
  129. extern API_FUNCTION
  130.   NetAccessEnum ( const char FAR *     pszServer,
  131.                   char FAR *           pszBasePath,
  132.                   short                fsRecursive,
  133.                   short                sLevel,
  134.                   char FAR *           pbBuffer,
  135.                   unsigned short       cbBuffer,
  136.                   unsigned short FAR * pcEntriesRead,
  137.                   unsigned short FAR * pcTotalAvail );
  138.  
  139. extern API_FUNCTION
  140.   NetAccessGetInfo ( const char FAR *     pszServer,
  141.                      char FAR *           pszResource,
  142.                      short                sLevel,
  143.                      char FAR *           pbBuffer,
  144.                      unsigned short       cbBuffer,
  145.                      unsigned short FAR * pcbTotalAvail );
  146.  
  147. extern API_FUNCTION
  148.   NetAccessSetInfo ( const char FAR * pszServer,
  149.                      char FAR *       pszResource,
  150.                      short            sLevel,
  151.                      char FAR *       pbBuffer,
  152.                      unsigned short   cbBuffer,
  153.                      short            sParmNum );
  154.  
  155. extern API_FUNCTION
  156.   NetAccessGetUserPerms ( char FAR *           pszServer,
  157.                           char FAR *           pszUgName,
  158.                           char FAR *           pszResource,
  159.                           unsigned short FAR * pusPerms );
  160.  
  161.  
  162. /****************************************************************
  163.  *                                                              *
  164.  *              Data structure templates - ACCESS               *
  165.  *                                                              *
  166.  ****************************************************************/
  167.  
  168. struct access_list {
  169.         char            acl_ugname[LM20_UNLEN+1];
  170.         char            acl_ugname_pad_1;
  171.         short           acl_access;
  172. };      /* access_list */
  173.  
  174. struct access_list_2
  175. {
  176.         char FAR *      acl2_ugname;
  177.         unsigned short  acl2_access;
  178. };      /* access_list_2 */
  179.              
  180. struct access_list_12
  181. {
  182.         char FAR *      acl12_ugname;
  183.         unsigned short  acl12_access;
  184. };      /* access_list_12 */
  185.              
  186. struct access_info_0 {
  187.         char FAR *      acc0_resource_name;
  188. };      /* access_info_0 */
  189.  
  190. struct access_info_1 {
  191.         char  FAR *     acc1_resource_name;
  192.         short           acc1_attr;                      /* See values below */
  193.         short           acc1_count;
  194. };      /* access_info_1 */
  195.  
  196. struct access_info_2 
  197. {
  198.         char  FAR *     acc2_resource_name;
  199.         short           acc2_attr;
  200.         short           acc2_count;
  201. };      /* access_info_2 */
  202.  
  203. struct access_info_10 {
  204.         char FAR *      acc10_resource_name;
  205. };      /* access_info_10 */
  206.  
  207. struct access_info_12 
  208. {
  209.         char  FAR *     acc12_resource_name;
  210.         short           acc12_attr;
  211.         short           acc12_count;
  212. };      /* access_info_12 */
  213.  
  214.  
  215. /****************************************************************
  216.  *                                                              *
  217.  *              Special values and constants - ACCESS           *
  218.  *                                                              *
  219.  ****************************************************************/
  220.  
  221. /*
  222.  *      Maximum number of permission entries for each resource.
  223.  */
  224.  
  225. #define MAXPERMENTRIES  64
  226.  
  227.  
  228. /*
  229.  *      Bit values for the access permissions.  ACCESS_ALL is a handy
  230.  *      way to specify maximum permissions.  These are used in
  231.  *      acl_access field of access_list structures.
  232.  */
  233. /*NOINC*/
  234. #define         ACCESS_NONE     0
  235. #define         ACCESS_ALL     (ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM|ACCESS_FINDFIRST)
  236. /*INC*/
  237. #define         ACCESS_READ     0x1
  238. #define         ACCESS_WRITE    0x2
  239. #define         ACCESS_CREATE   0x4
  240. #define         ACCESS_EXEC     0x8
  241. #define         ACCESS_DELETE   0x10
  242. #define         ACCESS_ATRIB    0x20
  243. #define         ACCESS_PERM     0x40
  244. #define         ACCESS_FINDFIRST 0x80
  245.  
  246. #define         ACCESS_GROUP    0x8000
  247.  
  248. /*
  249.  *      Bit values for the acc1_attr field of the access_info_1 structure.
  250.  *      Only one bit is currently defined.
  251.  */
  252.  
  253. #define         ACCESS_AUDIT            0x1
  254.  
  255. /*
  256.  *      Parmnum value for NetAccessSetInfo.
  257.  */
  258.  
  259. #define         ACCESS_ATTR_PARMNUM     2
  260.  
  261.  
  262. /*
  263.  *      ACCESS_LETTERS defines a letter for each bit position in
  264.  *      the acl_access field of struct access_list.  Note that some
  265.  *      bits have a corresponding letter of ' ' (space).
  266.  */
  267.  
  268. #define         ACCESS_LETTERS          "RWCXDAP         "
  269.  
  270.  
  271.  
  272. /****************************************************************
  273.  *                                *
  274.  *          Share Class                            *
  275.  *                                *
  276.  ****************************************************************/
  277.  
  278. /****************************************************************
  279.  *                                                              *
  280.  *              Function prototypes - SHARE                     *
  281.  *                                                              *
  282.  *    Peer Server Support
  283.  *         NetShareAdd() - sLevel 50 on VSERVER and NWSERVER
  284.  *         NetShareDel() - VSERVER and NWSERVER
  285.  *        NetShareEnum() - sLevel 1,50 on VSERVER; 50 on NWSERVER
  286.  *      NetShareGetInfo() - sLevel 50 on VSERVER, NWSERVER
  287.  *         NetShareSetInfo() - sLevel 50, sParmNum PARMNUM_ALL
  288.  *                         on VSERVER, NWSERVER
  289.  ****************************************************************/
  290.  
  291. /***    NetShareAdd - add a new share to the server tables
  292.  *
  293.  *    NetShareAdd( servername, level, buf, buflen )
  294.  *
  295.  *    ENTRY:    servername - asciz string containing name of server
  296.  *                       or NULL if local
  297.  *        level- Must be 50 for Win95 peer servers.
  298.  *        buf - far ptr to struct share_info
  299.  *        buflen - unsigned int length of buffer
  300.  *
  301.  *    EXIT:    0 = success
  302.  *        ERROR_INVALID_LEVEL
  303.  *      ERROR_BAD_NETPATH
  304.  *        ERROR_INVALID_PARAMETER
  305.  *        NERR_UnknownDevDir
  306.  *        NERR_ShareExists
  307.  *        NERR_UnknownServer
  308.  *        NERR_ServerNotStarted
  309.  *        NERR_RedirectedPath
  310.  *        NERR_DuplicateShare
  311.  *        NERR_BufTooSmall
  312.  *        ERROR_NOT_ENOUGH_MEMORY
  313.  *
  314.  */
  315. extern API_FUNCTION
  316.   NetShareAdd ( const char FAR * pszServer,
  317.                 short            sLevel,
  318.                 const char FAR * pbBuffer,
  319.                 unsigned short   cbBuffer );
  320.  
  321. /***    NetShareDel (Admin only)
  322.  *
  323.  *    API_FUNCTION NetShareDel( servername, netname, reserved )
  324.  *
  325.  *    ENTRY
  326.  *
  327.  *    char FAR *  servername;     asciz remote srv name, NULL if local
  328.  *    char FAR *  netname;        asciz network name of share being deleted
  329.  *    unsigned short reserved;    MBZ
  330.  *
  331.  *    EXIT
  332.  *
  333.  *    0 = success
  334.  *    NERR_NetNotStarted
  335.  *  ERROR_BAD_NETPATH
  336.  *    NERR_ServerNotStarted
  337.  *    NERR_NetNameNotFound
  338.  *    ERROR_INVALID_PARAMETER
  339.  *
  340.  *
  341.  *    Note:  Deleting a share will also delete any existing connections
  342.  *        to the shared resource, and close open files within the
  343.  *        connections.
  344.  */
  345. extern API_FUNCTION
  346.   NetShareDel ( const char FAR * pszServer,
  347.                 const char FAR * pszNetName,
  348.                 unsigned short   usReserved );
  349.  
  350. /* 2.1  NetShareEnum
  351.  *
  352.  * API_FUNCTION
  353.  * NetShareEnum( servername, level, buf, buflen, entriesread, totalentries )
  354.  * char FAR *          servername;     asciz remote server name or NULL if local
  355.  * short               sLevel;         level of detail requested; 1 or 50
  356.  * char FAR *          pbBuffer;       buffer to return entries in
  357.  * unsigned short      cbBuffer;       size of buffer on call
  358.  * unsigned short FAR *pcEntriesRead;  # of entries supplied on return
  359.  * unsigned short FAR *pcTotalAvail ;  total # of entries available
  360.  *
  361.  * Supply information about existing shares at specified level.
  362.  *
  363.  * Buffer contents on response (format for a single entry):
  364.  *     Level 1 contains a "struct share_info_1".
  365.  *     Level 50 contains a "struct share_info_50".
  366.  *
  367.  * Returns 0 if successful.  Possible error returns:
  368.  *  ERROR_INVALID_LEVEL
  369.  *  ERROR_BAD_NETPATH
  370.  *  NERR_NetNotStarted
  371.  *  NERR_ServerNotStarted
  372.  *  ERROR_MORE_DATA
  373.  */
  374. extern API_FUNCTION
  375.   NetShareEnum ( const char FAR *     pszServer,
  376.                  short                sLevel,
  377.                  char FAR *           pbBuffer,
  378.                  unsigned short       cbBuffer,
  379.                  unsigned short FAR * pcEntriesRead,
  380.                  unsigned short FAR * pcTotalAvail );
  381.  
  382. /* 2.2  NetShareGetInfo
  383.  *
  384.  * Purpose: Read complete information about a single outstanding share.
  385.  *
  386.  * API_FUNCTION
  387.  * NetShareGetInfo( servername, netname, level, buf, buflen, totalavail )
  388.  * char FAR *          servername;     asciz remote server name or NULL if local
  389.  * char FAR *          netname;        asciz network name of share being queried
  390.  * short               level;          level of info requested (50 for Win95 peer servers)
  391.  * char FAR *          buf;            for returned entry
  392.  * unsigned short      buflen;         size of buffer
  393.  * unsigned short FAR *totalavail;     total size needed for buffer
  394.  *
  395.  * Buffer contents on response:
  396.  *     Level 50 contains a "struct share_info_50".
  397.  *
  398.  * Returns 0 if successful.  Possible error returns:
  399.  *  ERROR_INVALID_LEVEL
  400.  *  ERROR_INVALID_PARAMETER
  401.  *  ERROR_BAD_NETPATH
  402.  *  NERR_NetNotStarted
  403.  *  NERR_ServerNotStarted
  404.  *  NERR_NetNameNotFound
  405.  *  NERR_MoreData
  406.  *  NERR_BufTooSmall
  407.  */
  408. extern API_FUNCTION
  409.   NetShareGetInfo ( const char FAR *     pszServer,
  410.                     const char FAR *     pszNetName,
  411.                     short                sLevel,
  412.                     char FAR *           pbBuffer,
  413.                     unsigned short       cbBuffer,
  414.                     unsigned short FAR * pcbTotalAvail );
  415.  
  416. /***    NetShareSetInfo (Admin only)
  417.  *
  418.  *    API_FUNCTION NetShareSetInfo( servername,
  419.  *                    netname,
  420.  *                    level,
  421.  *                    buf,
  422.  *                    buflen,
  423.  *                    parmnum )
  424.  *                    
  425.  *    ENTRY
  426.  *
  427.  *    servername;     asciz remote srv name, NULL if local
  428.  *    netname;        asciz network name of share being set
  429.  *    level;        level of info provided (50 for Win95 peer servers)
  430.  *    buf;            contents described below
  431.  *    buflen;         size of buffer
  432.  *    parmnum;        must be PARMNUM_ALL for Win95 peer servers
  433.  *
  434.  *    Buffer contents on call if parmnum is zero:
  435.  *           Level 50 contains a "struct share_info_50".
  436.  *
  437.  *    Settable fields are:
  438.  *          shi_remark
  439.  *          shi_passwd
  440.  *
  441.  *    EXIT
  442.  *
  443.  *    0 = success
  444.  *    NERR_NetNotStarted
  445.  *    NERR_ServerNotStarted
  446.  *    NERR_NetNameNotFound
  447.  *    ERROR_INVALID_LEVEL
  448.  *     NERR_BufTooSmall
  449.  *    NERR_RemoteErr
  450.  *    ERROR_MORE_DATA
  451.  *    ERROR_INVALID_PARAMETER
  452.  ***/
  453. extern API_FUNCTION
  454.   NetShareSetInfo ( const char FAR * pszServer,
  455.                     const char FAR * pszNetName,
  456.                     short            sLevel,
  457.                     const char FAR * pbBuffer,
  458.                     unsigned short   cbBuffer,
  459.                     short            sParmNum );
  460.  
  461.  
  462. /****************************************************************
  463.  *                                *
  464.  *          Data structure templates - SHARE        *
  465.  *
  466.  ****************************************************************/
  467.  
  468. struct share_info_0 {
  469.     char        shi0_netname[LM20_NNLEN+1];
  470. };  /* share_info_0 */
  471.  
  472. struct share_info_1 {
  473.     char        shi1_netname[LM20_NNLEN+1];
  474.     char        shi1_pad1;
  475.     unsigned short    shi1_type;
  476.     char FAR *        shi1_remark;
  477. };  /* share_info_1 */
  478.  
  479. struct share_info_2 {
  480.     char        shi2_netname[LM20_NNLEN+1];
  481.     char        shi2_pad1;
  482.     unsigned short    shi2_type;
  483.     char FAR *        shi2_remark;
  484.     unsigned short    shi2_permissions;
  485.     unsigned short    shi2_max_uses;
  486.     unsigned short    shi2_current_uses;
  487.     char FAR *        shi2_path;
  488.     char         shi2_passwd[SHPWLEN+1];
  489.     char        shi2_pad2;
  490. };  /* share_info_2 */
  491.  
  492. struct share_info_50 {
  493.     char        shi50_netname[LM20_NNLEN+1];    /* share name */
  494.     unsigned char     shi50_type;                 /* see below */
  495.     unsigned short    shi50_flags;                /* see below */
  496.     char FAR *    shi50_remark;                   /* ANSI comment string */
  497.     char FAR *    shi50_path;                     /* shared resource */
  498.     char        shi50_rw_password[SHPWLEN+1];   /* read-write password (share-level security) */
  499.     char        shi50_ro_password[SHPWLEN+1];   /* read-only password (share-level security) */
  500. };    /* share_info_50 */
  501.  
  502.  
  503. /****************************************************************
  504.  *                                *
  505.  *          Special values and constants - SHARE        *
  506.  *                                *
  507.  ****************************************************************/
  508.  
  509. /* Field values for shi50_flags; */
  510.  
  511. /* These flags are relevant for share-level security on VSERVER
  512.  * When operating with user-level security, use SHI50F_FULL - the actual
  513.  * access rights are determined by the NetAccess APIs.
  514.  */
  515. #define    SHI50F_RDONLY        0x0001
  516. #define    SHI50F_FULL            0x0002
  517. #define    SHI50F_DEPENDSON    (SHI50F_RDONLY|SHI50F_FULL)
  518. #define    SHI50F_ACCESSMASK    (SHI50F_RDONLY|SHI50F_FULL)
  519.  
  520. /* The share is restored on system startup */
  521. #define    SHI50F_PERSIST        0x0100
  522. /* The share is not normally visible  */
  523. #define SHI50F_SYSTEM        0x0200
  524.  
  525.  
  526. /*
  527.  *    Values for parmnum parameter to NetShareSetInfo.
  528.  */
  529.  
  530. #ifndef PARMNUM_ALL
  531. #define PARMNUM_ALL                0
  532. #endif
  533.  
  534. #define    SHI_REMARK_PARMNUM        4
  535. #define    SHI_PERMISSIONS_PARMNUM        5
  536. #define    SHI_MAX_USES_PARMNUM        6
  537. #define    SHI_PASSWD_PARMNUM        9
  538.  
  539. #define    SHI1_NUM_ELEMENTS        4
  540. #define    SHI2_NUM_ELEMENTS        10
  541.  
  542.  
  543. /*
  544.  *    Share types .
  545.  *  
  546.  *  STYPE_DISKTREE and STYPE_PRINTQ are recognized on peer servers
  547.  */
  548.  
  549. #define STYPE_DISKTREE             0       /* disk share */
  550. #define STYPE_PRINTQ               1       /* printer share */
  551. #define STYPE_DEVICE               2
  552. #define STYPE_IPC                  3
  553.  
  554. #define SHI_USES_UNLIMITED        -1
  555.  
  556.  
  557.  
  558. /****************************************************************
  559.  *                                *
  560.  *          Session Class                            *
  561.  *                                *
  562.  ****************************************************************/
  563.  
  564. /****************************************************************
  565.  *                                                              *
  566.  *              Function prototypes - SESSION                   *
  567.  *
  568.  *    Peer Server Support                                         *
  569.  *      NetSessionDel() - NWSERVER and VSERVER                     *
  570.  *        NetSessionEnum() - sLevel 50 on NWSERVER and VSERVER    *
  571.  *        NetSessionGetInfo() - not supported on peer servers     *
  572.  ****************************************************************/
  573.  
  574. /***    NetSessionDel (Admin only)
  575.  *
  576.  *
  577.  *    API_FUNCTION NetSessionDel( servername, clientname, reserved )
  578.  *
  579.  *    ENTRY
  580.  *
  581.  *     servername;     asciz remote srv name, NULL if local
  582.  *    clientname;     asciz remote computer name (returned by NetSessionEnum)
  583.  *                                   of session being deleted
  584.  *                  In the case of a Win95 NWSERVER, the clientname should be the
  585.  *                  ascii connection number
  586.  *    reserved;       session key returned by NetSessionEnum
  587.  *
  588.  *     EXIT
  589.  *
  590.  *    0 = success
  591.  *    NERR_NetNotStarted
  592.  *  ERROR_BAD_NETPATH
  593.  *    NERR_ServerNotStarted
  594.  *    ERROR_INVALID_LEVEL
  595.  *    NERR_RemoteErr
  596.  *    NERR_RemoteOnly
  597.  *     ERROR_ACCESS_DENIED
  598.  *    NERR_BufTooSmall
  599.  *    NERR_ClientNameNotFound
  600.  *
  601.  ***/
  602. extern API_FUNCTION
  603.   NetSessionDel ( const char FAR * pszServer,
  604.                   const char FAR * pszClientName,
  605.                   short            sReserved );
  606.  
  607. /***    NetSessionEnum
  608.  *
  609.  *    API_FUNCTION NetSessionEnum( servername,
  610.  *                       level,
  611.  *                       buf,
  612.  *                       buflen,
  613.  *                       entriesread,
  614.  *                       totalentries )
  615.  *    ENTRY
  616.  *                
  617.  *    servername;     asciz remote srv name, NULL if local
  618.  *     level;          level of detail requested; (50 for Win95 peer servers)
  619.  *    buf;            for returned entries
  620.  *    buflen;         size of buffer on call;
  621.  *    entriesread;    # of entries supplied on return
  622.  *    totalentries;   total # of entries available
  623.  *
  624.  *     EXIT
  625.  *
  626.  *    0 = success
  627.  *    NERR_NetNotStarted
  628.  *    NERR_ServerNotStarted
  629.  *  ERROR_BAD_NETPATH
  630.  *    ERROR_INVALID_LEVEL
  631.  *    NERR_RemoteErr
  632.  *    ERROR_MORE_DATA
  633.  *     ERROR_ACCESS_DENIED
  634.  *
  635.  *    Buffer contains an array of session_info structures.
  636.  *
  637.  ***/
  638. extern API_FUNCTION
  639.   NetSessionEnum ( const char FAR *     pszServer,
  640.                    short                sLevel,
  641.                    char FAR *           pbBuffer,
  642.                    unsigned short       cbBuffer,
  643.                    unsigned short FAR * pcEntriesRead,
  644.                    unsigned short FAR * pcTotalAvail );
  645.  
  646.  
  647. extern API_FUNCTION
  648.   NetSessionGetInfo ( const char FAR *     pszServer,
  649.                       const char FAR *     pszClientName,
  650.                       short                sLevel,
  651.                       char FAR *           pbBuffer,
  652.                       unsigned short       cbBuffer,
  653.                       unsigned short FAR * pcbTotalAvail );
  654.  
  655.  
  656. /****************************************************************
  657.  *                                *
  658.  *        Data structure templates - SESSION        *
  659.  *                                *
  660.  ****************************************************************/
  661.  
  662.  
  663. struct session_info_0 {
  664.     char FAR *        sesi0_cname;
  665. };  /* session_info_0 */
  666.  
  667. struct session_info_1 {
  668.     char FAR *        sesi1_cname;
  669.     char FAR *        sesi1_username;
  670.     unsigned short    sesi1_num_conns;
  671.     unsigned short    sesi1_num_opens;
  672.     unsigned short    sesi1_num_users;
  673.     unsigned long    sesi1_time;
  674.     unsigned long    sesi1_idle_time;
  675.     unsigned long    sesi1_user_flags;
  676. };  /* session_info_1 */
  677.  
  678. struct session_info_2 {
  679.     char FAR *         sesi2_cname;
  680.     char FAR *         sesi2_username;
  681.     unsigned short     sesi2_num_conns;
  682.     unsigned short     sesi2_num_opens;
  683.     unsigned short     sesi2_num_users;
  684.     unsigned long     sesi2_time;
  685.     unsigned long     sesi2_idle_time;
  686.     unsigned long     sesi2_user_flags;
  687.     char FAR *         sesi2_cltype_name;
  688. };  /* session_info_2 */
  689.  
  690. struct session_info_10 {
  691.         char FAR *     sesi10_cname;
  692.         char FAR *     sesi10_username;
  693.         unsigned long  sesi10_time;
  694.         unsigned long  sesi10_idle_time;
  695. };  /* session_info_10 */
  696.  
  697.  
  698. struct session_info_50 {
  699.     char FAR * sesi50_cname;            //remote computer name (connection id in Netware)
  700.     char FAR * sesi50_username;
  701.     unsigned long sesi50_key;           // used to delete session (not used in Netware)
  702.     unsigned short sesi50_num_conns;
  703.     unsigned short sesi50_num_opens;    //not available in Netware
  704.     unsigned long sesi50_time;
  705.     unsigned long sesi50_idle_time;        //not available in Netware
  706.     unsigned char sesi50_protocol;
  707.     unsigned char pad1;
  708. };    /* session_info_50 */
  709.  
  710.  
  711. /****************************************************************
  712.  *                                *
  713.  *          Special values and constants - SESSION        *
  714.  *                                *
  715.  ****************************************************************/
  716.  
  717. /*
  718.  *    Bits defined in sesi1_user_flags.
  719.  */
  720.  
  721. #define SESS_GUEST        1    /* session is logged on as a guest */
  722. #define SESS_NOENCRYPTION    2    /* session is not using encryption */
  723.  
  724.  
  725. #define SESI1_NUM_ELEMENTS    8
  726. #define SESI2_NUM_ELEMENTS    9
  727.  
  728.  
  729.  
  730. /****************************************************************
  731.  *                                *
  732.  *          Connection Class                    *
  733.  *                                *
  734.  ****************************************************************/
  735.  
  736. /****************************************************************
  737.  *                                                              *
  738.  *              Function prototypes - CONNECTION                *
  739.  *                                                              *
  740.  *  Peer Server Support
  741.  *         NetConnectionEnum -
  742.  *               sLevel 50 on VSERVER and NWSERVER              *
  743.  *               On NWSERVER, this API doesnt provide more      *
  744.  *               information than NetSessionEnum
  745.  ****************************************************************/
  746.  
  747. /***    NetConnectionEnum (Admin only)
  748.  *
  749.  *    API_FUNCTION NetConnectionEnum( servername, 
  750.  *                      qualifier, 
  751.  *                      level, 
  752.  *                      buf, 
  753.  *                      buflen, 
  754.  *                      totalavail )
  755.  *
  756.  *    ENTRY
  757.  *
  758.  *    servername;     asciz remote srv name, NULL if local
  759.  *    qualifier;      netname or client computer name.
  760.  *                  computer name should be prefaced by '\\'.
  761.  *    level;            level of info requested
  762.  *    buf;            for returned entry
  763.  *    buflen;         size of buffer 
  764.  *    totalavail;     total size needed for buffer
  765.  *
  766.  *    EXIT
  767.  *
  768.  *    0 = success
  769.  *    NERR_NetNotStarted
  770.  *    NERR_ServerNotStarted
  771.  *    ERROR_INVALID_LEVEL
  772.  *    NERR_RemoteErr
  773.  *    NERR_RemoteOnly        (DOS)
  774.  *    ERROR_MORE_DATA
  775.  *     ERROR_ACCESS_DENIED
  776.  *    NERR_ClientNameNotFound
  777.  *    NERR_NetNameNotFound
  778.  *
  779.  *    Buffer contents on response (format for a single entry):
  780.  *           Level 50 contains a "struct connection_info_50".
  781.  ***/
  782. extern API_FUNCTION
  783.   NetConnectionEnum ( const char FAR *     pszServer,
  784.                       const char FAR *     pszQualifier,   /* upper case */
  785.                       short                sLevel,
  786.                       char FAR *           pbBuffer,
  787.                       unsigned short       cbBuffer,
  788.                       unsigned short FAR * pcEntriesRead,
  789.                       unsigned short FAR * pcTotalAvail );
  790.  
  791.  
  792. /****************************************************************
  793.  *                                *
  794.  *          Data structure templates - CONNECTION        *
  795.  *                                *
  796.  ****************************************************************/
  797.  
  798. struct connection_info_0 {
  799.     unsigned short    coni0_id;
  800. };  /* connection_info_0 */
  801.  
  802. struct connection_info_1 {
  803.     unsigned short    coni1_id;
  804.     unsigned short    coni1_type;
  805.     unsigned short    coni1_num_opens;
  806.     unsigned short    coni1_num_users;
  807.     unsigned long    coni1_time;
  808.     char FAR *        coni1_username;
  809.     char FAR *        coni1_netname;
  810. };  /* connection_info_1 */
  811.  
  812. struct connection_info_50 {
  813.     unsigned short coni50_type;         // share type
  814.     unsigned short coni50_num_opens;    //not used in Netware
  815.     unsigned long coni50_time;
  816.     char FAR * coni50_netname;          // share name          
  817.     char FAR * coni50_username;         // user connected to share
  818. }; /* connection_info_50 */
  819.  
  820.  
  821. /****************************************************************
  822.  *                                *
  823.  *          File Class                            *
  824.  *                                *
  825.  ****************************************************************/
  826.  
  827.  
  828. /****************************************************************
  829.  *                                                              *
  830.  *              Function prototypes - FILE                      *
  831.  *                                                              *
  832.  *  Peer Server Support
  833.  *         NetFileEnum - sLevel 50 on VSERVER and NWSERVER        *
  834.  *      NetFileClose2 - VSERVER only
  835.  ****************************************************************/
  836.  
  837. /***    NetFileClose2
  838.  *
  839.  *    int FAR PASCAL    NetFileClose2( servername, fileid )
  840.  *
  841.  *    ENTRY
  842.  *
  843.  *    servername;     asciz remote srv name, NULL if local
  844.  *    fileid;         file id supplied by NetFileEnum
  845.  *
  846.  *    EXIT
  847.  *
  848.  *    0 = success
  849.  *    NERR_NetNotStarted
  850.  *    NERR_ServerNotStarted
  851.  *    NERR_RemoteErr
  852.  *     ERROR_ACCESS_DENIED
  853.  *    NERR_FileIdNotFound
  854.  *
  855.  ***/
  856. extern API_FUNCTION
  857.   NetFileClose2 ( const char FAR * pszServer,
  858.                   unsigned long    ulFileId );
  859.  
  860. /***    NetFileEnum (Admin Only)
  861.  *
  862.  *    int FAR PASCAL NetFileEnum( servername,
  863.  *                    level, 
  864.  *                    buf, 
  865.  *                    buflen, 
  866.  *                    entriesread, 
  867.  *                    totalentries )
  868.  *
  869.  *    ENTRY
  870.  *
  871.  *    servername;     asciz remote srv name, NULL if local
  872.  *    basepath;    path qualifier for file matching
  873.  *              (not used for Win95 NWSERVER)
  874.  *    level;          level of detail requested; (50 for Win95 peer servers)
  875.  *    buf;            for returned entries
  876.  *    buflen;         size of buffer on call; 
  877.  *    entriesread;    # of entries supplied on return
  878.  *    totalentries;   total # of entries available
  879.  *
  880.  *     EXIT
  881.  *
  882.  *    0 = success
  883.  *    NERR_RemoteOnly
  884.  *    NERR_NetNotStarted
  885.  *    NERR_ServerNotStarted
  886.  *    ERROR_INVALID_LEVEL
  887.  *    NERR_RemoteErr
  888.  *    ERROR_MORE_DATA
  889.  *     ERROR_ACCESS_DENIED
  890.  *
  891.  *    
  892.  *    Buffer contents on response (format for a single entry):
  893.  *           Level 0 contains a "struct file_info_0".
  894.  *           Level 50 contains a "struct file_info_50".
  895.  *
  896.  ***/
  897.  
  898. extern API_FUNCTION
  899.   NetFileEnum ( const char FAR *     pszServer,
  900.                 const char FAR *     pszBasePath,
  901.                 short                sLevel,
  902.                 char FAR *           pbBuffer,
  903.                 unsigned short       cbBuffer,
  904.                 unsigned short FAR * pcEntriesRead,
  905.                 unsigned short FAR * pcTotalAvail );
  906.  
  907.  
  908. /****************************************************************
  909.  *                                *
  910.  *          Data structure templates - FILE            *
  911.  *                                *
  912.  ****************************************************************/
  913.  
  914. struct file_info_0 {
  915.     unsigned short    fi0_id;
  916. };  /* file_info_0 */
  917.  
  918. struct file_info_1 {
  919.     unsigned short    fi1_id;
  920.     unsigned short    fi1_permissions;
  921.     unsigned short    fi1_num_locks;
  922.     char FAR *        fi1_pathname;
  923.     char FAR *        fi1_username;
  924. };  /* file_info_1 */
  925.  
  926. struct file_info_2 {
  927.     unsigned long    fi2_id;
  928. };  /* file_info_2 */
  929.  
  930. struct file_info_3 {
  931.     unsigned long    fi3_id;
  932.     unsigned short    fi3_permissions;
  933.     unsigned short    fi3_num_locks;
  934.     char FAR *        fi3_pathname;
  935.     char FAR *        fi3_username;
  936. };  /* file_info_3 */
  937.  
  938. struct file_info_50 {
  939.     unsigned long fi50_id;              // not used on NWSERVER
  940.     unsigned short fi50_permissions;    // not available on NWSERVER
  941.     unsigned short fi50_num_locks;      // not available on NWSERVER
  942.     char FAR * fi50_pathname;
  943.     char FAR * fi50_username;
  944.     char FAR * fi50_sharename;
  945. }; /* file_info_50 */
  946.  
  947. struct res_file_enum_2 {
  948.     unsigned short    res_pad;     /* not used now */
  949.     unsigned short      res_fs;          /* server type */
  950.     unsigned long    res_pro;      /* progressive */
  951. };  /* res_file_enum_2 */
  952.  
  953. /****************************************************************
  954.  *                                *
  955.  *        Special values and constants - FILE        *
  956.  *                                *
  957.  ****************************************************************/
  958.  
  959.                     /* bit values for permissions */
  960. #define    PERM_FILE_READ        0x1    /* user has read access */
  961. #define    PERM_FILE_WRITE        0x2    /* user has write access */
  962. #define    PERM_FILE_CREATE    0x4    /* user has create access */
  963.  
  964.  
  965. typedef struct res_file_enum_2 FRK;
  966.  
  967. /*NOINC*/
  968. #define FRK_INIT( f )    \
  969.     {        \
  970.         (f).res_pad = 0L;    \
  971.         (f).res_fs = 0;    \
  972.         (f).res_pro = 0;    \
  973.     }
  974.  
  975. /*INC*/
  976.  
  977.  
  978. /****************************************************************
  979.  *                                *
  980.  *          Server Class                            *
  981.  *                                *
  982.  ****************************************************************/
  983.  
  984.  
  985. /****************************************************************
  986.  *                                                              *
  987.  *              Function prototypes - SERVER                    *
  988.  *                                                              *
  989.  * Peer Server Support
  990.  *     NetServerGetInfo - sLevel 1,50 on NWSERVER, VSERVER
  991.  ****************************************************************/
  992.  
  993. /* 6.2  NetServerGetInfo 
  994.  *
  995.  * Purpose: Read the current configuration parameters of the server.
  996.  *
  997.  * int FAR PASCAL
  998.  * NetServerGetInfo( servername, level, buf, buflen, totalavail )
  999.  * char FAR *          servername;   asciz remote server name or NULL if local
  1000.  * short               level;          level of information to be returned
  1001.  * char FAR *          buf;            for returned data
  1002.  * unsigned short      buflen;         size of buffer
  1003.  * unsigned short FAR *totalavail;     total size needed for buffer
  1004.  *
  1005.  * Buffer contents on response (format for a single entry):
  1006.  *     Level 1 contains a "struct server_info_1".
  1007.  *     Level 50 contains a "struct server_info_50".
  1008.  *
  1009.  * If the buflen is not large enough for all of the information, the call
  1010.  * will return as much as will fit in the buffer.
  1011.  *
  1012.  * Returns 0 if successful. Error return information:
  1013.  *
  1014.  *     - ERROR_INVALID_LEVEL       - Level parameter specified is invalid
  1015.  *     - ERROR_INVALID_PARAMETER   - An invalid input parameter was detected.
  1016.  *     - NERR_NetNotStarted        - Network not installed on local machine
  1017.  *     - NERR_ServerNotStarted     - Server is not started
  1018.  *     - NERR_BufTooSmall          - The buffer supplied was to small to
  1019.  *                                   return the fixed length structure
  1020.  *                     requested.
  1021.  *     - NERR_MoreData             - The buffer supplied was too small to
  1022.  *                     return all the information available
  1023.  *                     for this server.
  1024.  *
  1025.  */
  1026.  
  1027.  
  1028. extern API_FUNCTION
  1029.   NetServerGetInfo ( const char FAR *     pszServer,
  1030.                      short                sLevel,
  1031.                      char FAR *           pbBuffer,
  1032.                      unsigned short       cbBuffer,
  1033.                      unsigned short FAR * pcbTotalAvail );
  1034.  
  1035.  
  1036. /****************************************************************
  1037.  *                                *
  1038.  *          Data structure templates - SERVER        *
  1039.  *                                *
  1040.  ****************************************************************/
  1041.  
  1042. struct server_info_0 {
  1043.     char        sv0_name[CNLEN + 1];     /* Server name            */
  1044. };     /* server_info_0 */
  1045.  
  1046.  
  1047. struct server_info_1 {
  1048.     char        sv1_name[CNLEN + 1];
  1049.     unsigned char   sv1_version_major;        /* Major version # of net   */
  1050.     unsigned char   sv1_version_minor;        /* Minor version # of net   */
  1051.     unsigned long   sv1_type;                 /* Server type             */
  1052.     char FAR *        sv1_comment;         /* Exported server comment  */
  1053. };     /* server_info_1 */
  1054.  
  1055.  
  1056. /* NOTE struct prefix must equal server_info_1 like below! */
  1057.  
  1058. struct server_info_50 {
  1059.     char        sv50_name[CNLEN + 1];
  1060.     unsigned char   sv50_version_major;        /* Major version # of net   */
  1061.     unsigned char   sv50_version_minor;        /* Minor version # of net   */
  1062.     unsigned long   sv50_type;                 /* Server type             */
  1063.     char FAR *        sv50_comment;         /* Exported server comment  */
  1064.     unsigned short  sv50_security;            /* SV_SECURITY_* (see below) */
  1065.     unsigned short  sv50_auditing;    /* 0 = no auditing; nonzero = auditing */
  1066.     char FAR *      sv50_container;        /* Security server/domain    */
  1067.     char FAR *        sv50_ab_server;        /* Address book server       */
  1068.     char FAR *        sv50_ab_dll;        /* Address book provider DLL */
  1069. };    /* server_info_50 */
  1070.  
  1071.  
  1072. struct server_info_2 {
  1073.     char            sv2_name[CNLEN + 1];
  1074.     unsigned char   sv2_version_major;
  1075.     unsigned char   sv2_version_minor;
  1076.     unsigned long   sv2_type;    
  1077.     char FAR *        sv2_comment;        
  1078.     unsigned long   sv2_ulist_mtime; /* User list, last modification time    */
  1079.     unsigned long   sv2_glist_mtime; /* Group list, last modification time   */
  1080.     unsigned long   sv2_alist_mtime; /* Access list, last modification time  */
  1081.     unsigned short  sv2_users;       /* max number of users allowed          */
  1082.     unsigned short  sv2_disc;        /* auto-disconnect timeout(in minutes)  */
  1083.     char FAR *        sv2_alerts;        /* alert names (semicolon separated)    */
  1084.     unsigned short  sv2_security;    /* SV_USERSECURITY or SV_SHARESECURITY  */
  1085.     unsigned short  sv2_auditing;    /* 0 = no auditing; nonzero = auditing  */
  1086.  
  1087.     unsigned short  sv2_numadmin;    /* max number of administrators allowed */
  1088.     unsigned short  sv2_lanmask;     /* bit mask representing the srv'd nets */
  1089.     unsigned short  sv2_hidden;      /* 0 = visible; nonzero = hidden        */
  1090.     unsigned short  sv2_announce;    /* visible server announce rate (sec)   */
  1091.     unsigned short  sv2_anndelta;    /* announce randomize interval (sec)    */
  1092.                                     /* name of guest account                */
  1093.     char            sv2_guestacct[LM20_UNLEN + 1];
  1094.     unsigned char   sv2_pad1;        /* Word alignment pad byte            */
  1095.     char FAR *      sv2_userpath;    /* ASCIIZ path to user directories      */
  1096.     unsigned short  sv2_chdevs;      /* max # shared character devices       */
  1097.     unsigned short  sv2_chdevq;      /* max # character device queues        */
  1098.     unsigned short  sv2_chdevjobs;   /* max # character device jobs          */
  1099.     unsigned short  sv2_connections; /* max # of connections            */
  1100.     unsigned short  sv2_shares;        /* max # of shares                */
  1101.     unsigned short  sv2_openfiles;   /* max # of open files            */
  1102.     unsigned short  sv2_sessopens;   /* max # of open files per session        */
  1103.     unsigned short  sv2_sessvcs;     /* max # of virtual circuits per client */
  1104.     unsigned short  sv2_sessreqs;    /* max # of simul. reqs. from a client  */
  1105.     unsigned short  sv2_opensearch;  /* max # of open searches            */
  1106.     unsigned short  sv2_activelocks; /* max # of active file locks           */
  1107.     unsigned short  sv2_numreqbuf;   /* number of server (standard) buffers  */
  1108.     unsigned short  sv2_sizreqbuf;   /* size of svr (standard) bufs (bytes)  */
  1109.     unsigned short  sv2_numbigbuf;   /* number of big (64K) buffers          */
  1110.     unsigned short  sv2_numfiletasks;/* number of file worker processes      */
  1111.     unsigned short  sv2_alertsched;  /* alert counting interval (minutes)    */
  1112.     unsigned short  sv2_erroralert;  /* error log alerting threshold         */
  1113.     unsigned short  sv2_logonalert;  /* logon violation alerting threshold   */
  1114.     unsigned short  sv2_accessalert; /* access violation alerting threshold  */
  1115.     unsigned short  sv2_diskalert;   /* low disk space alert threshold (KB)  */
  1116.     unsigned short  sv2_netioalert;  /* net I/O error ratio alert threshold  */
  1117.                                     /*  (tenths of a percent)               */
  1118.     unsigned short  sv2_maxauditsz;  /* Maximum audit file size (KB)        */
  1119.     char FAR *        sv2_srvheuristics; /* performance related server switches*/
  1120. };    /* server_info_2 */
  1121.  
  1122.  
  1123. struct server_info_3 {
  1124.     char        sv3_name[CNLEN + 1];
  1125.     unsigned char   sv3_version_major;
  1126.     unsigned char   sv3_version_minor;
  1127.     unsigned long   sv3_type;
  1128.     char FAR *        sv3_comment;
  1129.     unsigned long   sv3_ulist_mtime; /* User list, last modification time    */
  1130.     unsigned long   sv3_glist_mtime; /* Group list, last modification time   */
  1131.     unsigned long   sv3_alist_mtime; /* Access list, last modification time  */
  1132.     unsigned short  sv3_users;         /* max number of users allowed         */
  1133.     unsigned short  sv3_disc;        /* auto-disconnect timeout(in minutes)  */
  1134.     char FAR *        sv3_alerts;     /* alert names (semicolon separated)    */
  1135.     unsigned short  sv3_security;    /* SV_USERSECURITY or SV_SHARESECURITY  */
  1136.     unsigned short  sv3_auditing;    /* 0 = no auditing; nonzero = auditing  */
  1137.  
  1138.     unsigned short  sv3_numadmin;    /* max number of administrators allowed */
  1139.     unsigned short  sv3_lanmask;     /* bit mask representing the srv'd nets */
  1140.     unsigned short  sv3_hidden;      /* 0 = visible; nonzero = hidden         */
  1141.     unsigned short  sv3_announce;    /* visible server announce rate (sec)   */
  1142.     unsigned short  sv3_anndelta;    /* announce randomize interval (sec)    */
  1143.                     /* name of guest account            */
  1144.     char        sv3_guestacct[LM20_UNLEN + 1];
  1145.     unsigned char   sv3_pad1;        /* Word alignment pad byte            */
  1146.     char FAR *        sv3_userpath;    /* ASCIIZ path to user directories         */
  1147.     unsigned short  sv3_chdevs;      /* max # shared character devices         */
  1148.     unsigned short  sv3_chdevq;      /* max # character device queues         */
  1149.     unsigned short  sv3_chdevjobs;   /* max # character device jobs         */
  1150.     unsigned short  sv3_connections; /* max # of connections            */
  1151.     unsigned short  sv3_shares;     /* max # of shares                */
  1152.     unsigned short  sv3_openfiles;   /* max # of open files            */
  1153.     unsigned short  sv3_sessopens;   /* max # of open files per session     */
  1154.     unsigned short  sv3_sessvcs;     /* max # of virtual circuits per client */
  1155.     unsigned short  sv3_sessreqs;    /* max # of simul. reqs. from a client  */
  1156.     unsigned short  sv3_opensearch;  /* max # of open searches            */
  1157.     unsigned short  sv3_activelocks; /* max # of active file locks         */
  1158.     unsigned short  sv3_numreqbuf;   /* number of server (standard) buffers  */
  1159.     unsigned short  sv3_sizreqbuf;   /* size of svr (standard) bufs (bytes)  */
  1160.     unsigned short  sv3_numbigbuf;   /* number of big (64K) buffers         */
  1161.     unsigned short  sv3_numfiletasks;/* number of file worker processes      */
  1162.     unsigned short  sv3_alertsched;  /* alert counting interval (minutes)    */
  1163.     unsigned short  sv3_erroralert;  /* error log alerting threshold         */
  1164.     unsigned short  sv3_logonalert;  /* logon violation alerting threshold   */
  1165.     unsigned short  sv3_accessalert; /* access violation alerting threshold  */
  1166.     unsigned short  sv3_diskalert;   /* low disk space alert threshold (KB)  */
  1167.     unsigned short  sv3_netioalert;  /* net I/O error ratio alert threshold  */
  1168.                                     /*  (tenths of a percent)               */
  1169.     unsigned short  sv3_maxauditsz;  /* Maximum audit file size (KB)         */
  1170.     char FAR *        sv3_srvheuristics; /* performance related server switches*/
  1171.     unsigned long   sv3_auditedevents; /* Audit event control mask         */
  1172.     unsigned short  sv3_autoprofile; /* (0,1,2,3) = (NONE,LOAD,SAVE,or BOTH) */
  1173.     char FAR *        sv3_autopath;    /* file pathname (where to load & save) */
  1174. };    /* server_info_3 */
  1175.  
  1176.  
  1177.  
  1178. /****************************************************************
  1179.  *                                *
  1180.  *          Special values and constants - SERVER        *
  1181.  *                                *
  1182.  ****************************************************************/
  1183.  
  1184. /*
  1185.  *    Mask to be applied to svX_version_major in order to obtain
  1186.  *    the major version number.
  1187.  */
  1188.  
  1189. #define MAJOR_VERSION_MASK    0x0F
  1190.  
  1191. /*
  1192.  *    Bit-mapped values for svX_type fields. X = 1, 2 or 3.
  1193.  */
  1194.  
  1195. #define SV_TYPE_WORKSTATION    0x00000001
  1196. #define SV_TYPE_SERVER        0x00000002
  1197. #define SV_TYPE_SQLSERVER    0x00000004
  1198. #define SV_TYPE_DOMAIN_CTRL    0x00000008
  1199. #define SV_TYPE_DOMAIN_BAKCTRL    0x00000010
  1200. #define SV_TYPE_TIME_SOURCE    0x00000020
  1201. #define SV_TYPE_AFP        0x00000040
  1202. #define SV_TYPE_NOVELL        0x00000080      /* This flag is also set by Win95 NWSERVER */
  1203. #define SV_TYPE_DOMAIN_MEMBER    0x00000100
  1204. #define SV_TYPE_PRINTQ_SERVER    0x00000200
  1205. #define SV_TYPE_DIALIN_SERVER    0x00000400
  1206. #define SV_TYPE_ALL        0xFFFFFFFF   /* handy for NetServerEnum2 */
  1207.  
  1208. /*
  1209.  *    Special value for svX_disc that specifies infinite disconnect
  1210.  *    time. X = 2 or 3.
  1211.  */
  1212.  
  1213. #define SV_NODISC        0xFFFF    /* No autodisconnect timeout enforced */
  1214.  
  1215. /*
  1216.  *    Values of svX_security field. X = 2 or 3.
  1217.  */
  1218.  
  1219. #define SV_USERSECURITY        1
  1220. #define SV_SHARESECURITY    0
  1221.  
  1222. /*
  1223.  *    Values of svX_security field. X = 50.
  1224.  *  For Win95 NWSERVER, the only possible returned value is SV_SECURITY_NETWARE.
  1225.  */
  1226.  
  1227. #define SV_SECURITY_SHARE    0    /* Share-level */
  1228. #define SV_SECURITY_WINNT    1    /* User-level - Windows NT workst'n */
  1229. #define SV_SECURITY_WINNTAS    2    /* User-level - Windows NT domain */
  1230. #define SV_SECURITY_NETWARE    3    /* User-level - NetWare 3.x bindery */
  1231.  
  1232. /*
  1233.  *    Values of svX_hidden field. X = 2 or 3.
  1234.  */
  1235.  
  1236. #define SV_HIDDEN        1
  1237. #define SV_VISIBLE        0
  1238.  
  1239. #define SVI1_NUM_ELEMENTS    5
  1240. #define SVI2_NUM_ELEMENTS    44
  1241. #define SVI3_NUM_ELEMENTS    45
  1242.  
  1243.  
  1244. /*
  1245.  *      Masks describing AUTOPROFILE parameters
  1246.  */
  1247.  
  1248. #define SW_AUTOPROF_LOAD_MASK    0x1
  1249. #define SW_AUTOPROF_SAVE_MASK    0x2
  1250.  
  1251.  
  1252.  
  1253. /****************************************************************
  1254.  *                                                              *
  1255.  *                 Security Class                               *
  1256.  *                                                              *
  1257.  ****************************************************************/
  1258.  
  1259.  
  1260. /****************************************************************
  1261.  *                                                              *
  1262.  *                  Function prototypes - SECURITY              *
  1263.  *                                                              *
  1264.  ****************************************************************/
  1265.  
  1266. extern API_FUNCTION
  1267.   NetSecurityGetInfo ( const char FAR *     pszServer,
  1268.                        short                sLevel,
  1269.                        char FAR *           pbBuffer,
  1270.                        unsigned short       cbBuffer,
  1271.                        unsigned short FAR * pcbTotalAvail );
  1272.  
  1273.  
  1274. /****************************************************************
  1275.  *                                *
  1276.  *          Data structure templates - SECURITY        *
  1277.  *                                *
  1278.  ****************************************************************/
  1279.  
  1280. struct security_info_1 {
  1281.     unsigned long   sec1_security;        /* SEC_SECURITY_* (see below) */
  1282.     char FAR *      sec1_container;    /* Security server/domain     */
  1283.     char FAR *        sec1_ab_server;    /* Address book server        */
  1284.     char FAR *        sec1_ab_dll;    /* Address book provider DLL  */
  1285. };    /* security_info_1 */
  1286.  
  1287.  
  1288. /****************************************************************
  1289.  *                                *
  1290.  *          Special values and constants - SECURITY        *
  1291.  *                                *
  1292.  ****************************************************************/
  1293.  
  1294. /*
  1295. /*
  1296.  *    Values of secX_security field. X = 1.
  1297.  */
  1298.  
  1299. #define SEC_SECURITY_SHARE    SV_SECURITY_SHARE
  1300. #define SEC_SECURITY_WINNT    SV_SECURITY_WINNT
  1301. #define SEC_SECURITY_WINNTAS    SV_SECURITY_WINNTAS
  1302. #define SEC_SECURITY_NETWARE    SV_SECURITY_NETWARE
  1303.  
  1304.  
  1305.  
  1306. /*NOINC*/
  1307. #ifdef __cplusplus
  1308. }
  1309. #endif    /* __cplusplus */
  1310.  
  1311. #ifndef RC_INVOKED
  1312. #pragma pack()          /* Revert to default packing */
  1313. #endif
  1314.  
  1315. #pragma option pop /*P_O_Pop*/
  1316. #endif /* SVRAPI_INCLUDED */
  1317. /*INC*/
  1318.