home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-11-08 | 184.2 KB | 5,093 lines |
-
-
-
-
-
-
-
-
- REXXLAN/2 1.0 documentation
-
- !!!!!!!!!!!!!!!!!!!!!!!!!!!
-
- FINAL RELEASE
-
- !!!!!!!!!!!!!!!!!!!!!!!!!!!
-
- ┌──────────────────────────────────────────────────┐
- │ REXXLAN/2 │
- │ the programmers REXX API extension for │
- │ IBM LAN Server (and compatible) networks. │
- └──────────────────────────────────────────────────┘
-
- (c) EDV Beratung Leif Braeuer, 1992, 1993
- 2080 Pinneberg, Germany
- EMAIL: CIS: 100024,3436, Fido: 2:240/5200.13
-
-
-
-
-
- Trademarks:
- ───────────
-
- The following terms are trademarks of the International Business Machines
- Corporation:
-
- REXX
- IBM
- OS/2
- LAN Server
-
-
- References:
- ───────────
-
- The description of the LAN Server API bases on the IBM publication:
- IBM OS/2 LAN Server Version 3.0: Application Programmer's Reference
-
-
- COPYRIGHT
- ─────────
-
- THE COMPONENTS OF REXXLAN/2 THAT MEANS THE SOFTWARE, USER'S MANUAL(S) AND
- OTHER ITEMS ACCOMPANYING THIS AGREEMENT CONTAIN MATERIAL IN WHICH LEIF
- BRAEUER NAD VTS-DATENSYSTEME GMBH & CO. RETAIN PROPRIETARY RIGHTS.
-
-
- YOU ARE ALLOWED TO EVALUATE THIS REXXLAN/2 PACKAGE FOR AT MOST 30 DAYS.
- AFTER THIS TESTING PERIOD YOU MUST DELETE ALL COPIES OF THIS PACKAGE
- INCLUDING ALL FILES AND DOKUMENTATION.
- ADDITINALLY, WILL THIS VERSION EXPIRE AT GENERAL AVAILABILITY OF ANY
- FOLLOWING VERSION OR AT LEAST ON MARCH 31, 1994.
- THE PROGRAM AND DOCUMENTATION ARE PROVIDED "AS-IS".
-
-
- THIS EVALUATION PACKAGE MAY BE DISTRIBUTED UNCHANGED FREELY VIA BULLETIN
- BOARD SYSTEMS INCLUDING ALL FILES AND CONSIDERING THE COPYRIGHT NOTES.
- YOU ARE NOT ALLOWED TO CHARGE ANY DISTRIBUTION FEES EXCEPT FOR REASONABLE
- HANDLING COSTS.
-
-
- DISCLAIMER
- ──────────
-
- The user of the program by using it agrees not to hold the author nor the
- distributor liable for any damage that may have been caused by either the
- proper or improper functioning or by the use or misuse of this RexxLan/2
- REXX programming extension.
-
-
- TABLE OF CONTENTS
- ─────────────────
-
- Introduction
- How do I use RexxLan/2 ?
- RexxLan/2 and the REXX variable pool
- Installation
-
- The RexxLan/2 Functions Reference
- INTERNAL RexxLan/2 FUNCTIONS
- ACCESS PERMISSION CATEGORY
- REQUESTER SECTION
- DOMAIN SECTION
- USE SECTION
- MESSAGE SECTION
- CONFIGURATION SECTION
- CONNECTION SECTION
- ERROR SECTION
- FILE SECTION
- SERVER SECTION
- SESSION SECTION
- SHARE SECTION
- STATISTICS SECTION
- GROUP SECTION
- USER SECTION
- ALIAS SECTION
- APPLICATION SECTION
- USER PROFILE MANAGEMENT
- APPENDICES
-
- ----------------------------------------------------------
-
- Introduction
- ────────────
-
- Since the IBM OS/2 version 2.0, IBM provides an easy to use language
- extension for the OS/2 Procedures Language/REXX. Third party developer are
- able to supply REXX extension DLL, to add "special-need" functions to the
- REXX language extent.
-
- An example for this kind of extension is REXXUTIL.DLL, a component of
- the operating system, that adds some Workplace-Shell and standard API
- system calls to the REXX language.
-
- This well documented possibility to extend REXX and the few command line
- programs available for the IBM LAN Server were the base of the idea, to
- develop an extension that allows full access to the broad LAN Server API.
-
- RexxLan/2:
-
- - provides an API very close to the native C API calls. Programmers
- who are familiar with the C LAN API will not have any problems to
- use the REXX counterparts.
- - will give you full access to all available information
- - enables the access to more than 80 API calls from your REXX
- programs.
- - supports the new LAN Server 3.0 Domain Controller Database
- (DCDB) API.
-
- RexxLan/2 is excellent for
-
- - LAN Server administrators with a minimum of REXX programming
- knowledge.
- - testing the LAN Server API
- - prototyping network applications
- - writing tools for a sophisticated use of the LAN Requester
-
- In this package you will find two files, RXLAN20.DLL and RXLAN30.DLL,
- that implement more than 80 API calls to use in REXX.
-
- RXLAN20.DLL is used for LAN Server 2.X Requester, that do not support
- the LAN Server 3.0 Domain Controller Database (DCDB) API.
-
- RXLAN30.DLL adds these DCDB API calls and can only be used with IBM
- LAN Requester 3.0 or higher.
-
-
- How do I use RexxLan/2 ?
- ────────────────────────
-
- The following example shows the use of the RexxLan/2 extension in your
- REXX programs:
-
-
- 1: /* REXX */
- 2: /* Query which user is logged on this PC */
- 3:
- 4: CALL RxFuncAdd NetLoadFuncs, RXLAN20, NetLoadFuncs
- 5: CALL NetLoadFuncs
- 6: SAY 'Querying workstation info...'
- 7: ret = NetWkstaGetInfo( '', '0', 'Buffer', '0', '0' )
- 8: IF ret = 0 THEN DO
- 9: SAY 'Logged on user : ' || Buffer.wki0_username
- 10: SAY 'Default domain : ' || Buffer.wki0_langroup
- 11: END
- 12: ELSE DO
- 13: IF ret = 2201 THEN DO /* NERR_NotLoggedOn */
- 14: SAY 'No user is logged on.'
- 15: END
- 16: ELSE DO
- 17: SAY 'Error in NetWkstaGetInfo rc = ' || ret
- 18: END
- 19: END
- 20: CALL Netdropfuncs
-
-
- In line 4 the REXX function RxFuncAdd is used to add the loading function
- of a REXX extension DLL. Please refer to your REXX Programmers
- Reference for more information.
-
- The registering function is called NetLoadFuncs (like SysLoadFuncs in the
- REXXUTIL.DLL). NetLoadFuncs is loaded from RXLAN20.DLL and
- registered under the name NetLoadFuncs.
-
- In line 5 the NetLoadFuncs registers all RXLAN20 functions, initialises all
- needed variables and allocates memory for the loaded instance of the DLL.
-
- DO NOT REGISTER ANY OTHER FUNCTION THROUGH THE
- RXFUNCADD API !
-
- UNPREDICTABLE ERRORS WILL OCCUR, IF YOU TRY TO USE
- REXXLAN/2 APIS WITHOUT INITIALIZING THEM WITH NETLOAD-
- FUNCS
-
- In line 7 the NetWkstaGetInfo is called. The first parameter specifies where
- the command will be executed. '' means, the command will be executed
- locally. The second parameter '0' specifies the level of information needed.
- 'Buffer' tells the REXX function under which name the variables should be
- created. The remaining buffers were left for "future use" and for compatibility
- reasons. The lines 9 and 10 show which variables are created by the Wksta
- API call. These values are printed, if a user is logged on.
-
-
- RexxLan/2 and the REXX variable pool
- ────────────────────────────────────
-
- REXX does not know any structured variables. So, a mechanism had to be
- implemented which simulates this by separating the variable name and its
- struct fields by a dot. All components of the structures of IBMs LAN Server
- API have identical names in RexxLan/2. The REXX progammer passes the
- API the name of a top level qualifier under which the complete variable
- structure will be created.
-
- The IBM LAN Server Programmers Reference describes the access info
- structure for level 1 calls in C as follow:
-
-
- struct access_info_1 {
- char LSFAR * LSPTR acc1_resource_name;
- short acc1_attr;
- short acc1_count; /* number of following acl */
- }; /* access_info_1 */
-
-
- A REXX programmer who uses e.g. NetAccessGetInfo( '\\SERVER', 'D:\', 1,
- 'Buffer', '', '' ) to retrieve the access control informations will find the informa-
- tion in the following REXX variables:
-
- BUFFER..ACC1_RESOURCENAME
- BUFFER.ACC1_ATTR
- BUFFER.ACC1_COUNT
- BUFFER.n.ACL_UGNAME
- BUFFER.n.ACL_ACCESS (n: 0..ACC1_COUNT-1)
-
- Enumerated structures (returned by Enum functions or like the above example
- appended to a GetInfo buffer) are specified by an additional counter following
- the top level qualifier of the REXX variable.
-
- Some LAN Server SetInfo API support the paramnum field that allows the
- programmer to set only one component of a data structure. In this case, the
- REXX-buffer parameter does not contain the name of the REXX top level
- qualifier for an info structure, but the new content of the component to be
- changed.
- In the following example, the privilege of an users account (usri_priv) is set
- to administrator (2):
-
- /* set John's privilege to admin */
- /* syntax : NetUserSetInfo( server, user, level, buffer, dummy,
- parmnum ) */
- ret = NetUserSetInfo( '\\SERVER', 'JOHN', 1, 2, '', 5 )
-
-
-
- -----------------------------------------------------------------------------
-
- Installation
- ────────────
-
- To use the RexxLan/2 extension, copy all files from the diskette into a
- directory of your choice (in this example all files were copied to the directory
- \REXXLAN).
-
- XCOPY A:\REXXLAN\* C:\REXXLAN\ /S
-
- Then add your installation directory to the LIBBPATH and PATH statement
- in the CONFIG.SYS
-
- LIBPATH=C:\REXXLAN; ......
- SET PATH=C:\REXXLAN; ......
-
- After saving these modification, end all your applications, shutdown your
- system and restart OS/2.
-
-
- ------------------------------------------------------------------------------
-
- The RexxLan/2 Functions Reference
- ─────────────────────────────────
-
- At the moment 17 categories with more than 80 functions of the OS/2 LAN
- Server API functions are supported. In some categories the C library holds
- some functions of the older versions of LAN Server for compatibility
- purposes. The APIs were obsolete and therefore not supported. All Net API
- functions return a standard return code. You can find the explanations of the
- LAN Server related error code in the appendix. Some internal RexxLan/2
- functions return different return values. They are described in the functions
- description.
-
-
- INTERNAL RexxLan/2 FUNCTIONS
- ────────────────────────────
-
- NetDropFuncs
- ────────────
-
- Deregister all registered Functions of RXLAN30.DLL or RXLAN20.DLL
-
- Syntax:
-
- CALL NetDropFuncs
-
-
- Return: NONE
-
- ----------------------------------------------------------------------------
-
- NetLoadFuncs
- ────────────
- Register additional Function from RXLAN30.DLL or RXLAN20.DLL
-
- Syntax:
-
- CALL NetLoadFuncs
-
-
- Return: NONE
-
-
- ----------------------------------------------------------------------------
-
- NetRexxVersion
- ──────────────
-
- Get information about RexxLan/2 version, supported LAN Requester, a
- textual copyright note and products serial number.
-
- Syntax:
-
- ret = NetRexxVersion( level )
-
- Return: depends on the value of level
-
- Parameter:
-
- level
- 0: return major and minor version of
- RexxLan/2 (e.g. "1.0")
- 1: return supported LAN Requester ver-
- sion "2.0" or "3.0"
- 2: return a textual copyright note
- 3: Retrieves the serial number of your li-
- censed version
- 4: level for the ABOUT.CMD to provide
- a printout of your personal information
- and serial number
-
- Example:
-
- license = NetRexxVersion( 3 )
- SAY 'License number is :' || license
-
-
- ----------------------------------------------------------------------------
-
- NetRexxQueryFunction
- ────────────────────
-
- Answer, whether or not a function is available in the loaded RexxLan/2
- module.
-
- Syntax:
-
- ret = NetRexxQueryFunction( function )
-
- Return:
- 1 : function is available
- 0 : function is unknown
-
- Parameter:
-
- function Name of function to test
-
-
- Example:
-
- exist = NetRexxQueryFunction( 'NetUserAdd' )
- IF exist = 1 SAY 'Function available'
-
- ----------------------------------------------------------------------------
-
- NetRexxGetMessage
- ─────────────────
-
- Retrieve the explanation text for a return code.
-
- Syntax:
-
- text = NetRexxGetMessage( errorcode )
-
-
- Parameter:
- errorcode Return code of a Net API
-
- The API returns a string containing the explanation of this error.
-
- Example:
-
- ....
- ret = NetAccessEnum( server, .... )
- IF ret <> 0 THEN DO
- text = NetRexxGetMessage( ret )
- SAY 'Error in NetAccessEnum:'
- SAY text
- END
- ...
-
- ----------------------------------------------------------------------------
-
- ACCESS PERMISSION CATEGORY
- ──────────────────────────
-
- The functions in the Access Permission category examine or modify user or
- group access permission records for server resources.
-
- In order for a user to access a shared resource, an access permission record
- must be defined for that user. An access permission record defines how a user
- or group can access a shared resource. It contains a set of permissions for
- each user or group.
-
- The access permission record must be defined by a user or application that
- already has administrative permissions, or has special permission for the
- resource being shared. Note that user permissions have precedence over
- group permissions. If a user is not defined in the access list for the shared
- resource, the user's access permissions are the union of all groups to which the
- user belongs.
-
-
- Data structures
- ───────────────
-
- The level parameter controls the level of information provided to or returned
- from the NetAccessAdd, NetAccessEnum, NetAccessGetInfo, and NetAccess-
- SetInfo functions. These functions use either a level 0 or a level 1 data
- structure.
-
- Access Permission level 0 (access_info_0):
-
- ACCESSINFO.ACC0_RESOURCENAME
-
-
- Access Permission level 1 (access_info_1):
-
- ACCESSINFO.ACC1_RESOURCENAME
- ACCESSINFO.ACC1_ATTR
- ACCESSINFO.ACC1_COUNT
-
-
- where:
-
- acc1_resource_name contains a string specifying the name of a particular
- resource (see the preceding discussion on acc0_resour-
- ce_name).
- acc1_attr specifies the attributes of acc1_resource_name. The bits
- of acc1_attr are defined as follows:
- Bit Meaning
- 0 Audit all. When this bit is set, all ac-
- cess attempts will be audited. No other
- bits in the field can be set.
- It is an error to set any other bits when
- bit 0 is set.
- When bit 0 is cleared, the remaining bits are defined as
- follows in this table.
- 1-3 Reserved, with a value of 0.
- 4 If 1, audit successful file opens.
- 5 If 1, audit successful file writes and
- successful directory creates.
- 6 If 1, audit successful file deletes or
- truncates and successful directory de-
- letes.
- 7 If 1, audit successful file and directory
- access control profile change.
- 8 If 1, audit failed file opens.
- 9 If 1, audit failed file writes and failed
- directory creates.
- 10 If 1, audit failed file deletes or trun-
- cates and failed directory deletes.
- 11 If 1, audit failed file and directory
- access control profile change.
- 12-15 Reserved, with a value of 0.
-
- acc1_count specifies the number of resource permission data
- structures following the access permission data structu-
- re.
-
- In addition, the access permission data structure can be followed by zero or
- more (up to a maximum of 64) resource permission data structures. These
- structures are used to define resource permissions for individual users or
- groups.
-
- Resource Permissions (acl_info):
-
- ACCESSINFO.n.ACL_UGNAME
- ACCESSINFO.n.ACL_ACCESS (n: 0..ACC1_COUNT-1)
-
- where:
-
- acl_ugname string specifying a particular user name or group name.
- acl_access specifies permission of a user name or a group name.
- BitMask Meaning
- 0 No permission to access the resource
- 0x01 Permission to read data from a resour-
- ce, and by default execute the resource.
- 0x02 Permission to write data to the resour-
- ce.
- 0x04 Permission to create an instance of the
- resource (such as a file); data can be
- written to the resource when creating it.
- 0x08 Permission to execute the resource.
- 0x10 Permission to delete the resource.
- 0x40 Permission to modify the permissions
- (read, write, create, execute, and delete)
- assigned to a resource for a user or ap-
- plication.
- 0x8000 Permission for a particular group; if
- returned, indicates that the entry is for
- a group.
-
- ----------------------------------------------------------------------------
-
- NetAccessAdd
- ────────────
-
- Add a access profile for the resource on a server. Only level 1 info is
- supported.
-
- Syntax:
-
- ret = NetAccessAdd( server, level, rexx-buffer, dummy )
-
-
- Parameter:
-
- server UNC servername like \\SERVER1
- level 1
- rexx-buffer name of REXX variable containing the
- access permission structure (ac-
- cess_info_1) followed by resource per-
- mission structures
- dummy reserved to preserve NetApi compati-
- bility
-
- Example:
-
- /* Set access permission for USERS to readonly */
- Buffer.acc1_resource_name = 'D:\'
- Buffer.acc1_attr = 0
- Buffer.acc1_count = 1
- Buffer.0.acl_ugname = 'USERS'
- Buffer.0.acl_access = 1
- ret = NetAccessAdd( '\\SERVER', 1, 'Buffer', '' )
-
-
- ----------------------------------------------------------------------------
-
- NetAccessCheck
- ──────────────
-
- Used to check that user can do the operation on resource.
-
- Syntax:
-
- ret = NetAccessCheck( resvd, user, resource, operation, result )
-
-
- Parameter :
- resvd must be ""
- user name of user
- resource name of resource, e.g. UNC name
- operation access control bitmask
- result name of REXX variable, that can con-
- tain:
- 0 access allowed
- 5 ERROR_ACCESS_DENIED
-
- Example:
-
- /* Do I have read access to D:\ ? */
- ret = NetAccessCheck( '', 'JOHN', 'D:\', 1, 'res' )
- IF res = 0 SAY 'Access allowed.'
-
-
- ----------------------------------------------------------------------------
-
- NetAccessGetInfo
- ────────────────
-
- Get information about access profiles for the resource on a server
-
- Syntax:
-
- ret = NetAccessGetInfo( server, resource, level, rexx-buffer, dummy,
- dummy )
-
-
- Parameter :
- server UNC servername like \\SERVER1
- resource name of the resource like C:\IBMLAN
- level only level '1' is supported
- rexx-buffer name of REXX variable containing the
- acc1_ struct followed by acc1_count
- acl_ structures
- dummy reserved to preserve NetApi compati-
- bility
-
- Example:
-
- ret= NetAccessGetInfo( '\\SERVER', 'C:\IBMLAN', 1, 'Buffer', '' )
- IF ret = 0 THEN DO
- SAY 'Permissions for ' || Buffer.acc1_resource_name
- DO i = 0 TO Buffer.acc1_count-1
- SAY Buffer.i.acl_ugname Buffer.i.acl_access
- END
- END
-
-
- ----------------------------------------------------------------------------
-
- NetAccessSetInfo
- ────────────────
- Set information about access profiles for the resourceon a server changes the
- access profile for the specified resource. Only level 1 is supported. The
- parmnum option is not implemented.
-
- Syntax:
-
- ret = NetAccessSetInfo( server, resource, level, rexx-buffer, dummy,
- parmnum )
-
-
- Parameter:
- server UNC servername like \\SERVER1
- resource name of the resource like C:\IBMLAN
- level only level '1' is supported
- rexx-buffer name of REXX variable containing the
- access_info_1 struct
- paramnum 0: change the complete access con-
- trol entry by providing an ac-
- cess_info_1 struct.
- any other value is not supported
- dummy reserved to preserve NetApi compati-
- bility
-
- Example:
-
- ret= NetAccessGetInfo( '\\SERVER', 'D:\', 1, 'Buffer', '' )
- IF ret = 0 THEN DO
- new = Buffer.acc1_count
- Buffer.new.acl_ugname = 'JOHN'
- Buffer.new.acl_access = 1
- Buffer.acc1_count = Buffer.acc1_count+1
- ret = NetAccessSetInfo( '\\SERVER', 'D:\', 1, 'Buffer', '', 0)
- DO i = 0 TO Buffer.acc1_count-1
- SAY Buffer.i.acl_ugname Buffer.i.acl_access
- END
- END
-
-
- ----------------------------------------------------------------------------
-
- NetAccessGetUserPerms
- ─────────────────────
- Returns permissions for the resource on the specified server for user in the
- REXX variable
-
- Syntax:
-
- ret = NetAccessGetUserPerms( server, user, resource, perms )
-
-
- Parameter:
- server server, which owns the resource
- user User to get permissions for
- resource directory, pipe, etc.
- perms name of REXX variable, that will con-
- tain the permission mask
-
- Example:
-
- ret = NetAccessGetUserPerms( '\\SERVER', 'JOHN', 'D:\', 'perm' )
- IF ret = 0 THEN
- SAY 'Permissions for D:\ :' || perm
-
- ----------------------------------------------------------------------------
-
- NetAccessEnum
- ─────────────
-
- Lists all resources with defined access profiles. Only level 0 is supported
-
- Syntax:
-
- ret = NetAccessEnum( server, basepath, recursively, level, buffer,
- dummy, eread, dummy )
-
-
- Parameter:
- server name of server, e.g. \\SERVER1
- basepath display profiles for resources beginning
- with basepath (e.g. C:\ or \PIPE)
- recursively 1 = include all subdirectories
- 0 = don't include subdirectories
- level 0
- rexx-buffer name of Rexx variable, containing the
- found profiles
- eread Rexx variable containing the number of
- profiles found
-
- Example:
-
- ret = NetAccessEnum( '\\SERVER', 'D:\', 1, 0, 'Buffer', '', 'eread',
- '')
- IF ret = 0 THEN DO
- DO i = 0 TO eread-1
- SAY Buffer.i.acc0_resource_name
- END
- END
-
- ----------------------------------------------------------------------------
-
- NetAccessDel
- ────────────
-
- Removes the access profile for the resource
-
- Syntax:
-
- ret = NetAccessDel( server, resource )
-
-
- Parameter:
- server name of server (e.g. "\\SERVER1")
- resource directory, pipe, printer, etc.
-
- Example:
-
- ret = NetAccessDel( '\\SERVER', '\PRINT\PRINTER1' )
-
- ----------------------------------------------------------------------------
-
- REQUESTER SECTION
- ─────────────────
-
-
- To log a user name on to or off a requester or to execute a logon script for a
- user name, an application calls the NetWkstaSetUID2 function.
-
- To configure a requester, an application calls the NetWkstaSetInfo function.
- The NetWkstaGetInfo function returns information about the configuration of
- a requester.
-
- Note:
- The API call NetWkstaSetUID will not be supported. This API has been
- replaced by NetWkstaSetUID2.
-
-
- Data structures
- ───────────────
-
- Requester Information (Level 0) (wksta_info_0) :
-
- Buffer.wki0_root Buffer.wki0_sizworkbuf
- Buffer.wki0_computername Buffer.wki0_maxwrkcache
- Buffer.wki0_username Buffer.wki0_sesstimeout
- Buffer.wki0_langroup Buffer.wki0_sizerror
- Buffer.wki0_ver_major Buffer.wki0_numalerts
- Buffer.wki0_ver_minor Buffer.wki0_numservices
- Buffer.wki0_charwait Buffer.wki0_errlogsz
- Buffer.wki0_chartime Buffer.wki0_printbuftime
- Buffer.wki0_charcount Buffer.wki0_numcharbuf
- Buffer.wki0_keepconn Buffer.wki0_sizcharbuf
- Buffer.wki0_keepsearch Buffer.wki0_logon_server
- Buffer.wki0_maxthreads Buffer.wki0_wrkheuristics
- Buffer.wki0_maxcmds Buffer.wki0_mailslots
- Buffer.wki0_numworkbuf
-
- Requester Information (Level 1) (wksta_info_1):
-
- Requester information level 1 includes all the fields of wksta_info_0, plus
- oth_domains, logon_domains, and numdgrambuf.
-
- wki1_root wki1_sesstimeout
- wki1_computername wki1_sizerror
- wki1_username wki1_numalerts
- wki1_langroup wki1_numservices
- wki1_ver_major wki1_errlogsz
- wki1_ver_minor wki1_printbuftime
- wki1_charwait wki1_numcharbuf
- wki1_chartime wki1_sizcharbuf
- wki1_charcount wki1_logon_server
- wki1_keepconn wki1_wrkheuristics
- wki1_keepsearch wki1_mailslots
- wki1_maxthreads wki1_logon_domain
- wki1_maxcmds wki1_oth_domains
- wki1_numworkbuf wki1_numdgrambuf
- wki1_sizworkbuf
- wki1_maxwrkcache
-
-
- Requester Information (Level 10)(wksta_info_10):
-
- The wksta_info_10 data structure is supplied to fulfill the needs of remote
- users who want to obtain certain information from a server. This data
- structure allows remote users to discover what domain a server belongs to.
-
- wki10_computername
- wki10_username
- wki10_langroup
- wki10_ver_major
- wki10_ver_minor
- wki10_logon_domain
- wki10_oth_domains
-
- where:
- wki?_root string containing the path to the IBMLAN directory of
- the computer (the recommended default path is \IBM-
- LAN).
- wki?_computername string containing the computer name of the local
- requester being configured.
- wki?_username string containing the user's name logged on to the
- requester.
- wki?_langroup string containing the name of the domain to which the
- requester belongs.
- wki?_ver_major major version number of the OS/2 LAN Server software
- running on the computer.
- wki?_ver_minor minor version number of the OS/2 LAN Server soft-
- ware running on the computer.
- wki?_charwait number of seconds the requester will wait for a remote
- serial or communication device to become available.
- wki?_chartime number of milliseconds the requester will wait to collect
- data to send to a remote serial or communication
- device.
- wki?_charcount number of bytes of information the requester will send
- to a remote serial or communication device.
- wki?_keepconn number of seconds that an inactive connection from the
- requester to a resource of a server will be maintained.
- wki?_keepsearch number of seconds that an inactive search will continue.
- wki?_maxthreads number of threads the requester can dedicate to the net-
- work.
- wki?_maxcmds number of simultaneous network device driver com-
- mands that can be sent to the network.
- wki?_numworkbuf number of internal buffers the requester has.
- wki?_sizworkbuf size (in bytes) of each internal buffer.
- wki?_maxwrkcache maximum size (in bytes) of an internal cache buffer.
- wki?_sesstimeout number of seconds that are waited before disconnecting
- an inactive session between a requester and a server.
- wki?_sizerror size (in bytes) of an internal error buffer.
- wki?_numalerts maximum number of clients that can receive alert
- messages.
- wki?_numservices number of services that can be started on the requester
- at any time.
- wki?_errlogsz maximum size (in kilobytes) of the error log file of the
- requester.
- wki?_printbuftime number of seconds waited before closing inactive
- compatibility mode print jobs.
- wki?_numcharbuf number of character pipe buffers and device buffers the
- requester can have.
- wki?_sizcharbuf maximum size (in bytes) of a character pipe buffer and
- device buffer.
- wki?_logon_server string containing the name of the preferred server,
- which validates user logon requests for this user. A
- server name of an asterisk (*) indicates that the logon
- request can be handled by any domain controller or
- backup server on the domain. A '' indicates that the
- domain controller will be the preferred logon server.
- wki?_wrkheuristics string of flags used to control a requester's operation.
- wki?_mailslot specifies whether mailslots are allowed. If 0, mailslots
- are not supported on this machine, and Netlogon service
- will not start.
- wki?_logon_domains names the domain to which the user is logged on. It is
- returned as '' when no one is logged on.
- wki?_oth_domains is an string listing all domains on which the machine is
- currently listed. This is a string which is a space--
- delimited list of domains. The oth_domains field is
- settable with NetWkstaSetInfo.
- wki?_numdgrambuf is the number of buffers allocated for receiving datag-
- rams.
-
- ----------------------------------------------------------------------------
-
- NetWkstaSetInfo
- ───────────────
-
- modifies actual LAN server parameter. The parmnum field is not supported.
-
- Syntax:
-
- ret = NetWkstaSetInfo( server, level, rexx-buffer, dummy, dummy )
-
-
- Parameter :
- server see above
- level 0, 1
- rexx-buffer name of rexx variable containing wkst-
- a_info_? data
-
- Example:
-
- /* Change the other domains field */
- ret = NetWkstaGetInfo( '\\SERVER', 1, 'buffer', '', '' )
- Buffer.wki1_oth_domains = 'DOM1 DOM2'
- ret = NetWkstaSetInfo( '\\SERVER', 1, 'buffer', '', '' )
-
-
- ----------------------------------------------------------------------------
-
- NetWkstaGetInfo
- ───────────────
-
- Query actual LAN requester parameter
-
- Syntax:
-
- ret = NetWkstaGetInfo( server, level, rexx-buffer, dummy, dummy )
-
-
- Parameter:
- server see above
- level 0, 1, 10
- rexx-buffer name of rexx variable containing wkst-
- a_info_? data
-
- Example:
-
- ret = NetWkstaGetInfo( '', 10, 'buffer', '', '' )
- SAY 'This computer name: ' || buffer.wki10_computer_name
-
-
- ----------------------------------------------------------------------------
-
- NetWkstaSetUID2
- ───────────────
-
- Logons/ Logoffs a user to/from the network and returns statistics. It is
- recommended that you use the UPM API instead, because no logon assign-
- ments or profiles were created. The UPM will not register this logon.
-
- Syntax:
-
- ret = NetWkstaSetUID2( dummy, domain, username, password, parms,
- ucond, level, rexx-buffer, dummy, dummy )
-
- Parameter:
- domain name of logon domain
- username name of user to log on (if "" a user
- wants to log off)
- password password of user. (if "" the ID has no
- password) This field is CASE SENSI-
- TIVE For compatibility to LAN Server-
- interface use only UPPER CHARAC-
- TERS !
- parms In LAN Server environments it must be
- ""
- ucond specifies what action to take if another
- user name is logged on to the requester.
- Defined are four values:
- Value Meaning
- 0 NetWkstaSetUID2 fails, and the
- user's identification number
- (UID) does not change.
- 1 Logs the current user name off,
- disconnecting any connections to
- redirected resources.
- 2 Cancels any connections and other-
- pending activities necessary.
- Fails if any connection is used
- by a process as the current drive.
- 3 WkstaSetUID2 always succeeds
- and forces all disconnections.
- level must be 1.
- rexx-buffer name of rexx variable containing user
- data
-
- ----------------------------------------------------------------------------
-
- DOMAIN SECTION
- ──────────────
-
- The functions in this category deal with domain specific information. The
- NetGetDCName function obtains the name of the domain controller when
- provided the name of the domain. The NetLogonEnum function enumerates
- the information of logged on users in a domain. The information is in the level
- 0, 1, or 2 user_logon_info data structures. See the data structure information
- under the User category.
-
-
- NetGetDCName
- ────────────
-
- Returns the name of the domain controller.
-
- Syntax:
-
- ret = NetGetDCName( server, domain, DC-name, dummy )
-
- Parameter:
- server where to execute command
- domain see above
- DC-name contains the name of the domain con-
- troller after return.
-
- Example:
-
- ret = NetGetDCName( '', 'DOM1', 'Controller' )
- SAY 'The name of the DC is: ' || Controller
-
-
- ----------------------------------------------------------------------------
-
- NetLogonEnum
- ────────────
-
- Supplies information about logged on users.
-
- Syntax:
-
- ret = NetLogonEnum( server, level, buffer, dummy, eread, dummy )
-
-
- Parameter :
- server where to execute
- level 0, 2
- rexx-buffer name of rexx variable containing logon
- data. Depending on the information
- level it contains an usrlog0 or an
- usrlog2 structure.
- eread Number of logged on users
-
- Example:
-
- ret = NetLogonEnum( '', 0, 'Buffer', '', 'eread', '' )
- DO i = 0 TO eread-1
- SAY Buffer.i.usrlog0_name
- END
-
-
- ----------------------------------------------------------------------------
-
- USE SECTION
- ───────────
-
- The functions in the Use category examine or control connections (uses)
- between requesters and servers. Administrative privilege is required to call
- them remotely.
-
-
- Data structures
- ───────────────
-
- Use Information (Level 0)(use_info_0):
-
- ui0_local
- ui0_remote
-
-
- Use Information (Level 1)(use_info_1):
-
- ui1_local
- ui1_remote
- ui1_password
- ui1_status
- ui1_asg_type
- ui1_refcount
- ui1_usecount
-
- where:
- ui?_local string specifying the local device name being redirected
- to the shared resource.
- ui?_remote string specifying the UNC name of the remote resource
- being accessed. The string must be in the form \\serve-
- rname\netname.
- ui?_password string containing the password needed to establish a
- session between a specific requester and server. This
- field is only used by NetUseAdd.
- ui?_status specifies the status of the connection. Seven possible
- values for ui1_status are defined as follows:
- Value Meaning
- 0 Connection valid
- 1 Paused by local requester
- 2 Session removed
- 2 Connection disconnected
- 3 Network error
- 4 Connection being made
- 5 Reconnecting
- ui?_asg_type specifies the type of remote resource being accessed.
- Five types of resources are defined as follows:
- Value Meaning
- -1 Matches the type of the share of the
- server (wildcards are used only when
- ui1_local is a null string).
- 0 Disk device.
- 1 Spooled printer.
- 2 Serial device.
- 3 Interprocess communication (IPC).
- ui?_refcount indicates the number of files, directories, and other
- processes that are open on the remote resource.
- ui?_usecount indicates the number of explicit connections (redirection
- of a local device name) or implicit UNC connections
- (redirection of a null local device name) that are
- established with the resource.
-
- ----------------------------------------------------------------------------
-
- NetUseAdd
- ─────────
-
- Establishes a connection between a local device (or NULL) and a remote re-
- source.
-
- Syntax:
-
- ret = NetUseAdd( server, level, rexx-buffer, dummy )
-
- Parameter:
- server name of computer for which the con-
- nection will be established. For server
- <> "" you will need administrator pri-
- vileges, for the local machine server
- must be ""
- level 1
- rexx-buffer name of rexx variable containing use_i-
- nfo_1 data
-
- Example:
-
- Buffer.ui1_local = 'T:'
- Buffer.ui1_remote = '\\SERVER\D$'
- Buffer.ui1_password = ''
- Buffer.ui1_asg_type = 0
- ret = NetUseAdd( '', 1, 'Buffer', '' )
-
-
- ----------------------------------------------------------------------------
-
- NetUseDel
- ─────────
-
- Ends a connection.
-
- Syntax:
-
- ret = NetUseDel( server, usename, ucond )
-
-
- Parameter:
- server points to an ASCIIZ string containing
- the name of the remote server on which
- the function is to execute. A null poin-
- ter or string specifies a local computer.
- usename points to an ASCIIZ string that contains
- the following information:
- - If the connection is a device name
- connection, the name specified must be
- the name of the local device.
- - If the connection is a UNC connection
- (either implicit or explicit), the name
- must be the UNC name.
- forceflag is one of three values specifying three
- types of disconnection. The following
- options are available:
- Value Meaning
- 0 Maintains the connection in a
- dormant state, decrementing
- usecount. A dormant session can
- quickly be activated as soon as
- reconnection is needed, improv-
- ing system performance.
- 1 Connection is removed only if
- no file directory, or drive is
- opened. usecount is decremented
- for a local device name connec-
- tion and forced to 0 for a UNC
- connection.
- 2 All files, directories, and drives
- open on the connection are
- forced closed.
-
- Example:
-
- ret = NetUseDel( '', 'T:', 2 )
-
-
- ----------------------------------------------------------------------------
-
- NetUseEnum
- ──────────
-
- Lists all current connections
-
- Syntax:
-
- ret = NetUseEnum( server, level, rexx-buffer, dummy, eread, dummy )
-
-
- Parameter:
- server where to execute
- level 0, 1
- rexx-buffer name of rexx variable containing use_i-
- nfo_? data
- eread rexx variable containing number of con-
- nections found
-
- Example:
-
- ret = NetUseEnum( '', 1, 'Buffer', '', 'eread', '' )
- SAY 'Local Remote-name'
- DO i = 0 TO eread-1
- SAY Buffer.i.ui1_local Buffer.i.ui1_remote
- END
-
-
- ----------------------------------------------------------------------------
-
- NetUseGetInfo
- ─────────────
-
- Returns information about a connection.
-
- Syntax:
-
- ret = NetUseGetInfo( server, usename, level, rexx-buffer, dummy, dummy )
-
-
- Parameter:
- server where to perform
- usename name of the connection
- level 1
- rexx-buffer name of rexx variable containing use_i-
- nfo_1 data
-
- Example:
-
- ret = NetUseGetInfo( '', 'T:', 1, 'Buffer', '', '' )
- SAY 'Remote name: ' Buffer.ui1_remote
-
-
- ----------------------------------------------------------------------------
-
- MESSAGE SECTION
- ───────────────
-
- The functions in the Message category are used to send, log, and forward
- messages. The administrator can execute these functions remotely.
-
- Data structures
- ───────────────
-
- Message Information (Level 0)(message_info_0) :
-
- msgi0_name
-
-
- Message Information (Level 1) (message_info_1)
-
- msgi1_name
- msgi1_forward_flag
- msgi1_forward
-
-
- where:
-
- msgi?_name specifying which messaging name to send the message.
- msgi?_forward_flag specifies whether messages will be sent to a user or
- application on the local computer, or forwarded to a
- user or application on a remote computer. msgi1_-
- forward_flag can be defined as follows:
- Bit Meaning
- 0-1 Reserved; must be 0.
- 2 If 1, specifies a user name on a remote
- computer.
- 3 Reserved; must be 0.
- 4 If 1, specifies a user name on the local
- computer.
- 5-7 Reserved; must be 0.
- msgi?_forward string specifying the user name to which the message
- will be sent, if messages are to be forwarded.
-
- ----------------------------------------------------------------------------
-
- NetMessageBufferSend
- ────────────────────
-
- Send a buffer to selected messengers
-
- Syntax:
-
- ret = NetMessageBufferSend( server, msgname, buffer, dummy )
-
-
- Parameter:
- server where the message will be sent
- msgname receiver, for broadcasts enter "*"
- buffer message to send
-
- Example:
-
- ret = NetMessageBufferSend( '', '*', 'Hello World !', '' )
-
-
- ----------------------------------------------------------------------------
-
- NetMessageFileSend
- ──────────────────
-
- Send a file to selected messengers
-
- Syntax:
-
- ret = NetMessageFileSend( server, msgname, filename )
-
-
- Parameter:
- server where the message will be send
- msgname receiver, for broadcasts enter "*"
- filename file containing the message
-
-
- Example:
-
- ret = NetMessageFileSend( '', '*', 'C:\ADMIN.TXT' )
-
- ----------------------------------------------------------------------------
-
- NetMessageNameEnum
- ──────────────────
-
- Lists the names in the message name table
-
- Syntax:
-
- ret = NetMessageNameEnum( server, level, rexx-buffer, dummy, eread,
- dummy )
-
-
- Parameter:
- server see above
- level 0, 1
- rexx-buffer name of rexx variable containing mes-
- sage_info_? data
- eread number of entries
-
- Example:
-
- ret = NetMessageNameEnum('', 0, 'Buffer', '', 'eread', '' )
- DO i = 0 TO eread-1
- SAY Buffer.i.msgi0_name
- END
-
- ----------------------------------------------------------------------------
-
- NetMessageNameAdd
- ─────────────────
-
- Registers a name in the message name table
-
- Syntax:
-
- ret = NetMessageNameAdd( server, name, fwd_action )
-
-
- Parameter:
- server see above
- name name to register
- fwd_action action to take if name is already for-
- warded. If fwd_action is non-zero, the
- name is added to the message name
- table; a 0 value causes an error to be
- returned if the name has already been
- forwarded.
-
- Example:
-
- ret = NetMessageNameAdd( '', 'JOHN', 0 )
-
- ----------------------------------------------------------------------------
-
- NetMessageNameDel
- ─────────────────
-
- Deregisters a name in the message name table
-
- Syntax:
-
- ret = NetMessageNameDel( server, name, fwd_action )
-
-
- Parameter:
- server see above
- name name to deregister
- fwd_action specifies the action to take if the mes-
- sages for name are being forwarded to
- another name. If fwd_action is non-
- -zero, the forwarded name is deleted. A
- 0 value prevents the name from being
- deleted.
-
- Example:
-
- ret = NetMessageNameDel( '', 'JOHN', 0 )
-
- ----------------------------------------------------------------------------
-
- NetMessageNameFwd
- ─────────────────
-
- Modifies the message name table to forward messages to another messaging
- name
-
- Syntax:
-
- ret = NetMessageNameFwd( server, name, fwd_name, del_for )
-
-
- Parameter:
- server see above
- name name in message name table
- forwardname points to an ASCIIZ string specifying
- the name to receive name's forwarded
- messages.
- delfor specifies the action to take if name
- forwards messages to another name. If
- non-zero, then any previous forwarded
- user name is deleted; if 0, it is not
- deleted and an error is returned.
-
-
- Example:
-
- ret = NetMessageNameFwd( '', 'JOHN', 'MARY', 0 )
-
-
- ----------------------------------------------------------------------------
-
- NetMessageNameGetInfo
- ─────────────────────
-
- Get information about a registered name
-
- Syntax:
-
- ret = NetMessageNameGetInfo( server, name, level, buffer, dummy,
- dummy )
-
-
- Parameter:
- server see above
- name name to get information
- level 1
- rexx-buffer name of rexx variable containing mes-
- sage_info_1 data
-
- Example:
-
- ret = NetMessageNameGetInfo( '', 'JOHN', 1, 'buffer', '', '' )
- SAY 'Name: ' Buffer.msgi1_name
- SAY 'Forward flag: ' Buffer.msgi1_forward_flag
- SAY 'Forward to: ' Buffer.msgi1_forward
-
-
- ----------------------------------------------------------------------------
-
- NetMessageNameUnFwd
- ───────────────────
- Unforwards a message name
-
- Syntax:
-
- ret = NetMessageNameUnFwd( server, name )
-
-
- Parameter:
- server see above
- name name whose message forwarding is to
- be canceled
-
- Example:
-
- ret = NetMessageNameUnFwd( '', 'MARY' )
-
- ----------------------------------------------------------------------------
-
- NetMessageLogFileSet
- ────────────────────
-
- Specifies a file to log messages received by registered users and enables or
- disables logging.
-
- Syntax:
-
- ret = NetMessageLogFileSet( server, filename, on )
-
-
- Parameter:
- server see above
- filename specifies the path name of the device
- (LPTn or COMn) or file to which the
- messages are logged. If filename is "",
- no message file will be used; in this
- case, the value of on must be 0.
- on specifies whether (1) or not (0) logging
- is enabled.
-
- Example:
-
- ret = NetMessageLogFileSet( '', 'C:\IBMLAN\LOGS\NEW.LOG', 1 )
-
- ----------------------------------------------------------------------------
-
- NetMessageLogFileGet
- ────────────────────
-
- Returns the file to log messages received by registered users and reports
- whether or not logging is enabled.
-
- Syntax:
-
- ret = NetMessageLogFileGet( server, filename, dummy, pon )
-
-
- Parameter:
- server see above
- filename rexx-variable that will contain the name
- of the message file.
- pon rexx-variable that will contain the status
- of message logging
-
- Example:
-
- ret = NetMessageLogFileGet( '\\SERVER', 'File', '', 'pon' )
- SAY 'Log file: ' File
- IF pon THEN SAY 'Logging enabled'
- ELSE SAY 'Logging disabled.'
-
- ----------------------------------------------------------------------------
-
- CONFIGURATION SECTION
- ─────────────────────
-
- The functions in the Configuration category retrieve network configuration
- information from the IBMLAN.INI file. The NetConfigGet2 function retrieves
- a single parameter value for given network component; NetConfigGetAll2
- returns all of the parameters for given components.
-
- The APIs NetConfigGet and NetConfigGetAll are replaced by their newer
- counterparts NetConfigGet2 and NetConfigGetAll2 and are therefore obsolete.
-
-
- NetConfigGet2
- ─────────────
-
- Retrieves a specified parameter value from the IBMLAN.INI file of a local
- computer or a remote server.
-
- Syntax:
-
- ret = NetConfigGet2( server, dummy, component, parameter,
- rexx-buffer, dummy, dummy )
-
-
- Parameter:
- server see above
- component the name of the component to search.
- parameter the parameter whose value is to be
- returned.
- rexx-buffer name of rexx variable which will con-
- tain the parameters value
-
-
- Example:
-
- ret = NetConfigGet2( '', '', 'REQUESTER', 'WRKSERVICES', 'Buffer', '', '' )
- SAY 'Workstation services : ' Buffer
-
-
- ----------------------------------------------------------------------------
-
- NetConfigGetAll2
- ────────────────
- Retrieves all parameter values for a component from the IBMLAN.INI file of
- a local computer or a remote server.
-
- Syntax:
-
- ret = NetConfigGet2( server, dummy, component, rexx-buffer, dummy,
- dummy, dummy )
-
-
- Parameter:
- server see above
- component the name of the component to search.
- rexx-buffer name of rexx variable which will con-
- tain the parameters values. In Buffer.0
- is the number of entries read returned.
- Buffer.1 to Buffer.n contain a formatted
- parameter line of the IBMLAN.INI.
-
- Example:
-
- ret = NetConfigGetAll2( '', '', 'REQUESTER', 'Buffer', '', '', '' )
- IF ret = 0 THEN DO
- FOR i = 0 TO Buffer.0
- SAY Buffer.i
- END
-
-
- ----------------------------------------------------------------------------
-
- CONNECTION SECTION
- ──────────────────
-
- The NetConnectionEnum function lists all connections made to a server by a
- requester client or all connections made to the shared resources of a server.
-
-
- Data structures
- ───────────────
-
- Connection Information (Level 0)(conn_info_0) :
-
- coni0_id
-
-
- Connection Information (Level 1)(conn_info_1):
-
- coni1_id
- coni1_type
- coni1_num_opens
- coni1_num_users
- coni1_time
- coni1_username
- coni1_netname
-
- where:
-
- coni?_id is the connection identification number.
- coni?_type indicates the type of connection made from the local
- device name to the shared resource. Defined are the fol-
- lowing types of connection:
- Value Meaning
- 0 Disk connection.
- 1 Spooler queue connection.
- 2 Serial device connection.
- 3 Interprocess communication (IPC) con-
- nection.
- coni?_num_opens indicates the number of files that are currently open as
- a result of the connection.
- coni?_num_users indicates the number of users on the connection.
- coni?_time indicates the number of seconds the connection has
- been established.
- coni?_username string indicating the user that made the connection.
- coni?_netname string indicating either the netname of the shared
- resource of the server or the computer name of the
- requester, depending on which name was specified as
- the qualifier parameter of the NetConnectionEnum
- function. The type of name supplied to coni1_netname
- is the inverse of the type supplied to the qualifier
- parameter.
-
- ----------------------------------------------------------------------------
-
- NetConnectionEnum
- ─────────────────
-
- Gives a listing of connections made to a shared resource of a server, or of all
- connections established from a particular computer to a server.
-
- Syntax:
-
- ret = NetConnectionEnum( server, qualifier, level, buffer, dummy,
- eread, dummy )
-
-
- Parameter:
- server see above
- qualifier specifies either the netname of the
- shared resource whose connections will
- be listed or the client name of the re-
- quester whose connections to the shared
- resource will be listed (qualifier cannot
- be a null string).
- level 1
- rexx-buffer name of rexx variable containing con-
- n_info_? data
- eread rexx-variable containing number of
- entries found
-
-
- Example:
-
- ret = NetConnectionEnum( '\\SERVER', 'PRINTER1', 1, 'Buffer', '', 'eread', '' )
- DO i = 0 TO eread-1
- SAY Buffer.i.coni1_username
- END
-
- ----------------------------------------------------------------------------
-
- ERROR SECTION
- ─────────────
-
- Each time an error condition occurs during a network operation, an error log
- entry can be generated by NetErrorLogWrite to record error information. The
- other two functions enable opening (NetErrorLogRead) and clearing
- (NetErrorLogClear) of the error log file (which stores the entries).
-
- Error log entries are stored as ASCII text, preceded by a hexadecimal header.
- The default error log file name is \IBMLAN\LOGS\NET.ERR. All error
- logging functions perform their operations on this file.
-
- These APIs are not supported yet:
- - NetErrorLogOpen
- - NetErrorLogRead
- - NetErrorLogWrite
-
-
-
- NetErrorLogClear
- ────────────────
-
- Clears (and optionally saves) the computers error log file
-
- Syntax:
-
- ret = NetErrorLogClear( server, backupfile, dummy )
-
- Parameter:
- server see above
- backupfile If not "", the error log is MOVED to
- this file, before it is cleared. You can
- specify a different directory and name,
- but you must specify the same local
- drive where the LAN Server is in-
- stalled, otherwise an error 17 will be
- returned.
-
- ----------------------------------------------------------------------------
-
- FILE SECTION
- ────────────
-
- The functions in the File category provide a system for monitoring the file,
- device, and pipe resources that are opened on a server and for closing one of
- these resources if necessary.
-
- The following API are only held in the NETAPI libary for compatibility
- reasons and are not supported by RexxLan/2:
- - NetFileClose (replaced by NetFileClose2)
- - NetFileEnum (replaced by NetFileEnum2)
- - NetFileGetInfo (replaced by NetFileGetInfo2)
-
-
- Data structures
- ───────────────
-
- Opened Resources (Level 2)(file_info_2):
-
- fi2_id
-
-
- Opened Resources (Level 3)(file_info_3):
-
- fi3_id
- fi3_permissions
- fi3_num_locks
- fi3_pathname
- fi3_username
-
- where:
- fi?_id is the identification number assigned to the resource at
- opening.
- fi?_permissions indicates the access permissions of the opening applica-
- tion. The bit mask of fi3_permissions is defined as
- follows:
- Mask Meaning
- 0x1 Permission to read a resource, and by
- default, execute the resource.
- 0x2 Permission to write to a resource.
- 0x4 Permission to create a resource; data
- can be written when creating the re-
- source.
- fi?_num_locks indicates the number of file locks on the file, device, or
- pipe.
- fi?_pathname string giving the path name of the opened resource.
- fi?_username string indicating the user that opened the resource.
-
-
- ----------------------------------------------------------------------------
-
- NetFileEnum2
- ────────────
-
- Supplies information about some or all open files on the server. The re-
- sume_key function, as described in the LAN Application Programmers
- Reference, will not be passed through the REXX API, the REXX function
- iterates the NetFileEnum2 calls, until it retrieved all information.
-
- Syntax:
-
- ret = NetFileEnum2( server, basepath, user, level, buffer, dummy,
- eread, dummy, dummy )
-
- Parameter:
- server see above
- basepath base path for enumeration. If not
- NULL, basepath serves as a qualifier to
- the enumeration. The entries returned
- are limited to those whose name begins
- with the qualifier string.
- username indicates the name of the user. If not
- NULL, username serves as a qualifier
- to the enumeration. The files returned
- are limited to those whose opener
- username matches the qualifier.
- level 2, 3
- rexx-buffer name of rexx variable containing file
- data (file_info_2 or file_info_3 struct)
- eread contains number of entries found
-
- Example:
-
- ret = NetFileEnum2( '\\SERVER', 'D:\', '', 3, 'Buffer', '', 'eread', '', '' )
- SAY 'ID Filename'
- DO i = 0 to eread-1
- SAY Buffer.i.fi3_id Buffer.i.fi3_pathname
- END
-
- ----------------------------------------------------------------------------
-
- NetFileGetInfo2
- ───────────────
-
- Retrieves information about a particular opening of a server resource.
-
- Syntax:
-
- ret = NetFileGetInfo2( server, file, level, buffer, dummy, dummy )
-
-
- Parameter:
- server see above
- file identifier of open file.
- level 3
- rexx-buffer name of rexx variable containing
- file_info_3 data
-
- Example:
-
- SAY 'Enter file ID:'
- PULL id
- ret = NetFileGetInfo2( '', id, 3, 'Buffer', '', '' )
- SAY 'User : ' Buffer.fi3_username
- SAY 'File : ' Buffer.fi3_pathname
-
-
- ----------------------------------------------------------------------------
-
- NetFileClose2
- ─────────────
-
- forces a close to an open file
-
- Syntax:
-
- ret = NetFileClose2( server, file-ID )
-
-
- Parameter:
- server see above
- file-ID identifier of open file.
-
-
-
- ----------------------------------------------------------------------------
-
- SERVER SECTION
- ──────────────
-
- With the functions in the Server category, an application can perform remote
- administrative tasks on a local or remote server.
- The API NetServerEnum was replaced by NetServerEnum2 and is not
- supported.
-
- Data structures
- ───────────────
-
- Server Information (Level 0) (server_info_0):
-
- sv1_name
-
- Server Information (Level 1) (server_info_1):
-
- sv1_name
- sv1_version_major
- sv1_version_minor
- sv1_type
- sv1_comment
-
- Server Information (Level 2) (server_info_2):
-
- sv2_name sv2_chdevq
- sv2_version_major sv2_chdevjobs
- sv2_version_minor sv2_connections
- sv2_type sv2_shares
- sv2_comment sv2_openfiles
- sv2_ulist_mtime sv2_sessopens
- sv2_glist_mtime sv2_sessvcs
- sv2_alist_mtime sv2_sessreqs
- sv2_users sv2_opensearch
- sv2_disc sv2_activelocks
- sv2_alerts sv2_numreqbuf
- sv2_security sv2_sizreqbuf
- sv2_auditing sv2_numbigbuf
- sv2_numadmin sv2_numfiletasks
- sv2_lanmask sv2_alertsched
- sv2_hidden sv2_erroralert
- sv2_announce sv2_logonalert
- sv2_anndelta sv2_accessalert
- sv2_guestacct sv2_diskalert
- sv2_userpath sv2_netioalert
- sv2_chdevs sv2_maxauditsz
- sv2_srvheuristics
-
-
- Server Information (Level 3)(server_info_3):
-
- sv3_name sv3_connections
- sv3_version_major sv3_shares
- sv3_version_minor sv3_openfiles
- sv3_type sv3_sessopens
- sv3_comment sv3_sessvcs
- sv3_ulist_mtime sv3_sessreqs
- sv3_glist_mtime sv3_opensearch
- sv3_alist_mtime sv3_activelocks
- sv3_users sv3_numreqbuf
- sv3_disc sv3_sizreqbuf
- sv3_alerts sv3_numbigbuf
- sv3_security sv3_numfiletasks
- sv3_auditing sv3_alertsched
- sv3_numadmin sv3_erroralert
- sv3_lanmask sv3_logonalert
- sv3_hidden sv3_accessalert
- sv3_announce sv3_diskalert
- sv3_anndelta sv3_netioalert
- sv3_guestacct sv3_maxauditsz
- sv3_pad1 sv3_srvheuristics
- sv3_userpath sv3_auditedevents
- sv3_chdevs sv3_autoprofile
- sv3_chdevq sv3_autopath
- sv3_chdevjobs
-
- where:
- sv?_name string containing the name of a server.
- sv?_version_major major release version number of the LAN Server
- software.
- sv?_version_minor minor release version number of the LAN Server
- software.
- sv?_type type of software the computer is running.
- Mask Type of Software
- 0x01 Requester
- 0x02 Server
- 0x08 Domain controller
- 0x10 Backup domain controller
- 0x20 Time server
- -1 All types of servers
- sv?_comment string containing a comment describing the server.
- sv?_ulist_mtime last time (in seconds from 00:00:00 1 January, 1970)
- the users list was modified.
- sv?_glist_mtime last time (in seconds from 00:00:00 1 January, 1970)
- the groups list was modified.
- sv?_alist_mtime last time (in seconds from 00:00:00 1 January, 1970)
- the access control list was modified.
- sv?_users number of users that are allowed on the server.
- sv?_disc indicates the auto-disconnect time (in minutes). A
- session is disconnected if it is idle longer than the time
- specified by sv2_disc. If 0, auto-disconnect is not
- enabled.
- sv?_alerts string containing the list of user names on the alert
- table of the server. Spaces separate the names.
- sv?_security specifies the security type of the server.
- Value Type of Security
- 0 Share-level
- 1 User-level
- sv?_auditing indicates whether auditing is enabled on the server. If
- 0, auditing is disabled. If non-zero, the server is audit-
- ing all OS/2 LAN Server activities, as described in
- Auditing Category.
- sv?_numadmin number of administrators a server can accommodate.
- sv?_lanmask determines the order in which the network device
- drivers are served.
- sv?_hidden determines whether the server is visible to other com-
- puters in the same domain.
- Value Meaning
- 0 Server
- 1 Hidden server, not visible
- sv?_announce network announce delta (in seconds), which determines
- how often the server will be announced to other com-
- puters on the network.
- sv?_anndelta random announce rate (in milliseconds) for
- sv?_announce. The announce interval (sv?_announce)
- can vary by the amount specified in sv?_anndelta (for
- example, it could vary from 9.999 seconds to 10.001
- seconds instead of being exactly 10 seconds each time).
-
- sv?_guestacct string containing the name of a server's reserved
- GUEST user account.
- sv?_userpath string containing the path name to user directories.
- sv?_chdevs indicates the number of serial devices that can be
- shared on the server.
- sv?_chdevq number of serial device queues that can coexist on the
- server.
- sv?_chdevjobs number of serial device jobs that can be pending on a
- server.
- sv?_connections number of connections to netnames that are allowed on
- a server.
- sv?_shares number of netnames a server can accommodate.
- sv?_openfiles number of files that can be opened at once.
- sv?_sessopens number of files that can be opened in one session.
- sv?_sessvcs maximum number of virtual circuits per client.
- sv?_sessreqs number of simultaneous requests that a client can make
- on any virtual circuit.
- sv?_opensearch number of searches that can be opened at once.
- sv?_activelocks number of file locks that can be active.
- sv?_numreqbuf number of server buffers that are provided.
- sv?_sizreqbuf size (in bytes) of each server buffer.
- sv?_numbigbuf number of 64KB server buffers that are provided.
- sv?_numfiletasks number of processes that can access the operating
- system at one time.
- sv?_alertsched alert interval (in seconds) for notifying an administrator
- of a network event.
- sv?_erroralert number of entries that can be written to the error log
- file during a sv2_alertsched interval before notifying an
- administrator.
- sv?_logonalert number of failed logon attempts to allow a user before
- notifying an administrator.
- sv?_accessalert number of failed file accesses to allow before issuing an
- administrative alert.
- sv?_diskalert number of kilobytes of free disk space, at which, an
- administrator must be notified that the free space is low.
-
- sv?_netioalert network I/O error ratio (in tenths of a percent) to allow
- before notifying an administrator.
- sv?_maxauditsz maximum audit file size
- sv?_srvheuristics string of flags used to control the operations of a server.
- sv?_auditedevents is the audit event control mask. Setting bits in the mask
- to 1 enables auditing of events according to the follow-
- ing manifests:
- Value Meaning
- 0x1 Service state change
- 0x6 Successful sess. logon req.
- 0x18 Unsuccessful sess. logon req.
- 0x1E All sess. logon and logoff req.
- 0x60 Successful network logon req.
- 0x180 Unsuccessful network logon req.
- 0x1E0 All network logon and logoff req.
- 0x1FE All logon and logoff requests (network
- and session)
- 0x600 Successful share requests
- 0x1800 Unsuccessful share requests
- 0x1E00 All share requests
- 0x2000 Changes to the user or group account
- database
- 0x4000 Changes to the access control list data-
- base
- 0x8000 Resource access as defined by the per
- resource auditing options specified in
- the access control list
- 0x10000 Logon limit violations
- sv?_autoprofile bit mask for automatic server configuration as follows:
- Value Meaning
- 0x1 Autoload at server startup.
- 0x2 Autoload at server shutdown.
- sv?_autopath where to save and load the server information for
- autoload.
-
- ----------------------------------------------------------------------------
-
- NetServerAdminCommand
- ─────────────────────
-
- Executes a command on a server. The output is queued in the active REXX
- Queue.
-
- Syntax:
-
- ret = NetServerAdminCommand( server, command, result, dummy, dummy,
- dummy, dummy )
-
-
- Parameter:
- server see above
- command contains the command to execute
- result name of rexx variable containing the
- result code of the command
-
-
- Example:
-
- /* REXX */
- ret = NetServerAdminCommand( "\\SERVER", "DIR C:\", "RESULT", "", "", "", "" )
- IF ret = 0 THEN DO
- SAY "Result of DIR C:\ on Server \\SERVER: " || RESULT
- DO QUEUED()
- PULL line
- SAY line
- END
- END
-
-
- ----------------------------------------------------------------------------
-
- NetServerDiskEnum
- ─────────────────
-
- Retrieves a list of disk drives on a server.
-
- Syntax:
-
- ret=NetServerDiskEnum( server, level, buffer, dummy, eread, dummy )
-
-
- Parameter:
- server see above
- level 0
- rexx-buffer name of rexx variable containing list of
- found drives (buffer.0 to buffer.n-1)
- eread number of entries found
-
-
- Example:
-
- ret = NetServerDiskEnum( '\\SERVER', 0, 'Buffer', '', 'eread', '' )
- DO i = 0 TO eread-1
- SAY 'Drive : ' Buffer.i
- END
-
-
- ----------------------------------------------------------------------------
-
- NetServerEnum2
- ──────────────
-
- Enumerates the set of all servers visible on the network. The type of
- NetServerEnum2 matches the bit mask in the field.
-
-
- Syntax:
-
- ret = NetServerEnum2( server, level, buffer, dummy, eread, dummy,
- servertype, domain )
-
-
- Parameter:
- server where the command will be executed
- level 0, 1
- rexx-buffer name of REXX variable containing
- server_info_? data
- eread number of found servers
- servertype specifies the types of servers to enu-
- merate.
- This parameter is tested against the
- svx_type element of each entry. Entries
- that match at least one of the specified
- bits are included in the returned buffer.
- For the defined values refer to the de-
- scription of the server data structures.
- domain if not '' only server in specified domain
- were listed.
-
- Example:
-
- ret = NetServerEnum2( '', 0, 'buffer', '', 'eread', '', -1, '' )
- DO i = 0 TO eread-1
- SAY 'Servername : ' Buffer.sv0_name
- END
-
- ----------------------------------------------------------------------------
-
- NetServerGetInfo
- ────────────────
- Retrieves information about a particular server.
-
- Syntax:
-
- ret = NetServerGetInfo( server, level, buffer, dummy, dummy )
-
-
- Parameter:
- server see above
- level 1, 2, 3
- rexx-buffer name of rexx variable containing serv-
- er_info_? data
-
- Example:
-
- ret = NetServerGetInfo( '\\SERVER', 3, 'buffer', '','' )
- SAY 'Servers software level: '|| Buffer.sv3_version_major || '.' ||
- Buffer.sv3_version_minor
-
- ----------------------------------------------------------------------------
-
- NetServerSetInfo
- ────────────────
- Changes information about a particular server.
-
- Syntax:
-
- ret = NetServerSetInfo( server, level, buffer, dummy, parmnum )
-
- Parameter:
- server see above
- level 1, 2, 3
- rexx-buffer name of rexx variable containing serv-
- er_info_? data
- paramnum determines whether buffer contains a
- complete server_info data or a single
- data component. If parmnum is 0, buf
- must contain a server_info_? data struc-
- ture. Otherwise, parmnum must specify
- the ordinal position value for one of the
- following data structure components:
- Value Component
- 5 svx_comment
- 10 svx_disc
- 11 svx_alerts
- 16 svx_hidden
- 17 svx_announce
- 18 svx_anndelta
- 37 svx_alertsched
- 38 svx_erroralert
- 39 svx_logonalert
- 40 svx_accessalert
- 41 svx_diskalert
- 42 svx_netioalert
- 43 svx_maxauditsz
-
-
- ----------------------------------------------------------------------------
-
- SESSION SECTION
- ───────────────
-
- The functions in the Session category control network sessions established
- between requesters and servers.
- The session info level 0, 1 and 2 are only accessable for administrators, a user
- can retrieve session infos through level 10.
-
- Data structures
- ───────────────
-
- Session Information (Level 0) (session_info_0):
-
- sesi0_cname
-
-
- Session Information (Level 1) (session_info_1):
-
- sesi1_cname
- sesi1_username
- sesi1_num_conns
- sesi1_num_opens
- sesi1_num_users
- sesi1_sess_time
- sesi1_idle_time
- sesi1_user_flags
-
- Session Information (Level 2) (session_info_2):
-
- sesi2_cname sesi2_sess_time
- sesi2_username sesi2_idle_time
- sesi2_num_conns sesi2_user_flags
- sesi2_num_opens sesi2_cltype_name
- sesi2_num_users
-
- Session Information (Level 10)(session_info_10):
-
- sesi10_cname
- sesi10_username
- sesi10_sess_time
- sesi10_idle_time
-
- where:
- sesi?_cname string containing the computer name of the requester
- that established the session.
- sesi?_username string containing the name of the user who established
- the session.
- sesi?_num_conns number of connections that have been made during the
- session.
- sesi?_num_opens number of files, devices, and pipes that have been
- opened during the session.
- sesi?_num_users number of sessions that are established between the
- server and the requester.
- sesi? _sess_time number of seconds a session has been active.
- sesi?_idle_time number of seconds a session has been idle.
- sesi?_user_flags manner in which the user established the session. The
- bit mask for sesi?_user_flags is defined as follows:
- Value Meaning
- 1 sesi?_username established the session
- using a GUEST account.
- 2 sesi?_username established the session
- without using password encryption.
- sesi?_cltype_name type of client that established the session. The defined
- types are as follows:
- Type Meaning
- 'Down Level': Old clients; for example, LAN Server
- 1.0 clients
- 'DLR 2.0' DOS LAN Requester 2.0 clients
- 'OS/2 LS 1.3' OS/2 LAN Server 1.3 clients
- 'OS/2 LS 2.0' OS/2 LAN Server 2.0 clients
- 'OS/2 LS 3.0' OS/2 LAN Server 3.0 clients
-
- ----------------------------------------------------------------------------
-
- NetSessionEnum
- ──────────────
-
- Supplies information about all sessions on the server.
-
- Syntax:
-
- ret = NetSessionEnum( server, level, buffer, dummy, eread, dummy )
-
-
- Parameter:
- server see above
- level 0, 1, 2, 10
- rexx-buffer name of rexx variable containing ses-
- sion_info_? data
- eread contains number of entries found
-
- Example:
-
- ret = NetSessionEnum( '\\SERVER', 1, 'Buffer', '', 'eread', '' )
- SAY eread ' Session found:'
- SAY 'Computer User '
- DO i = 0 TO eread-1
- SAY BUFFER.i.SESI1_cname BUFFER.i.SESI1_username
- END
-
-
- ----------------------------------------------------------------------------
-
- NetSessionGetInfo
- ─────────────────
-
- Retrieves information about a particular session on a server
-
- Syntax:
-
- ret = NetSessionGetInfo( server, client, level, buffer, dummy,
- dummy )
-
- Parameter:
- server see above
- client workstation name whose session is to
- be monitored
- level 0, 1, 2, 10
- rexx-buffer name of rexx variable containing ses-
- sion_info_? data
-
- Example:
-
- ret=NetSessionGetInfo( '\\SERVER', 'PC_JOHN', 2, 'Buffer', '', '' )
- SAY 'User having a session on John's PC:' Buffer.sesi1_user_name
-
-
- ----------------------------------------------------------------------------
-
- NetSessionDel
- ─────────────
- Forces a close to a session
-
- Syntax:
-
- ret = NetSessionDel( server, client-name, dummy )
-
-
- Parameter:
- server see above
- client-name name of client whose session is to be
- closed
-
-
- Example:
-
- ret = NetSessionDel( '\\SERVER', 'PC_JOHN', '' )
-
-
- ----------------------------------------------------------------------------
-
- SHARE SECTION
- ─────────────
-
-
- Share is the term applied to the local device of a server (such as a disk drive,
- print device, or named pipe) that other applications on the network can access.
- A unique netname is assigned to each shared resource to enable remote users
- and applications to refer to the share, rather than the local device name of the
- share.
-
-
- Data structures
- ───────────────
-
- Share Information (Level 0) (share_info_0):
-
- shi0_netname
-
-
- Share Information (Level 1) (share_info_1):
-
- shi1_netname
- shi1_type
- shi1_remark
-
-
- Share Information (Level 2) (share_info_2):
-
- shi2_netname
- shi2_type
- shi2_remark
- shi2_permissions
- shi2_max_uses
- shi2_current_uses
- shi2_path
- shi2_passwd
-
-
- where:
- shi?_netname string containing the netname of a resource.
- shi?_type is one of four values indicating the type of share, are
- defined as follows:
- Value Share Type
- 0 Disk drive
- 1 Spooler queue
- 2 Serial device
- 3 Interproc. communication (IPC)
- The shi2_type value affects the requirements for certain
- other share_info_2 components when the NetShareAdd
- function is called. See NetShareAdd "Remarks" for
- details.
- shi?_remark string containing an optional comment about the shared
- resource.
- shi?_max_uses gives the maximum number of concurrent connections
- that the shared resource can accommodate (unlimited if
- the shi2_max_uses value is -1).
- shi?_current_uses indicates the number of connections that are currently
- made to the resource.
- shi?_path string containing the local path name of the shared re-
- source. For disks, shi?_path is the path being shared.
- For spooler queues, shi?_path is the name of the spooler
- queue being shared. For serial device queues, shi?_path
- is a string of one or more communication device names
- separated by blanks (for example, COM1 COM2
- COM6).
-
- ----------------------------------------------------------------------------
-
- NetShareAdd
- ───────────
- Adds a shared resource on a server
-
- Syntax:
-
- ret = NetShareAdd( server, level, rexx-buffer, dummy )
-
-
- Parameter:
- server UNC servername like \\SERVER1
- level must be 2
- rexx-buffer name of REXX variable containing the
- share_info_2 data
-
- Example:
-
- BUFFER.SHI2_netname = 'SRV_D'
- BUFFER.SHI2_type = 0
- BUFFER.SHI2_remark = 'Shared server drive D:\'
- BUFFER.SHI2_permissions = 0
- BUFFER.SHI2_max_uses = -1
- BUFFER.SHI2_path = 'D:\'
- BUFFER.SHI2_passwd = ''
- ret = NetShareAdd( '\\SERVER', 2, 'buffer', '' )
-
-
- ----------------------------------------------------------------------------
-
- NetShareGetInfo
- ───────────────
-
- Get information about a shared resource on a server.
-
- Syntax:
-
- ret = NetShareGetInfo( server, netname, level, rexx-buffer, dummy,
- dummy )
-
-
- Parameter:
- server UNC servername like \\SERVER1
- netname Alias for a resource
- level 0, 1, 2
- rexx-buffer name of REXX variable containing the
- share_info_? datas
-
- Example:
-
- ret = NetShareGetInfo( '\\SERVER', 'SRV_D', 2, 'buffer', '', '' )
- SAY 'Max Uses for SRV_D : ' Buffer.shi2_max_uses
-
-
- ----------------------------------------------------------------------------
-
- NetShareSetInfo
- ───────────────
-
- Set information about a shared resource on a server
-
- Syntax:
-
- ret = NetShareSetInfo( server, netname, level, rexx-buffer, dummy,
- parmnum )
-
-
- Parameter:
- server UNC servername like \\SERVER1
- netname Alias for a resource
- level 1, 2
- rexx-buffer name of REXX variable containing the
- share_info_? data
- parmnum specifies whether a specific component
- of the share_info or the entire data
- structure is being set. If parmnum is 0,
- then buffer must contain a complete
- share_info data array.
- Otherwise, parmnum must pass the
- ordinal position value for one of the
- following share_info_2 data structure
- components:
- Value Component
- 4 shi1_remark or shi2_remark
- 6 shi2_max_uses
-
- Example:
-
- /* change the max user parameter to 10 */
- ret = NetShareSetInfo( '\\SERVER', 'SRV_D', 2, 10, '', 6 )
-
-
- ----------------------------------------------------------------------------
-
- NetShareCheck
- ─────────────
- Queries whether a server is sharing a device. You can only test whether the
- server share one portion of a drive. A test on C: for example returns 0 if one
- of its directories is shared. If no directory of a drive is shared, the API returns
- a non-zero return code.
-
- Syntax:
-
- ret = NetAccessCheck( server, device, type )
-
-
- Parameter:
- server contains the name of the remote server
- on which the function is to execute
- device contains the name of the device to be
- checked.
- type indicates the type of shared device:
- Value Share Type
- 0 Disk drive
- 1 Spooler queue
- 2 Serial device
- 3 Interproc. communication (IPC)
-
-
- ----------------------------------------------------------------------------
-
- NetShareEnum
- ────────────
- Lists shared resources
-
- Syntax:
-
- ret = NetShareEnum( server, level, buffer, dummy, eread, dummy )
-
-
- Parameter:
- server name of server, e.g. \\SERVER1
- level 0, 1, 2
- Rexx-buffer name of Rexx variable, containing the
- found resources
- eread Rexx variable containing the number of
- resources found
-
- Example:
-
- ret = NetShareEnum( '\\SERVER', 1, 'buffer', '', 'eread', '' )
- DO i = 0 TO eread-1
- SAY Buffer.i.shi1_netname Buffer.i.shi1_remark
- END
-
-
- ----------------------------------------------------------------------------
-
- NetShareDel
- ───────────
-
- Stops sharing a resource
-
- Syntax:
-
- ret = NetShareDel( server, netname, dummy )
-
-
- Parameter:
- server name of server (e.g. "\\SERVER1")
- netname name of the shared resource
-
- Example:
-
- rc = NetShareDel( '\\SERVER', 'SRV_D', '' )
-
-
- ----------------------------------------------------------------------------
-
- STATISTICS SECTION
- ──────────────────
-
-
- LAN Server accumulates a set of operating statistics for requesters and servers
- from the time that the requester or server service is started. To retrieve the
- statistics, call the NetStatisticsGet2 function.
-
- The NetStatisticsGet and NetStatisticsClear are replaced by NetStatisticsGet2
- and are now obsolete.
-
-
- Data structures
- ───────────────
-
- Data Structure of Requester Statistics :
-
- stw0_start stw0_autorec
- stw0_numNCB_r stw0_bytessent_r_high
- stw0_numNCB_s stw0_bytessent_r_low
- stw0_numNCB_a stw0_bytesrcvd_r_high
- stw0_fiNCB_r stw0_bytesrcvd_r_low
- stw0_fiNCB_s stw0_bytessent_s_high
- stw0_fiNCB_a stw0_bytessent_s_low
- stw0_fcNCB_r stw0_bytesrcvd_s_high
- stw0_fcNCB_s stw0_bytesrcvd_s_low
- stw0_fcNCB_a stw0_bytessent_a_high
- stw0_sesstart stw0_bytessent_a_low
- stw0_sessfailcon stw0_bytesrcvd_a_high
- stw0_sessbroke stw0_bytesrcvd_a_low
- stw0_uses stw0_reqbufneed
- stw0_usefail stw0_bigbufneed
-
-
- where:
- stw0_start time that statistics collection started. This field indi-
- cates the date or time that the statistics were last
- cleared; that means, it indicates the time period over
- which the returned statistics were collected.
- stw0_numNCB fields indicate the number of network control blocks
- (NCBs) issued from each source and include failed
- NCBs. To get the total successful NCBs issued it is
- necessary to subtract the numbers of failed NCBs.
- These numbers are held as follows in the fiNCB and
- fcNCB fields:
- - numNCB_r is the number of NCBs issued (redirector).
- - numNCB_s is the number of NCBs issued (server).
- - numNCB_a is the number of NCBs issued (applica-
- tion).
- stw0_fiNCB fields indicate the number of NCBs that failed at the
- time they were issued, for whatever reason. These
- NCBs are still included in the "total issued" count, as
- follows:
- - fiNCB_r is the number of NCBs that failed issue
- (redirector).
- - fiNCB_s is the number of NCBs that failed issue
- (server).
- - fiNCB_a is the number of NCBs that failed issue
- (application).
- stw0_fcNCB fields indicate the number of NCBs that failed after
- issue, at or before completion. These NCBs are still
- included in the "total issued" count, as follows:
- - fcNCB_r is the number of NCBs that failed comple-
- tion (redirector).
- - fcNCB_s is the number of NCBs that failed comple-
- tion (server).
- - fcNCB_a is the number of NCBs that failed comple-
- tion (application).
- stw0_sessstart number of requester sessions started.
- stw0_sessfailcon number of requester session failures to connect, except
- those that failed due to "name not found."
- stw0_sessbroke number of failures of requester sessions, after the
- session was established.
- stw0_uses number of requester uses.
- stw0_usefail number of requester use failures. This is a count of
- failed tree connects, when a server is found but the
- resources were not found.
- stw0_autorec number of requester autoconnects.
- The following 12 fields form six quadwords, which contain very large
- counters. The high doubleword of each is the value divided by 2^32, while
- the low doubleword is the value modal 2^32. A quadword is a data area with
- the size twice as large as a double word. These fields count total bytes in all
- NCBs sent and received for all three categories. Server information is
- included to provide an accurate total.
-
- Note: For all the NCB-related and bytes-count counters:
- - The suffix _r indicates redirector. These NCBs are issued by the redirector
- as part of the normal process of maintaining remote network connections.
- - Those with the suffix _s are server-related, sent by the redirector on behalf
- of the server to maintain shared resource connections.
- - Those with the suffix _a are application-generated NCBs, which may be
- caused by applications calling NetBiosSubmit, use of second class mailslots,
- server announcements (sending and receiving), and so on.
-
- bytessent_r_high is the number of requester bytes sent to the network
- (high doubleword).
- bytessent_r_low is the number of requester bytes sent to the network
- (low doubleword).
- bytesrcvd_r_high is the number of requester bytes received from the
- network (high doubleword).
- bytesrcvd_r_low is the number of requester bytes received from the
- network (low doubleword).
- bytessent_s_high is the number of server bytes sent to the network (high
- doubleword).
- bytessent_s_low is the number of server bytes sent to the network (low
- doubleword).
- bytesrcvd_s_high is the number of requester bytes received from the
- network (high doubleword).
- bytesrcvd_s_low is the number of requester bytes received from the
- network (low doubleword).
- bytessent_a_high is the number of application bytes sent to the network
- (high doubleword).
- bytessent_a_low is the number of application bytes sent to the network
- (low doubleword).
- bytesrcvd_a_high is the number of application bytes received from the
- network (high doubleword).
- bytesrcvd_a_low is the number of application bytes received from the
- network (low doubleword).
-
- stw0_reqbufneed is the number of times that the requester required a
- request buffer, but failed to allocate one. This indicates
- that the parameters of the requester may need adjust-
- ment.
- stw0_bigbufneed is the number of times the requester required a big
- buffer, but failed to allocate one. This indicates that the
- parameters of the requester may need adjustment.
-
-
- Data Structure of Server Statistics
-
- sts0_start
- sts0_fopens
- sts0_devopens
- sts0_jobsqueued
- sts0_sopens
- sts0_stimedout
- sts0_serrorout
- sts0_pwerrors
- sts0_permerrors
- sts0_syserrors
- sts0_bytessent_high
- sts0_bytessent_low
- sts0_bytesrcvd_high
- sts0_bytesrcvd_low
- stw0_avresponse
- stw0_reqbufneed
- stw0_bigbufneed
-
- where:
- sts0_start time statistics collection started. This field indicates the
- date and time that the statistics were last cleared; that
- means, it indicates the time period over which the re-
- turned statistics were collected.
- sts0_fopens number of server file opens. This includes opens of
- named pipes.
- sts0_devopens number of server device opens.
- sts0_jobsqueued number of server print jobs spooled.
- sts0_sopens number of server session starts.
- sts0_stimedout number of server session autodisconnects.
- sts0_serrorout number of server sessions errored out.
- sts0_pwerrors number of server password violations.
- sts0_permerrors number of server access permission errors.
- sts0_syserrors number of server system errors.
-
- The following 4 fields form two quadwords that contain very large counters.
- The high doubleword of each is the value divided by 2^32, while the low
- doubleword is the value modal 2^32.
-
- bytessent_high number of server bytes sent to the network (high
- doubleword)
- bytessent_low number of server bytes sent to the network (low
- doubleword)
- bytesrcvd_high number of server bytes received from the network (high
- doubleword)
- bytesrcvd_low number of server bytes received from the network (low
- doubleword).
-
- sts0_avresponse average server response time in milliseconds.
- sts0_reqbufneed number of times the server required a request buffer,
- but failed to allocate one. This indicates that the
- parameters of the server may need adjustment.
- sts0_bigbufneed number of times the server required a big buffer, but
- failed to allocate one. This indicates that the parame-
- ters of the server may need adjustment.
-
-
- Note: A value of -1 or 0xFFFFFFFF for any field means that information is
- not available. A value of -2 or 0xFFFFFFFE means that the field has
- overflowed.
-
- ----------------------------------------------------------------------------
-
- NetStatisticsGet2
- ─────────────────
-
- Retrieves and optionally clears operating statistics for a service.
-
- Syntax:
-
- ret = NetStatisticsGet2( server, service, dummy, dummy, option,
- buffer, dummy, dummy )
-
-
- Parameter:
- server see above
- servicename service name for which to get the statis-
- tics. Only 'SERVER' and 'REQUEST-
- ER' are allowed for the servicename.
- Other names will produce the ER-
- ROR_NOT_SUPPORTED error code.
- level must be 0
- options The options parameter is bitmapped as
- follows:
- Mask Meaning
- 0x1 Clear statistics after retrieval.
- 1-31 Must be 0.
- rexx-buffer name of rexx variable containing ser-
- vice data for server or requester statis-
- tics.
-
- Example:
-
- HighByte = 4294967296 /* = 2^32 */
- ret = NetStatisticsGet2( '\\SERVER', 'SERVER', '', '', 0, 'buffer',
- '', '' )
- SAY 'Bytes sent : ' Buffer.sts0_bytessent_high * HighByte +
- Buffer.sts_bytessent_low
- SAY 'Bytes sent : ' Buffer.sts0_bytesrcvd_high * HighByte +
- Buffer.sts_bytesrcvd_low
-
-
- ----------------------------------------------------------------------------
-
- GROUP SECTION
- ─────────────
-
- The functions in the Group category control the group entries in the user
- accounts system database (UAS)
-
-
- Data structures
-
- Group Information (Level 0)(group_info_0):
-
- grpi0_name
-
-
- Group Information (Level 1)(group_info_1):
-
- grpi1_name
- grpi1_comment
-
-
- Group Membership Information (Level 0)(group_users_info_0):
-
- grui0_name
-
-
- where:
-
- grpi?_name is the name of the group.
- grpi?_comment string containing the comment or remark of the group.
- The string can be ''.
- grui0_name is the name of the user in the group.
-
- ----------------------------------------------------------------------------
-
- NetGroupAdd
- ───────────
-
- Creates a new group account in the UAS database.
-
-
- Syntax:
-
- ret = NetGroupAdd( server, level, buffer, dummy )
-
-
- Parameter:
- server see above
- level 0, 1
- rexx-buffer name of rexx variable containing group
- data
-
- Example:
-
- Buffer.grpi1_name = 'TRADER'
- Buffer.grpi1_comment = 'Group for company's trader'
- ret = NetGroupAdd( '\\SERVER', 1, buffer, '' )
-
-
- ----------------------------------------------------------------------------
-
- NetGroupEnum
- ────────────
- Retrieves all group accounts in the UAS database
-
- Syntax:
-
- ret = NetGroupEnum( server, level, buffer, dummy, eread, dummy )
-
-
- Parameter:
- server see above
- level 0, 1
- rexx-buffer name of rexx variable containing group
- data
- eread number of entries found
-
- Example:
-
- ret = NetGroupEnum( '\\SERVER', 1, 'Buffer', '', 'eread', '' )
- DO i=0 TO eread-1
- SAY Buffer.grpi1_name Buffer.grpi1_comment
- END
-
- ----------------------------------------------------------------------------
-
- NetGroupDel
- ───────────
- Removes a group account in the UAS database.
-
- Syntax:
-
- ret = NetGroupDel( server, group )
-
-
- Parameter:
- server see above
- group name of group to remove
-
-
- Example:
-
- ret = NetGroupDel( '\\SERVER', 'TRADER' )
-
- ----------------------------------------------------------------------------
-
- NetGroupAddUser
- ───────────────
- Adds a user-ID to a group account in the UAS database.
-
- Syntax:
-
- ret = NetGroupAddUser( server, group, user )
-
-
- Parameter:
- server see above
- group name of group
- user name of user to add to group
-
- Example:
-
- ret = NetGroupAddUser( '\\SERVER', 'TRADER', JOHN' )
-
-
- ----------------------------------------------------------------------------
-
- NetGroupDelUser
- ───────────────
- Removes a user-ID from a group account in the UAS database.
-
- Syntax:
-
- ret = NetGroupDelUser( server, group, user )
-
-
- Parameter:
- server see above
- group name of group
- user name of user to remove from group
-
-
- Example:
-
- ret = NetGroupDelUser( '\\SERVER', 'TRADER', 'JOHN' )
-
-
- ----------------------------------------------------------------------------
-
- NetGroupGetInfo
- ───────────────
- Queries information about a group account in the UAS database.
-
- Syntax:
-
- ret = NetGroupGetInfo( server, group, level, buffer, dummy, dummy )
-
-
- Parameter:
- server see above
- group group to get information
- level 1
- rexx-buffer name of rexx variable containing group
- data
-
- Example:
-
- ret = NetGroupGetInfo( '\\SERVER', 'TRADER', 1, 'Buffer', '', '' )
- IF ret = 0 THEN DO
- SAY 'Group exists.'
- SAY Buffer.grpi1_name Buffer.grpi1_comment
- END
-
- ----------------------------------------------------------------------------
-
- NetGroupSetInfo
- ───────────────
- Changes information about a group account in the UAS database.
-
- Syntax:
-
- ret = NetGroupSetInfo( server, group, level, buffer, dummy, dummy )
-
-
- Parameter:
- server see above
- group group to set information
- level 1
- rexx-buffer name of rexx variable containing group
- data
-
- Example:
-
- ret = NetGroupGetInfo( '\\SERVER', 'TRADER', 1, 'Buffer', '', '' )
- IF ret = 0 THEN DO
- SAY 'Enter new comment:'
- PULL Buffer.grpi1_comment
- ret=NetGroupSetInfo( '\\SERVER', 'TRADER', 1, 'Buffer', '', '' )
- END
-
-
- ----------------------------------------------------------------------------
-
- NetGroupGetUsers
- ────────────────
- Gets a list of all users of a group
-
- Syntax:
-
- ret = NetGroupGetUsers( server, group, level, buffer, dummy, eread,
- dummy )
-
-
- Parameter:
- server see above
- group name of group to get user list
- level 0
- rexx-buffer name of rexx variable containing user
- list (group_user_info_0)
- eread number of entries found
-
- Example:
-
- ret = NetGroupGetUsers( '\\SERVER', 'TRADER', 0, 'Buffer, '', 'eread', '' )
- SAY 'Found members: '
- DO i=0 TO eread-1
- SAY Buffer.i.grui0_name
- END
-
-
- ----------------------------------------------------------------------------
-
- NetGroupSetUsers
- ────────────────
- Joins a list of users for a group
-
- Syntax:
-
- ret=NetGroupSetUsers( server, group, level, buffer, dummy, entries )
-
-
- Parameter:
- server see above
- group name of group to set user list
- level 0
- rexx-buffer name of rexx variable containing user
- list
- entries number of entries to set
-
-
- Example:
-
- ret = NetGroupGetUsers( '\\SERVER', 'TRADER', 0, 'Buffer, '', 'eread', '' )
- SAY 'Enter new member: '
- PULL Buffer.eread.grui0_name
- eread = eread+1
- ret = NetGroupSetUsers( '\\SERVER', 'TRADER', 0, 'Buffer, '', 'eread' )
-
-
- ----------------------------------------------------------------------------
-
- USER SECTION
- ────────────
-
- The functions in the User category control a user's account in the user
- accounts subsystem (UAS) database.
- The NetUserDCDBInit, NetUserGetAppSel, NetUserGetLogonAsn, NetUser-
- SetAppSel, and NetUserSetLogonAsn functions are only available if you use
- RXLAN30.DLL.
-
-
- Data structures
- ───────────────
-
- User Account Information (Level 0) (user_info_0):
-
- usri0_name
-
-
- User Account Information (Level 1) (user_info_1):
-
- usri1_name
- usri1_password
- usri1_password_age
- usri1_priv
- usri1_home_dir
- usri1_comment
- usri1_flags
- usri1_script_path
-
-
- User Account Information (Level 2) (user_info_2):
-
- usri2_name usri2_workstations
- usri2_password usri2_last_logon
- usri2_password_age usri2_last_logoff
- usri2_priv usri2_acct_expires
- usri2_home_dir usri2_max_storage
- usri2_comment usri2_units_per_week
- usri2_flags usri2_logon_hours
- usri2_script_path usri2_bad_pw_count
- usri2_auth_flags usri2_num_logons
- usri2_full_name usri2_logon_server
- usri2_usr_comment usri2_country_code
- usri2_parms usri2_code_page
-
-
- User Account Information (Level 10) (usr_info_10):
-
- usri10_name
- usri10_comment
- usri10_usr_comment
- usri10_full_name
-
- User Account Information (Level 11) (user_info_11):
-
- usri11_name usri11_bad_pw_count
- usri11_comment usri11_num_logons
- usri11_usr_comment usri11_logon_server
- usri11_full_name usri11_country_code
- usri11_priv usri11_workstations
- usri11_auth_flags usri11_max_storage
- usri11_password_age usri11_units_per_week
- usri11_home_dir usri11_logon_hours
- usri11_parms usri11_code_page
- usri11_last_logon
- usri11_last_logoff
-
-
- where:
- usri?_name name of the user.
- usri?_password is the password of a usri1_name. The NetUserEnum and
- NetUserGetInfo functions return a string of blanks to
- maintain password security. The string can be ''.
- usri?_password_age number of seconds that have passed since
- usri1_password last changed.
- usri?_priv one of three values indicating the level of privilege as-
- signed usri1_name.
- Value Privilege
- 0 Guest
- 1 User
- 2 Administrator
- usri?_home_dir path to the user's home directory. This string can take
- one of two forms. The first form defines the drive of
- the user that will be assigned to the home directory. It
- can have as many as PATHLEN bytes.
- x:\machineID\Y$\pathname
- Where x is the drive letter to be assigned, machineID is
- the name of the server that holds the home directory,
- y is the drive letter on the server where the home
- directory exists, and pathname is the remaining path to
- the directory.
- The second form defines a first-available drive specifi-
- cation for the home directory:
- \\machineID\Y$\pathname
- Where machineID, y, and pathname are defined as in
- the preceding example.
- To define a home directory at the root of a server's
- drive, omit \pathname from either of the previous
- forms.
- usri?_comment optional comment or remark about the user.
- usri?_flags is one of the following values that determine whether a
- logon script is to be executed and whether the user's
- account is enabled.
- Bit Mask Meaning
- 0x1 Must be 1. Logon script enabled.
- 0x2 If 1, user's account disabled.
- 0x8 If 1, home directory required.
- 0x20 If 1, password not required.
- 0x40 If 1, user cannot change password.
- usri?_script_path path name of the user's logon script (.CMD, .EXE,
- .BAT, or .PRO file). It can have no extension at all.
- If the file has no extension, it is assumed to be a .CMD
- or .BAT file.
- usri?_auth_flags grants operator privilege (accounts, print, comm, and
- server) to users.
- Bits Meaning
- 0 If 1, print operator privilege is enabled.
- 1 If 1, comm operator privilege is en-
- abled.
- 2 If 1, server operator privilege is en-
- abled.
- 3 If 1, accounts operator privilege is
- enabled.
- usri?_full_name full name of the user.
- usri?_usr_comment string which is a user settable field.
- usri?_parms string that is set aside for use by applications.
- usri?_workstations list of requesters from which a user is permitted to log
- on. A null string means all requesters are allowed. Up
- to eight requesters may be specified.
- usri?_last_logon time and date (seconds since 1 January 1970) when the
- last logon occurred. A value of 0 means unknown.
- This field can only be set by the system.
- usri?_last_logoff time and date (seconds since 1 January 1970) when the
- last logoff occurred. A value of 0 means unknown.
- This field can only be set by the system.
- usri?_acct_expires time and date (seconds since 1 January 1970) when the
- account will expire. An expired account is the equiva-
- lent of a disabled account. An entry of 0xFFFFFFFF or
- (-1) means that there is no limit.
- usri?_max_storage maximum storage allowed for the home directory.
- Units are kilobytes (KB). An entry of 0xFFFFFFFF
- (-1) means unlimited storage.
- usri?_bad_pw_count number of attempts to validate a bad password. A
- value of -1 means unknown. This element is ignored in
- NetUserAdd and NetUserSetInfo calls.
- usri?_num_logons number of instances of logons to the account. A value
- of -1 means unknown. This field can only be set by the
- system and is ignored by NetUserAdd and
- NetUserSetInfo.
- usri?_logon_server string containing the name of the perferred server,
- which validates user logon requests for this user. A
- null string indicates that the domain controller is the
- preferred logon server.
- usri?_country_code OS/2 country code for the user's language choice. This
- is used by the LAN Server software to generate mes-
- sages in the appropriate language whenever possible.
- usri?_code_page OS/2 code page for the language choice of the user.
-
-
- User Modals Information (Level 0)(user_modals_info_0):
-
- usrmod0_min_passwd_len
- usrmod0_max_passwd_age
- usrmod0_min_passwd_age
- usrmod0_force_logoff
- usrmod0_password_hist_len
-
-
- where:
- usrmod0_min_passwd_len minimum password length.
- usrmod0_max_passwd_age maximum time (in seconds) since the
- password was last changed, and for
- which the current password is valid. A
- value of 0xFFFFFFFF allows the pass-
- word to be valid forever. The mini-
- mum value is 1 day.
- usrmod0_min_passwd_age minimum time (in seconds) since the
- password was last changed, and before
- which the current password is allowed
- to be changed. A value of 0 means
- there is no delay required between
- password updates.
- usrmod0_force_logoff length of time (in seconds) after the
- valid logon hours that the user should
- be forced off the network. The user is
- never forced off if the value is
- TIMEQ_FOREVER (-1), or is forced
- off immediately if the value is 0. Any
- value between these can also be used.
- usrmod0_password_hist_len length of the password history, that is,
- the number of passwords in the history
- buffer that are scanned versus the new
- password in a NetUserPasswordSet
- attempt. The new password may not
- match any of the entries scanned.
-
- User Modals Information (Level 1)(user_modals_info_1):
-
- usrmod1_role
- usrmod1_primary
-
-
- where:
- usrmod1_role role of this server under a single system image (SSI).
- It can be one of the following:
- Value Meaning
- 0 Standalone server.
- 1 Member server in the domain.
- 2 Backup server in the domain.
- 3 Primary server in the domain.
- usrmod1_primary name of the primary domain to which this server
- belongs. It should match the primary domain name of
- the requester software on the local machine.
-
-
- User Validation Information (Requester) (user_logon_req_1):
-
- usrreq1_name
- usrreq1_password
- usrreq1_workstation
-
-
- where:
- usrreq1_name account name to which the user is attempting to log on.
- usrreq1_password is the plain text password.
- usrreq1_workstation string representing the requester from which the user is
- logging on. Can be '' for local.
-
-
- User Validation Information (Level 0) (user_logon_info_0):
-
- usrlog0_code
- usrlog0_eff_name
-
- User Validation Information (Level 1) (user_logon_info_1):
-
- usrlog1_code usrlog1_logoff_time
- usrlog1_eff_name usrlog1_kickoff_time
- usrlog1_priv usrlog1_password_age
- usrlog1_auth_flags usrlog1_pw_can_change
- usrlog1_num_logons usrlog1_pw_must_change
- usrlog1_bad_pw_count usrlog1_computer
- usrlog1_last_logon usrlog1_domain
- usrlog1_last_logoff usrlog1_script_path
-
-
- User Validation Information (Level 2) (user_logon_info_2):
-
- usrlog2_eff_name
- usrlog2_computer
- usrlog2_fullname
- usrlog2_usrcomment
- usrlog2_logon_time
-
-
- where:
- usrlog?_code code explaining an action taken. The following are
- possible values:
- 0: No problems were encountered.
- 5: Some condition of logon has not been
- met.
- 2212: An error occurred processing logon
- script.
- 2214: No domain controller could be found to
- validate the user. Script processing was
- not performed.
- 2217: The logon request was serviced by a
- 1X logon server. Logon script process-
- ing was performed.
- 2240: The user was attempting to log on from
- a requester that is not valid.
- 2241: The user was attempting to log on at a
- time that is not valid.
- 2242: The user has an account, but the user's
- password has expired. No other condi-
- tions of logon have been checked.
- usrlog?_eff_name is the name of the account to which the user was
- logged on.
- usrlog?_priv is the user's privilege level. It can be one of the
- following:
- Value Privilege
- 0 Guest
- 1 User
- 2 Administrator
- usrlog?_auth_flags grants operator rights (accounts, print, comm, and
- server) to users both locally and remotely.
- usrlog?_num_logons is the number of instances of logons to the account. A
- value of -1 means unknown.
- usrlog?_bad_pw_count is the number of attempts to validate a bad password.
- usrlog?_last_logon is the time and date (seconds since 1 January 1970)
- when the last logon occurred.
- usrlog?_last_logoff is the time and date (seconds since 1 January 1970)
- when the last logoff occurred.
- usrlog?_logoff_time is the time (in seconds) and date (since 1 January 1970)
- when the user should log off.
- usrlog_kickoff_time is the time (in seconds) when the user will be logged
- off.
- usrlog?_password_age is the time since the password was last changed.
- usrlog?_pw_can_change time and date (since 1 January 1970) when the user
- can change his password.
- usrlog?_pw_must_change is the time (in seconds) and the date (since 1
- January 1970) when the password must be changed.
- usrlog?_computer is the server that validated the user's logon.
- usrlog?_domain is the domain currently logged on to.
- usrlog?_script_path is the relative path to the logon script of an account.
- usrlog?_fullname is the full name of the user.
- usrlog?_usrcomment string, which is a user-settable field for user comments.
- The string can be ''.
- usrlog?_logon_time is the time and date (seconds since 1 January 1970)
- when the user logged on. It can be '' for local.
-
-
- User Validation Information (Logoff)(user_logoff_info_1):
-
- usrlog1_code
- usrlogf1_duration
- usrlogf1_num_logons
-
-
- where:
- usrlogf1_code is dependent on the calling API. It is specified sepa-
- rately for each API.
- usrlogf1_duration is the duration of a logon. It can be 0 for unknown.
- usrlogf1_num_logons is the number of logons by a user name.
-
-
- Application Selector Information (Level 1)(app_sel_info_1):
-
- asi1_count
-
- asi1_count is an unsigned short integer that indicates the number of
- app_sel_list structures that immediately follow the
- app_sel_info_1 structure.
-
- Application Selector List (Level 1)(app_sel_list_1):
-
- asl_appname
- asl_apptype
-
- where:
- asl_appname is the name of an application that exists in the domain
- control database.
- as1_apptype is one of the three values, defined as follows:
- Value Meaning
- 0x1 Public DOS applications.
- 0x2 Public OS/2 applications.
- 0x4 Private OS/2 applications.
-
- Logon Assignment Information (Level 1)(logon_asn_info_1):
-
- lai1_count;
-
- where:
- lai1_count is an unsigned short integer that indicates the number of
- logon_asn_list structures that immediately follow the
- logon_asn_info_1 structure.
-
- Logon Assignment List (logon_asn_list):
-
- lal_alias
- lal_type
- lal_device
-
- where:
- lal_alias specifies an existing alias for the resource that is to be
- automatically assigned to the user at logon time.
- lal_type is one of three values indicating the alias type.
- Value Meaning
- 0x0001 Files alias
- 0x0002 Printer alias
- 0x0004 Serial device alias
- lal_device indicates the device that will be assigned to the resource
- specified by lal_alias when the user logs on. If the
- device field is left blank, the connection is to be
- deviceless.
-
- ----------------------------------------------------------------------------
-
- NetUserAdd
- ──────────
-
- Creates a new user account in the UAS database.
-
- Syntax:
-
- ret = NetUserAdd( server, level, buffer, dummy )
-
-
- Parameter:
- server see above
- level 1,2
- rexx-buffer name of rexx variable containing us-
- er_info_? data
-
- Example:
-
- BUFFER.USRI1_name = 'JOHN'
- BUFFER.USRI1_password = 'SECRET'
- BUFFER.USRI1_priv = 1 /* he is user */
- BUFFER.USRI1_home_dir = 'Y:\SERVER\D$\HOMEDIR\JOHN'
- BUFFER.USRI1_comment = 'John Smith, Trader, Tel-111'
- BUFFER.USRI1_flags = 1 + 8 /* script path enabled, homedir req.*/
- BUFFER.USRI1_script_path = ''
- ret = NetUserAdd( '\\SERVER', 1, 'Buffer', '' )
-
-
-
- ----------------------------------------------------------------------------
-
- NetUserEnum
- ───────────
-
- Retrieves all user accounts in the UAS database
-
- Syntax:
-
- ret = NetUserEnum( server, level, buffer, dummy, eread, dummy )
-
-
- Parameter:
- server see above
- level 0, 1, 2, 10
- rexx-buffer name of rexx variable containing us-
- er_info_? data
- eread number of entries found
-
- Example:
-
- ret = NetUserEnum('\\SERVER', 10,'Buffer', '', 'eread', '' )
- SAY eread 'user found.'
- DO i=0 TO eread-1
- SAY BUFFER.i.USRI10_name BUFFER.i.USRI10_full_name
- END
-
-
- ----------------------------------------------------------------------------
-
- NetUserDel
- ──────────
- Removes a user account in the UAS database.
-
- Syntax:
-
- ret = NetUserDel( server, user )
-
-
- Parameter:
- server see above
- user name of user to remove
-
- Example:
-
- ret = NetUserDel( '\\SERVER', 'JOHN' )
-
- ----------------------------------------------------------------------------
-
- NetUserGetInfo
- ──────────────
-
- Queries information about a user account in the UAS database.
-
- Syntax:
-
- ret = NetUserGetInfo( server, user, level, buffer, dummy, dummy )
-
-
- Parameter:
- server see above
- user user to get information
- level 0, 1, 2, 10, 11
- rexx-buffer name of REXX variable containing us-
- er_info_? data
-
- Example:
-
- ret = NetUserGetInfo( '\\SERVER', 'JOHN', 1, 'Buffer', '', '')
- SAY BUFFER.USRI1_name BUFFER.USRI1_comment
- IF Buffer.usri1_priv = 0 THEN SAY 'He is guest.'
- IF Buffer.usri1_priv = 1 THEN SAY 'He is user.'
- IF Buffer.usri1_priv = 2 THEN SAY 'He is administrator.'
-
-
- ----------------------------------------------------------------------------
-
- NetUserSetInfo
- ──────────────
-
- Changes information about a user account in the UAS database.
-
- Syntax:
-
- ret = NetUserSetInfo( server, user, level, buffer, dummy, parmnum )
-
-
- Parameter:
- server see above
- group user to get information
- level 1, 2
- parmnum determines whether buf contains a com-
- plete user_info data structure or a single
- component. Parmnum must specify the
- ordinal position value:
- Value Component
- 0 user_info_x
- 1 usrix_name
- 3 usrix_password
- 4 usrix_password_age
- 5 usrix_priv
- 6 usrix_home_dir
- 7 usrix_comment
- 8 usrix_flags
- 9 usrix_script_path
- 10 usri2_auth_flags
- 11 usri2_full_name
- 12 usri2_usr_comment
- 13 usri2_parms
- 14 usri2_workstations
- 15 usri2_last_logon
- 16 usri2_last_logoff
- 17 usri2_acct_expires
- 18 usri2_max_storage
- 19 usri2_units_per_week
- 20 usri2_logon_hours
- 21 usri2_bad_pw_count
- 22 usri2_num_logons
- 23 usri2_logon_server
- 24 usri2_country_code
- 25 usri2_code_page
- 100 password expired (only LS 3.0)
- rexx-buffer name of rexx variable containing user
- data
-
- Example:
-
- /* set John's password to expired */
- ret = NetUserSetInfo( '\\SERVER', 'JOHN', 1, 0, '', 100 )
-
-
- ----------------------------------------------------------------------------
-
- NetUserGetGroups
- ────────────────
-
- Gets a list of groups a user belongs to.
-
- Syntax:
-
- ret = NetUserGetGroups( server, user, level, buffer, dummy, eread,
- dummy )
-
-
- Parameter:
- server see above
- user name of user to get group list
- level 0
- rexx-buffer name of rexx variable containing
- group_info_0 list
- eread number of entries found
-
- Example:
-
- ret = NetUserGetGroups( '\\SERVER', 'JOHN', 0, 'Buffer', '', 'eread-
- ', '' )
- SAY 'JOHN belongs to the groups : '
- DO i=0 TO eread-1
- SAY BUFFER.i.grpi0_name
- END
-
-
- ----------------------------------------------------------------------------
-
- NetUserSetGroups
- ────────────────
-
- User joins the groups in the list specified
-
- Syntax:
-
-
- ret= NetUserSetGroups( server, user, level, buffer, dummy, entries )
-
-
- Parameter:
- server see above
- user name of user to set group list
- level 0
- rexx-buffer name of rexx variable containing
- group_info_0 list
- entries number of entries to set
-
- Note:
- NetUserGetGroups return one of the reserved groups GUESTS, USERS,
- ADMINS (depending on the value of usri_priv). These groups were rejected
- when passing them to NetUserSetGroups. Before passing the list of groups to
- NetUserSetGroups, you have to remove them manually.
-
- Example:
-
- /* Add JOHN to group TRADER */
- ret = NetUserGetGroups( '\\SERVER', 'JOHN', 0, 'Buffer', '', 'eread-
- ', '' )
- DO i=0 TO eread-1
- IF BUFFER.i.grpi0_name ='ADMINS' | BUFFER.i.grpi0_name ='USERS'
- | BUFFER.i.grpi0_name = GUESTS' THEN
- BUFFER.i.grpi0_name = 'TRADER'
- END
-
-
- ----------------------------------------------------------------------------
-
- NetUserPasswordSet
- ──────────────────
- Sets a new password for a user. This API is intended for having a user change
- his password. The user needs to enter his old password before changing the
- password. An administrator can use the NetUserSetInfo to change the users
- password.
-
- Syntax:
-
- ret = NetUserPasswordSet( server, user, old, new )
-
-
- Parameter:
- server see above
- user user-ID whose password to change
- old the currently used password
- new the new password to set
-
-
- Note:
- The Password API is CASE SENSITIVE ! It is strongly recommended, to use
- only upper case character and only standard ASCII character, because the
- LAN servers and user profile interface only accept these characters.
-
-
- ----------------------------------------------------------------------------
-
- NetUserModalsGet
- ────────────────
- Gets global modals related information for all users and groups in the user
- accounts subsystem (UAS) database.
-
- Syntax:
-
- ret = NetUserModalsGet( server, level, buffer, dummy, dummy )
-
-
- Parameter:
- server see above
- level 0, 1
- rexx-buffer name of rexx variable containing us-
- er_modals_info_? data
-
-
- Example:
-
-
- ret = NetUserModalsGet( '\\SERVER', 0, 'Buffer', '', '' )
- SAY 'Minimal pwd length: 'BUFFER.USRMOD0_min_passwd_len
- SAY 'Maximum pwd. age: ' BUFFER.USRMOD0_max_passwd_age
-
-
- ----------------------------------------------------------------------------
-
- NetUserModalsSet
- ────────────────
-
- Sets global modals related information for all users and groups in the user
- accounts subsystem (UAS) database. The parmnum field is not supported.
-
- Syntax:
-
- ret = NetUserModalsGet( server, level, buffer, dummy, dummy )
-
-
- Parameter:
- server see above
- level 0, 1
- rexx-buffer name of rexx variable containing us-
- er_modals_info data
-
- Example:
-
- /* change maximum password age */
- ret = NetUserModalsGet( '\\SERVER', 0, 'Buffer', '', '' )
- BUFFER.USRMOD0_max_passwd_age = 60
- ret = NetUserModalsSet( '\\SERVER', 0, 'Buffer', '', '' )
-
-
-
- ----------------------------------------------------------------------------
-
- NetUserValidate2
- ────────────────
-
- Validates a user with its password. It checks if the user can log on based on
- logon restrictions defined for the account.
-
- Syntax:
-
- ret = NetUserValidate2( dummy, level, buffer, dummy, dummy, dummy )
-
-
- Parameter:
- level specifies the level of detail (1) supplied
- to the user_logon data structure.
- rexx-buffer At logon the rexx-buffer contains the
- name of the variable, containing a us-
- er_logon_req_1 array. The API creates
- variables supplying a user_logon_info_1
- array.
-
- Example:
-
- BUFFER.USRreq1_name = 'JOHN'
- BUFFER.USRreq1_password = 'SECRET'
- BUFFER.USRreq1_workstation = 'JOHNSPC'
- ret = NetUserValidate2( '', 1, 'buffer', '', '', '' )
- IF ret = 0 THEN DO
- Msg = NetRexxGetMessage( BUFFER.USRlog1_code )
- SAY Msg
- SAY 'Users priv: ' BUFFER.USRlog1_priv
- SAY 'Bad pwds: ' BUFFER.USRlog1_bad_pw_count
- SAY 'Workstation: ' BUFFER.USRlog1_computer
- SAY 'Logon Domain: ' BUFFER.USRlog1_domain
- END
-
-
- ----------------------------------------------------------------------------
-
- NetUserDCDBInit
- ───────────────
-
- Initializes the domain control database for the specified user. This API is only
- available with RXLAN30 and LAN Server 3.0.
-
- Syntax:
-
- ret = NetUserDCDBInit( server, user, dummy )
-
-
- Parameter:
- server see above
- user specifies the user ID of a user that is
- defined on the domain.
-
- Example:
-
- ret = NetUserDCDBInit( '\\SERVER', 'JOHN' )
-
- ----------------------------------------------------------------------------
-
- NetUserGetAppSel
- ────────────────
- Retrieves information about all specified types of applications contained in the
- user's desktop application folders. This API is only available with RXLAN30
- and LAN Server 3.0.
-
- Syntax:
-
- ret = NetUserGetAppSel( server, user, level, type, buffer, dummy,
- dummy )
-
-
- Parameter:
- server see above
- user specifies the user ID of a user that is
- defined on the domain.
- level specifies the level of information re-
- quested. Currently, only level 1 is
- supported.
- type indicates the types of application to
- retrieve:
- Value Meaning
- 0x1 Public DOS applications
- 0x2 Public OS/2 applications
- 0x4 Private OS/2 applications
- 0x7 All applications
- rexx-buffer name of rexx variable containing appli-
- cation data (user_app_info_1) followed
- by application lists (user_app_list).
-
- Example:
-
- ret = NetUserGetAppSel( '\\SERVER', 'JOHN', 1, 2, 'buffer', '', '')
- DO i=0 TO BUFFER.asi1_count
- BUFFER.i.asl_appname
- END
-
-
- ----------------------------------------------------------------------------
-
- NetUserSetAppSel
- ────────────────
-
- Changes information about all specified types of applications contained in the
- user's desktop application folders.This API is only available with RXLAN30
- and LAN Server 3.0.
-
- Syntax:
-
- ret = NetUserSetAppSel( server, user, level, buffer, dummy )
-
-
- Parameter:
- server see above
- user specifies the user ID of a user that is
- defined on the domain.
- level specifies the level of information re-
- quested. Currently, only level 1 is
- supported.
- rexx-buffer name of rexx variable containing appli-
- cation data
-
- Example:
-
- ret = NetUserGetAppSel( '\\SERVER', 'JOHN', 1, 2, 'buffer', '', '')
- new = Buffer.asi1_count
- BUFFER.new.asl_appname = 'WORDPRO'
- Buffer.new.asl_app_type = 2
- BUFFER.asi1_count = BUFFER.asi1_count +1
- ret = NetUserSetAppSel( '\\SERVER', JOHN', 1, 'Buffer', '' )
-
-
- ----------------------------------------------------------------------------
-
- NetUserGetLogonAsn
- ──────────────────
-
- Retrieves information about logon assignments for a user. This API is only
- available with RXLAN30 and LAN Server 3.0.
-
- Syntax:
-
- ret = NetUserGetLogonAsn( server, user, level, type, buffer, dummy,
- dummy )
-
-
- Parameter:
- server see above
- user name of user to get logon assignments
- level 1
- type indicates the types of logon assign-
- ments:
- Bit Meaning
- 0x01 Network nickname used for a file.
- 0x02 Network nickname used for a printer.
- 0x04 Network nickname used for a serial device.
- rexx-buffer name of rexx variable containing as-
- signment data (logon_asn_info_1) fol-
- lowed by assignment list (logon_asn_li-
- st)
-
- Example:
-
- ret = NetUserGetLogonAsn('\\SERVER', 'JOHN', 1, 'Buffer', '' )
- DO i=0 TO BUFFER.lai1_count-1
- SAY BUFFER.i.lal_alias BUFFER.i.lal_device
- END
-
-
- ----------------------------------------------------------------------------
-
- NetUserSetLogonAsn
- ──────────────────
-
- Sets information about logon assignments for a user.This API is only available
- with RXLAN30 and LAN Server 3.0.
-
- Syntax:
-
- ret = NetUserSetLogonAsn( server, user, level, buffer, dummy )
-
-
- Parameter:
- server see above
- user name of user to modify logon assign-
- ments
- level 1
- rexx-buffer name of rexx variable containing as-
- signment data (logon_asn_info_1 follo-
- wed by logon_asn_list).
-
- Note:
- THE IBM LAN APPLICATION PROGRAMMERS REFERENCE DOES
- NOT DESCRIBE THE API CORRECTLY.
-
-
- Example:
-
- ret = NetUserGetLogonAsn('\\SERVER', 'JOHN', 1, 'Buffer', '' )
- New = BUFFER.lai1_count
- Buffer.new.lal_alias = 'SRV_D'
- Buffer.new.lal_type = 1
- Buffer.new.lal_device = 'F:'
- BUFFER.lai1_count = BUFFER.lai1_count +1
- ret = NetUserSetLogonAsn('\\SERVER', 'JOHN', 1, 'Buffer', '' )
-
-
- ----------------------------------------------------------------------------
-
- ALIAS SECTION
- ─────────────
- The API in this section examine or modify aliases defined in a domain.
-
- Data structures
-
- Alias Information (Level 0)(alias_info_0):
-
- ai0_alias
-
-
- Alias Information (Level 1)(alias_info_1):
-
- ai1_alias
- ai1_remark
- ai1_type
-
-
- Alias Information (Level 2)(alias_info_2):
-
- ai2_alias
- ai2_remark
- ai2_type
- ai2_location
- ai2_server
- ai2_mode
- ai2_maxuses
- ai2_netname
- ai2_queue
- ai2_path
- ai2_priority
- ai2_device_pool
-
-
- where:
- ai?_alias is the name by which a resource will be known in the
- domain.
- ai?_remark string containing an optional comment about the alias.
- The string must be no longer than 40 bytes.
- ai?_type is one of three values indicating the alias type.
- Value Meaning
- 0x0001 Files alias
- 0x0002 Printer alias
- 0x0004 Serial device alias
- ai?_location is one of four values defined as follows:
- Value Meaning
- 0x0000 The alias describes a resource on a
- server within the current domain.
- 0x0001 The alias describes a resource on a
- server outside the current domain. The
- alias will be accessed by DOS worksta-
- tions only.
- 0x0002 The alias describes a resource on a
- server outside the current domain. The
- alias will be accessed by OS/2 worksta-
- tions only.
- 0x0003 The alias describes a resource on a
- server outside the current domain. The
- alias will be accessed by both DOS and
- OS/2 workstations.
- ai?_server is the name of the server where the resource described
- by this alias resides.
- ai?_mode is one of three values that indicates when the alias is
- shared.
- Value Meaning
- 0x0000 The resource is shared when the server
- is started.
- 0x0001 The resource must be explicitly shared
- by the administrator.
- 0x0002 The resource is shared when a request
- to assign it is made.
- ai?_maxuses indicates the maximum number of users who can have
- redirection to the resource identified by this alias.
- Values from 0 through 65535 are valid.
- ai?_netname is the alias name for files aliases, and the queue name
- for printer and serial device aliases. For NetAliasAdd
- and NetAliasSetInfo operations, any data in this field
- will be ignored.
- ai?_queue applies to printer and serial device aliases only. For
- serial devices, the queue is identical to the alias. For
- printers, the queue is the print destination.
- ai?_path applies to files aliases only. It's a string indicating a
- path that is relative to the server that the alias will be
- shared on. The path must begin with a drive letter,
- followed by a colon and a backslash (for example C:\).
- The maximum length of the string is 128 bytes.
- ai?_priority applies to serial device aliases only. The priority can
- have a value between 1 and 9 (inclusive), with 1 being
- the highest priority.
- ai?_device_pool applies to serial device aliases only and must not be ''.
- It's a list of serial devices separated by blanks. Valid
- serial devices are LPT1 through LPT9 and COM1
- through COM9.
-
-
- ----------------------------------------------------------------------------
-
- NetAliasAdd
- ───────────
-
- Creates an alias definition. This API is only available with RXLAN30 and
- LAN Server 3.0.
-
- Syntax:
-
- ret = NetAliasAdd( server, level, buffer, dummy )
-
-
- Parameter:
- server see above
- level 2
- rexx-buffer name of rexx variable containing alias
- data (alias_info_2).
-
- Example:
-
- /* Add drive D: as alias */
- BUFFER.AI2_alias = 'SRV_D'
- BUFFER.AI2_remark = 'Path D:\ of server'
- BUFFER.AI2_type = 1
- BUFFER.AI2_location = 0
- BUFFER.AI2_server = '\\SERVER'
- BUFFER.AI2_mode = 0
- BUFFER.AI2_maxuses = -1
- BUFFER.AI2_path = 'D:\'
- ret = NetAliasAdd( '\\SERVER', 2, 'Buffer', '' )
-
-
-
- ----------------------------------------------------------------------------
-
- NetAliasDel
- ───────────
-
- Deletes an alias definition. This API is only available with RXLAN30 and
- LAN Server 3.0.
-
- Syntax:
-
- ret = NetAliasDel( server, alias, dummy )
-
-
- Parameter:
- server see above
- alias name of alias to delete
-
- Example:
-
- ret = NetAliasDel( '\\SERVER', 'SRV_D', '' )
-
- ----------------------------------------------------------------------------
-
- NetAliasEnum
- ────────────
-
- Returns a list of all aliases of a given type. This API is only available with
- RXLAN30 and LAN Server 3.0.
-
- Syntax:
-
- ret=NetAliasEnum( server, level, type, buffer, dummy, eread, dummy )
-
-
- Parameter:
- server see above
- level 0, 1, 2
- type indicates the kind of alias to be enu-
- merated:
- Bit Meaning
- 0x01 Files alias
- 0x02 Printer alias
- 0x04 Serial device alias
- rexx-buffer name of rexx variable containing alias
- data
- eread number of entries found
-
-
- Example:
-
- ret = NetAliasEnum( '\\SERVER', 0, 7, 'Buffer', '', 'eread', '' )
- DO i=0 TO eread-1
- SAY Buffer.i.ai0_alias
- END
-
-
- ----------------------------------------------------------------------------
-
- NetAliasGetInfo
- ───────────────
-
- Returns information about a given alias. This API is only available with
- RXLAN30 and LAN Server 3.0.
-
- Syntax:
-
- ret = NetAliasGetInfo( server, alias, level, buffer, dummy, dummy )
-
-
- Parameter:
- server see above
- alias name of alias to get information
- level 0, 1, 2
- rexx-buffer name of rexx variable containing alias
- data
-
- Example:
-
- ret = NetAliasGetInfo( '\\SERVER', 'SRV_D', 2, 'Buffer', '', '' )
- SAY 'Alias : 'BUFFER.AI2_alias
- SAY 'Remark: 'BUFFER.AI2_remark
- SAY 'Server: 'BUFFER.AI2_server
- SAY 'Path: 'BUFFER.AI2_path
-
-
-
- ----------------------------------------------------------------------------
-
- NetAliasSetInfo
- ───────────────
-
- Set information about a given alias. This API is only available with
- RXLAN30 and LAN Server 3.0.
-
- Syntax:
-
- ret= NetAliasSetInfo( server, alias, level, buffer, dummy, parmnum )
-
-
- Parameter:
- server see above
- alias name of alias to get information
- level 0, 1, 2
- rexx-buffer name of rexx variable containing alias
- data
- parmnum determines whether rexx-buffer contains
- a complete alias_info data structure or
- a single component.
- Value Component Comment
- 3 aix_remark
- 7 aix_mode
- 8 aix_maxuses
- 13 aix_path Valid for files aliases
- only
- 14 aix_priority Valid for serial de-
- vice aliases only
- 15 aix_device_pool Valid for serial
- device aliases only
-
- Example:
-
- ret= NetAliasSetInfo( '\\SERVER', 'SRV_D', 0, 'New comment', '', 3 )
-
-
- ----------------------------------------------------------------------------
-
- APPLICATION SECTION
- ───────────────────
-
- The functions in this section manage informations about the network
- applications.
-
- Data structures
-
- Application Information (Level 0)(app_info_0):
-
- app0_name
-
-
- Application Information (Level 1)(app_info_1):
-
- app1_name
- app1_remark
-
-
- Application Information (Level 2)(app_info_2):
-
- app2_name app2_wrkdir_alias_or_drv
- app2_remark app2_wrkdir_drive
- app2_command app2_wrkdir_path_to_dir
- app2_command_parms app2_prompt
- app2_app_alias_or_drv app2_interface
- app2_app_drive app2_apptype
- app2_app_path_to_dir
-
-
- Application Information (Level 3)(app_info_3):
-
- app3_name app3_wrkdir_alias_or_drv
- app3_remark app3_wrkdir_drive
- app3_command app3_wrkdir_path_to_dir
- app3_command_parms app3_prompt
- app3_app_alias_or_drv app3_interface
- app3_app_drive app3_apptype
- app3_app_path_to_dir app3_res_count
-
-
- where:
- app?_name specifies an identifying name for an application.
- app?_remark provides a description of the application. '' is not
- allowed; a remark is required.
- app?_command indicates the command that starts the application. A
- null string is not allowed; a command is required.
- app?_command_parms string that indicates any fixed parameters needed for
- this application.
- app?_app_alias_or_drv alias or drive where the application resides.
- app?_app_drive applies to DOS public applications only. It is used to
- specify the drive that is current when the application
- runs.
- app?_app_path_to_dir string indicating the remaining path to the application,
- relative to the information in app2_app_alias_or_drv.
- The string must begin with a \.
- app?_wrkdir_alias_or_drv directory that is made current when the application
- runs. If the working directory is on the local machine,
- this field specifies the drive letter, followed by a :
- where the directory is located. If the working directory
- is remote, this field specifies an existing alias where the
- directory is located.
- app?_wrkdir_drive drive that the working directory is to be assigned to
- when the application is started.
- app?_wrkdir_path_to_dir string that specifies the remaining path to the
- working directory, relative to the information in appx_-
- wrkdir_alias_or_drv. The string must begin with a \.
- If app2_wrkdir_alias_or_drv is NULL, this field must
- be set to zero.
- app?_prompt indicates whether the user is to be prompted for param-
- eters when the application starts. A value of 1 indicates
- that the user is to be prompted for parameters; a value
- of zero indicates that the user is not to be prompted.
- app?_interface is one of three values:
- Value Meaning
- 0x1 The application is a windowed program
- running the PM interface.
- 0x2 The application is a protected mode
- program that is not windowed.
- 0x4 The application is a windowed program
- that is not PM and that uses OS/2 video
- I/O functions.
- app?_apptype is one of three values:
- Value Meaning
- 0x1 Public DOS applications
- 0x2 Public OS/2 applications
- 0x4 Private OS/2 applications
- app?_res_count is the number of app_res_list structures that immediate-
- ly follow the app_info_3 structure.
-
-
- Application Resource Lists (app_res_list):
-
- arl_alias
- arl_device
-
-
- where:
- arl_alias specifies the alias for the resource required by the
- application. The alias must exist.
- arl_device indicates the device assigned to the resource specified
- by arl_alias when the application starts.
-
-
- ----------------------------------------------------------------------------
-
- NetAppAdd
- ─────────
-
- Adds an application definition. This API is only available with RXLAN30 and
- LAN Server 3.0.
-
- Syntax:
-
- ret = NetAppAdd( server, user, level, buffer, dummy )
-
-
- Parameter:
- server see above
- user indicates the application type. If userid
- is '', the application is considered to be
- a public application. Otherwise, userid
- contains the user ID of a user defined
- on the domain. A userid that is not ""
- indicates that the application to be
- added is private.
- level 3
- rexx-buffer name of rexx variable containing app
- data (app_info_3)
-
- Example:
-
- BUFFER.APP3_name = 'WORDPRO'
- BUFFER.APP3_remark = 'Word Processor'
- BUFFER.APP3_command = 'WORD.EXE'
- BUFFER.APP3_command_parms =''
- BUFFER.APP3_app_alias_or_drv = 'SRV_D'
- BUFFER.APP3_app_path_to_dir = '\WORDPRO'
- BUFFER.APP3_prompt = 0
- BUFFER.APP3_interface = 1
- BUFFER.APP3_apptype = 2
- BUFFER.APP3_res_count = 0
- ret = NetAppAdd( '\\SERVER', '', 3, 'Buffer', '' )
-
-
-
- ----------------------------------------------------------------------------
-
- NetAppDel
- ─────────
- Deletes an application definition. This API is only available with RXLAN30
- and LAN Server 3.0.
-
- Syntax:
-
- ret = NetAppDel( server, user, appname, dummy )
-
-
- Parameter:
- server see above
- user indicates the application type. If userid
- is '', the application is considered to be
- a public application.
- appname name of application to delete
-
- Example:
-
- ret = NetAppDel( '\\SERVER', '', 'WORDPRO', '' )
-
-
- ----------------------------------------------------------------------------
-
- NetAppEnum
- ──────────
-
- Enumerates all applications of a given type. This API is only available with
- RXLAN30 and LAN Server 3.0.
-
- Syntax:
-
- ret = NetAppEnum( server, userid, level, type, buffer, dummy, eread,
- dummy )
-
-
- Parameter:
- server see above
- user indicates the application type. If userid
- is '', the applications are considered to
- be public applications.
- level 0, 1, 2, 3
- type indicates the kind of application to be
- enumerated:
- Bit Meaning
- 0x1 Public DOS applications
- 0x2 Public OS/2 applications
- 0x4 Private OS/2 applications
- 0x7 All applications
- rexx-buffer name of rexx variable containing app
- data
- eread number of entries found
-
- Example:
-
- ret = NetAppEnum( '\\SERVER', 'JOHN', 0, 7, 'Buffer', '', 'eread',
- '' )
- DO i=0 TO eread-1
- BUFFER.i.APP0_name
- END
-
-
- ----------------------------------------------------------------------------
-
- NetAppGetInfo
- ─────────────
-
- Returns information about a given application. This API is only available with
- RXLAN30 and LAN Server 3.0.
-
- Syntax:
-
- ret = NetAppGetInfo( server, user, appname, level, buffer, dummy,
- dummy )
-
-
- Parameter:
- server see above
- user see above
- appname name of application to get information
- level 0, 1, 2, 3
- rexx-buffer name of rexx variable containing app
- data
-
- Example:
-
- ret = NetAppGetInfo( '\\SERVER', '', 'WORDPRO', 2, 'Buffer', '' )
- SAY 'Name : ' BUFFER.APP2_name
- SAY 'Remark: 'BUFFER.APP2_remark
- SAY 'Command: 'BUFFER.APP2_command
-
-
-
- ----------------------------------------------------------------------------
-
- NetAppSetInfo
- ─────────────
-
- Returns information about a given application. This API is only available with
- RXLAN30 and LAN Server 3.0.
-
- Syntax:
-
- ret = NetAppSetInfo( server, user, appname, level, buffer, dummy,
- parmnum )
-
-
- Parameter:
- server see above
- user see above
- appname name of application to get information
- level 0, 1, 2, 3
- rexx-buffer name of rexx variable containing app
- data
- parmnum determines whether rexx-buffer contains
- a complete app_info data structure or a
- single component. If parmnum is 0,
- level can be 1, 2, or 3, and rexx-buffer
- must contain a complete alias_info data
- structure. Otherwise, parmnum
- mustspecify the ordinal position value
- for one of the data structure compo-
- nents:
- Value Component
- 3 appx_remark
- 4 appx_command
- 5 appx_command_parms
-
- Example:
-
- ret = NetAppSetInfo( '\\SERVER', '', 'WORDPRO', 0, 'New remark', '',
- 3 )
-
- ----------------------------------------------------------------------------
-
- USER PROFILE MANAGEMENT
- ───────────────────────
-
- The functions of this sections provide an interface to the OS/2 user profile
- management including the logon and logoff commands.
-
-
- Data structures
-
- User logon information (upm_user_logon):
-
- userid
- remotetype
- remotename
- sessionid
-
- where:
- userid contains the name of the logged on user
- remotetype is the type of node named in remotename for which the
- logoff is being requested. Valid values are:
- type Meaning
- 1 The local node.
- 2 Specifies that remotename is the name
- of a node from which the user wants to
- log off.
- 3 Specifies that remotename is the name
- of a domain.
- remotename string identifying the node or domain for the user ID.
- sessionid Identifier of the session
-
- ----------------------------------------------------------------------------
-
- upmeulgn
- ────────
-
- Logs a user on to the system.
-
- Syntax:
-
- ret = upmeulgn( userid, password, remotename, remotetype, resvd )
-
-
- Parameter:
- userid string containing the user ID to be logged on.
- password string containing the password.
- remotename string identifying the node or domain for which the user
- ID and password are required. If remotetype is local,
- remotename is ignored.
- remotetype is the type of node named in remotename for which the
- user ID and password are required.
- types Meaning
- 1 The local node. The calling process is
- logging on to the local node.
- 2 Specifies that remotename is the name
- of an LU 6.2 node to which the caller
- wishes to log on.
- 3 Specifies that remotename is the name
- of a domain.
- flags is a bit mask for LAN Server logon verification. Valid
- values for bits 0 and 1 follow:
- Bit Meaning
- 0x01 Perform verification locally
- 0x02 Don't perform any verification
- 0x03 Perform the verification on the domain
-
-
- ----------------------------------------------------------------------------
-
- upmeulgf
- ────────
-
- Logs a user off the system.
-
-
- Syntax:
-
- ret = upmeulgf( userid, remotename, remotetype )
-
-
- Parameter:
- userid string containing the user ID to be
- logged off.
- remotename name identifying the node or domain
- from which the user ID is to be logged
- off.
- remotetype is the type of node named in remotena-
- me for which the logoff is being re-
- quested. Valid values are:
- type Meaning
- 1 The local node.
- 2 Specifies that remotename is the
- name of a node from which the
- user wants to log off.
- 3 Specifies that remotename is the
- name of a domain.
- 4 Same meaning as (3), except
- that all connections are forced
- closed.
-
-
- ----------------------------------------------------------------------------
-
- upmelocl
- ────────
-
- Displays a local logon window to log on to the system.
-
- Syntax:
-
- ret = upmelocl( userid, type )
-
-
- Parameter:
- userid buffer containing the locally logged-on
- user ID.
- type is a buffer containing the privilege type
- of the user who logged on locally.
- Type is either:
- 1 user privilege
- 2 administrator privilege
- 9 local administrator privilege
-
- Example:
-
- ret = upmelocl( 'user', 'priv' )
- SAY 'User ID: 'user
- IF priv = 1 THEN type = 'USER'
- IF priv = 2 THEN type = 'ADMIN'
- IF priv = 9 THEN type = 'LOCAL ADMIN'
- SAY 'Priv: 'type
-
- ----------------------------------------------------------------------------
-
- upmelocu
- ────────
-
- Retrieves the ID of an already local logged on user.
-
- Syntax:
-
- ret = upmelocu( userid, type )
-
- Parameter:
- userid buffer containing the locally logged-on
- user ID.
- type is a buffer containing the privilege type
- of the user who is logged on locally.
- type is either:
- 1 user privilege
- 2 administrator privilege
- 9 local administrator privilege
-
- ----------------------------------------------------------------------------
-
-
- upmeusrl
- ────────
-
- Returns a list of logged on user IDs.
-
- Syntax;
-
- ret = upmeusrl( remotename, remotetype, buffer, dummy, entries, '' )
-
-
- Parameter:
- remotename name identifying the node or domain
- from which the logged-on user IDs are
- requested.
- remotetype is the type for the requested logged-on
- user IDs. Valid values are:
- types Meaning
- 1 User IDs logged on to the local
- node
- 2 User IDs logged on to remote
- nodes
- 3 User IDs logged on to the LAN
- Server domain.
- 21 User IDs logged on to the high
- performance file system
- 22 All user IDs
- buffer contains the UPM_USER_LOGON
- structures.
- entries is the number of UPM_USER_LOGON
- entries returned in buffer.
-
- ----------------------------------------------------------------------------
-
- APPENDICES
- ──────────
-
-
- The files
- ─────────
-
- This package consists of the following files:
-
- RXLAN20.DLL The RexxLan/2 extension DLL for a LAN Server Ver-
- sion 2.0 Requester
- RXLAN30.DLL The counterpart for a Version 3.0 Requester
- DO NOT USE THIS WITH A LAN REQUESTER 2.0
- REXXLAN.INF The 'VIEW'able version of the programmers reference (not
- in the evaluation package)
- README.1ST Any last minute comments. Please read them first.
- FORM For the development of further releases of RexxLan/2
- and other Network management utilities,
- REPORT.BUG For the - hopefully - never occuring case, that you
- discover an "anomaly" of RexxLan/2 , please fill in
- this form and send it to the technical support.
- \SMPLES?0 Some sample REXX files using the REXX?0.DLL The
- files are well documented, please read the remarks for
- further details.
-
- ----------------------------------------------------------------------------
-
- Support
- ───────
-
- The technical support is provided through electronic mail. You will reach it
- at:
-
- CompuServe: 100024,3436 (Leif Braeuer)
- Fido: 2:240/5200.13
- Internet: 100024.3436@compuserve.com
- Maus Net: Leif Braeuer@HH (Germany only)
-
-
- ----------------------------------------------------------------------------
-
- Return codes
- ────────────
-
- You can consult the OS/2 Online help for further details of the error condition.
- To do so, open a OS/2 Command Window and enter HELP SYSxxx for error
- code less than 2100, for other enter HELP NETxxxx, where xxxx specfies the
- error code returned from the RexxLan/2 API. In your programs,
- NetRexxGetMessage() will supply this information.
-
- 0 (NERR_Success) Success
-
- Redirector related error codes
- 50 (ERR_NOT_SUPPORTED) The network request is not supported.
- 51 (ERR_REM_NOT_LIST) This remote computer is not listening.
- 52 (ERR_DUP_NAME) A duplicate name exists on the network.
- 53 (ERR_BAD_NETPATH) The network path cannot be located.
- 54 (ERR_NETWORK_BUSY) The network is busy.
- 55 (ERR_DEV_NOT_EXIST) This device does not exist on the net-
- work.
- 56 (ERR_TOO_MANY_CMDS) The network BIOS command limit has been
- reached.
- 57 (ERR_ADAP_HDW_ERR) A network adapter hardware error has
- occurred.
- 58 (ERR_BAD_NET_RESP) The network responded incorrectly.
- 59 (ERR_UNEXP_NET_ERR) An unexpected network error occurred.
- 60 (ERR_BAD_REM_ADAP) The remote adapter is not compatible.
- 61 (ERR_PRINTQ_FULL) The printer queue is full.
- 62 (ERR_NO_SPOOL_SPACE) Space to store the file waiting to be
- printed is not available on the server.
- 63 (ERR_PRINT_CANCELLED) The requested print file has been can-
- celled.
- 64 (ERR_NETNAME_DELETED) The network name was deleted.
- 65 (ERR_NETWORK_ACCESS_DENIED) Network access is denied.
- 66 (ERR_BAD_DEV_TYPE) The network resource type is not cor-
- rect.
- 67 (ERR_BAD_NET_NAME) The network name cannot be found.
- 68 (ERR_TOO_MANY_NAMES) The name limit for the local computer
- network adapter card was exceeded.
- 69 (ERR_TOO_MANY_SESS) The network BIOS session limit was ex-
- ceeded.
- 70 (ERR_SHARING_PAUSED) File sharing has been temporarily paused.
- 71 (ERR_REQ_NOT_ACCEP) The network request was not accepted.
- 72 (ERR_REDIR_PAUSED) Print or disk redirection is tempora-
- rily paused.
- 88 (NET_WRITE_FAULT) A network data fault occurred.
- 230 (ERR_BAD_PIPE) This is a nonexistent pipe or an inva-
- lid operation.
- 231 (ERR_PIPE_BUSY) The specified pipe is busy.
- 232 (ERR_NO_DATA) There is no data to be read on a non--
- blocking read.
- 233 (ERR_PIPE_NOT_CONNECTED) The server disconnected the pipe.
- 234 (ERR_MORE_DATA) Additional data is available.
- 240 (ERR_VC_DISCONNECTED) The session was cancelled.
- 2102 (NERR_NetNotStarted) The workstation driver (NETWKSTA.SYS on
- OS/2 workstations, NETWKSTA.EXE on DOS
- workstations) isn't installed.
- 2103 (NERR_UnknownServer) The server cannot be located.
- 2104 (NERR_ShareMem) An internal error occurred. The net-
- work cannot access a shared memory
- segment.
- 2105 (NERR_NoNetworkResource) A network resource shortage occurred .
- 2106 (NERR_RemoteOnly) This operation is not supported on
- workstations.
- 2107 (NERR_DevNotRedirected) The device is not connected.
- 2114 (NERR_ServerNotStarted) The Server service isn't started.
- 2115 (NERR_ItemNotFound) The queue is empty.
- 2116 (NERR_UnknownDevDir) The device or directory does not exist
- 2117 (NERR_RedirectedPath) The operation is invalid on a redirec-
- ted resource.
- 2118 (NERR_DuplicateShare) The name has already been shared.
- 2119 (NERR_NoRoom) The server is currently out of the
- requested resource.
- 2121 (NERR_TooManyItems) Requested add of item exceeds maximum
- allowed.
- 2122 (NERR_InvalidMaxUsers) The Peer service supports only two
- simultaneous users.
- 2123 (NERR_BufTooSmall) The API return buffer is too small.
- 2127 (NERR_RemoteErr) A remote API error occurred.
- 2131 (NERR_LanmanIniError) An error occurred when opening or read-
- ing IBMLAN.INI.
- 2134 (NERR_OS2IoctlError) An internal error occurred when calling
- the workstation driver.
- 2136 (NERR_NetworkError) A general network error occurred.
- 2138 (NERR_WkstaNotStarted) The Requester service has not been
- started.
- 2139 (NERR_BrowserNotStarted) The requested information is not avai-
- lable.
- 2140 (NERR_InternalError) An internal LAN Manager error occurred.
- 2141 (NERR_BadTransactConfig) The server is not configured for trans-
- actions.
- 2142 (NERR_InvalidAPI) The requested API isn't supported on
- the remote server.
- 2143 (NERR_BadEventName) The event name is invalid.
-
- NetConfig related error codes
- 2146 (NERR_CfgCompNotFound) Could not find the specified component
- in IBMLAN.INI.
- 2147 (NERR_CfgParamNotFound) Could not find the specified parameter
- in IBMLAN.INI.
- 2149 (NERR_LineTooLong) A line in IBMLAN.INI is too long.
-
- Wksta and Logon related error codes
- 2200 (NERR_AlreadyLoggedOn) This workstation is already logged on
- to the local-area network.
- 2201 (NERR_NotLoggedOn) The workstation isn't logged on to the
- local-area network.
- 2202 (NERR_BadUsername) The username or groupname parameter is
- invalid.
- 2203 (NERR_BadPassword) The password parameter is invalid.
- 2204 (NERR_UnableToAddName_W) The logon processor did not add the
- message alias.
- 2205 (NERR_UnableToAddName_F) The logon processor did not add the
- message alias.
- 2206 (NERR_UnableToDelName_W) The logoff processor did not delete the
- message alias.
- 2207 (NERR_UnableToDelName_F) The logoff processor did not delete the
- message alias.
- 2209 (NERR_LogonsPaused) Network logons are paused.
- 2210 (NERR_LogonServerConflict) A centralized logon-server conflict
- occurred.
- 2211 (NERR_LogonNoUserPath) The server is configured without a
- valid user path.
- 2212 (NERR_LogonScriptError) An error occurred while loading or
- running the logon script.
- 2214 (NERR_StandaloneLogon) The logon server was not specified.
- Your computer will be logged on as
- STANDALONE.
- 2215 (NERR_LogonServerNotFound) The logon server cannot be found.
- 2216 (NERR_LogonDomainExists) There is already a logon domain for
- this computer.
- 2217 (NERR_NonValidatedLogon) The logon server could not validate the
- logon.
-
- ACF API related (access, user, group) error codes
- 2219 (NERR_ACFNotFound) The accounts file NET.ACC cannot be
- found.
- 2220 (NERR_GroupNotFound) The groupname cannot be found.
- 2221 (NERR_UserNotFound) The username cannot be found.
- 2222 (NERR_ResourceNotFound) The resource name cannot be found.
- 2223 (NERR_GroupExists) The group already exists.
- 2224 (NERR_UserExists) The user account already exists.
- 2225 (NERR_ResourceExists) The resource permission list already
- exists.
- 2226 (NERR_NotPrimary) The UAS database is replicant and will
- not allow updates.
- 2227 (NERR_ACFNotLoaded) The user account system has not been
- started.
- 2228 (NERR_ACFNoRoom) There are too many names in the user
- account system.
- 2229 (NERR_ACFFileIOFail) A disk I/O failure occurred.
- 2230 (NERR_ACFTooManyLists) The limit of 64 entries per resource
- was exceeded.
- 2231 (NERR_UserLogon) Deleting a user with a session is not
- allowed.
- 2232 (NERR_ACFNoParent) The parent directory cannot be located.
- 2233 (NERR_CanNotGrowSegment) Unable to grow UAS session cache segment.
- 2234 (NERR_SpeGroupOp) This operation is not allowed on this
- special group.
- 2235 (NERR_NotInCache) This user is not cached in UAS session
- cache.
- 2236 (NERR_UserInGroup) The user already belongs to this group.
- 2237 (NERR_UserNotInGroup) The user does not belong to this group.
- 2238 (NERR_AccountUndefined) This user account is undefined.
- 2239 (NERR_AccountExpired) This user account has expired.
- 2240 (NERR_InvalidRequester) The user is not allowed to log on from
- this workstation.
- 2241 (NERR_InvalidLogonHours) The user is not allowed to log on at
- this time.
- 2242 (NERR_PasswordExpired) The password of this user has expired.
- 2243 (NERR_PasswordCantChange) The password of this user cannot chan-
- ge.
- 2244 (NERR_PasswordHistConflict) This password cannot be used now.
- 2245 (NERR_PasswordTooShort) The password is shorter than required.
- 2246 (NERR_PasswordTooRecent) The password of this user is too recent
- to change.
- 2247 (NERR_InvalidDatabase) The UAS database file is corrupted.
- 2248 (NERR_DatabaseUpToDate) No updates are necessary to this repli-
- cant UAS database.
- 2249 (NERR_SyncRequired) This replicant database is outdated;
- synchronization is required.
-
- Use API related error codes
- 2250 (NERR_UseNotFound) The connection cannot be found.
- 2251 (NERR_BadAsgType) This asg_type is invalid.
- 2252 (NERR_DeviceIsShared) This device is currently being shared.
-
- Message Server related error codes
- 2270 (NERR_NoComputerName) A computername has not been configured.
- 2271 (NERR_MsgAlreadyStarted) The Messenger service is already star-
- ted.
- 2272 (NERR_MsgInitFailed) The Messenger service failed to start.
- 2273 (NERR_NameNotFound) The message alias cannot be found on
- the local-area network.
- 2274 (NERR_AlreadyForwarded) This message alias has already been
- forwarded.
- 2275 (NERR_AddForwarded) This message alias has been added but
- is still forwarded.
- 2276 (NERR_AlreadyExists) This message alias already exists lo-
- cally.
- 2277 (NERR_TooManyNames) The maximum number of added message
- aliases has been exceeded.
- 2278 (NERR_DelComputerName) The computername cannot be deleted.
- 2279 (NERR_LocalForward) Messages cannot be forwarded back to
- the same workstation.
- 2280 (NERR_GrpMsgProcessor) Error in domain message processor
- 2281 (NERR_PausedRemote) The message was sent, but the recipient
- has paused the Messenger service.
- 2282 (NERR_BadReceive) The message was sent but not received.
- 2283 (NERR_NameInUse) The message alias is currently in use.
- Try again later.
- 2284 (NERR_MsgNotStarted) The Messenger service has not been
- started.
- 2285 (NERR_NotLocalName) The name is not on the local computer.
- 2286 (NERR_NoForwardName) The forwarded message alias cannot be
- found on the network.
- 2287 (NERR_RemoteFull) The message alias table on the remote
- station is full.
- 2288 (NERR_NameNotForwarded) Messages for this alias are not cur-
- rently being forwarded.
- 2289 (NERR_TruncatedBroadcast) The broadcast message was truncated.
- 2294 (NERR_InvalidDevice) This is an invalid devicename.
- 2295 (NERR_WriteFault) A write fault occurred.
- 2297 (NERR_DuplicateName) A duplicate message alias exists on the
- local-area network.
- 2298 (NERR_DeleteLater) This message alias will be deleted
- later.
- 2299 (NERR_IncompleteDel) The message alias was not successfully
- deleted from all networks.
- 2300 (NERR_MultipleNets) This operation is not supported on
- machines with multiple networks.
-
- Server API related error codes
- 2310 (NERR_NetNameNotFound) This shared resource does not exist.
- 2311 (NERR_DeviceNotShared) This device is not shared.
- 2312 (NERR_ClientNameNotFound) A session does not exist with that
- computername.
- 2314 (NERR_FileIdNotFound) There isn't an open file with that ID
- number.
- 2315 (NERR_ExecFailure) A failure occurred when executing a
- remote administration command.
- 2316 (NERR_TmpFile) A failure occurred when opening a re-
- mote temporary file.
- 2317 (NERR_TooMuchData) The data returned from a remote admini-
- stration command has been truncated to
- 64K.
- 2318 (NERR_DeviceShareConflict) This device cannot be shared as both a
- spooled and a non-spooled resource.
- 2319 (NERR_BrowserTblIncomplete) The information in the list of servers
- may be incorrect.
- 2320 (NERR_NotLocalDomain) The computer isn't active on this do-
- main.
-
- NetErrorLog error codes
- 2377 (NERR_LogOverflow) This log file exceeds the maximum de-
- fined size.
- 2378 (NERR_LogFileChanged) This log file has changed between
- reads.
- 2379 (NERR_LogFileCorrupt) This log file is corrupt.
-
- Additional UAS and NETLOGON error codes
- 2450 (NERR_BadUasConfig) The user account system database is not
- configured correctly.
- 2451 (NERR_InvalidUASOp) This operation is not permitted when
- the Netlogon service is running.
- 2452 (NERR_LastAdmin) This operation is not allowed on the
- last admin account.
- 2453 (NERR_DCNotFound) Unable to find domain controller for
- this domain.
- 2454 (NERR_LogonTrackingError) Unable to set logon information for
- this user.
- 2455 (NERR_NetlogonNotStarted) The Netlogon service has not been star-
- ted.
- 2456 (NERR_CanNotGrowUASFile) Unable to grow the user account system
- database.
- 2458 (NERR_PasswordMismatch) A password mismatch has been detected.
-
- Server error codes.
- 2460 (NERR_NoSuchServer) The server ID does not specify a valid
- server.
- 2461 (NERR_NoSuchSession) The session ID does not specify a valid
- session.
- 2462 (NERR_NoSuchConnection) The connection ID does not specify a
- valid connection.
- 2463 (NERR_TooManyServers) There is no space for another entry in
- the table of available servers.
- 2464 (NERR_TooManySessions) The server has reached the maximum
- number of sessions it supports.
- 2465 (NERR_TooManyConnections) The server has reached the maximum
- number of connections it supports.
- 2466 (NERR_TooManyFiles) The server cannot open more files be-
- cause it has reached its maximum num-
- ber.
- 2467 (NERR_NoAlternateServers) There are no alternate servers registe-
- red on this server.
-
- UPS error codes.
- 2480 (NERR_UPSDriverNotStarted) The UPS driver could not be accessed by
- the UPS service.
-