home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / svrapi.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  47KB  |  1,316 lines

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