48 lines
2.2 KiB
Plaintext
48 lines
2.2 KiB
Plaintext
|
|
|||
|
|
|||
|
Brief design note on utilities DLL (utilsub.dll)
|
|||
|
|
|||
|
By John Richardson CITRIX Systems, 1993.
|
|||
|
|
|||
|
A large part of the library are functions for processing command lines, strings,
|
|||
|
etc. ported from the OS/2 product on an as needed basis. The only unique
|
|||
|
part here is a complete UNICODE version of ParseCommandLine(), and the many
|
|||
|
subroutines it calls upon to handle file name expansion and such.
|
|||
|
|
|||
|
The more interesting part are the "helper" functions that do a lot of the
|
|||
|
work that was in MumProc() on OS/2. This allows querying NT and CITRIX supplied
|
|||
|
system objects such as users, winstations, processes, etc. A lot of time
|
|||
|
was spent chasing down various ways of doing things, as well as implementation
|
|||
|
of base support (such as winsta.dll). The functions in the library handle
|
|||
|
common needs that come up in the implementation of system programs.
|
|||
|
|
|||
|
CACHES:
|
|||
|
|
|||
|
In order to be efficient, the DLL makes use of caching of various information
|
|||
|
gotten from the system and objects. For "one shot" command line utilities,
|
|||
|
this cache does not pose any problems. But for monitoring utilities that
|
|||
|
do not exit, there is a need to flush these caches whenever up to date
|
|||
|
system information is needed. IE: The top of its monitoring loop after an
|
|||
|
interval wakeup, or event. The main flush function is RefreshAllCaches(),
|
|||
|
but specific caches may be dumped by calling refresh routines specific to
|
|||
|
the group of routines. See the tail end of utils\citrix\inc\utilsub.h for
|
|||
|
the various cache dumping routines.
|
|||
|
|
|||
|
Universal Object Name Matching:
|
|||
|
|
|||
|
The current OS/2 product makes use of techniques in which the user can
|
|||
|
supply the name of a user, workstation, or id to the various utilities and
|
|||
|
the system will try to match this against a valid name. In order to be
|
|||
|
consistent, as well as make maintanence easier, this DLL provides Object
|
|||
|
name match functions that adhere to the lookup rules in the system.
|
|||
|
Currently, the name is validated as a workstation, and if not, it is checked
|
|||
|
as a workstation integer id. If this is still invalid, it is checked as a
|
|||
|
valid user name.
|
|||
|
|
|||
|
For the ProcessObjectMatch routine, an additional flag is supplied to
|
|||
|
specify whether to treat an integer identifier as an NT process, or a
|
|||
|
CITRIX WinStation.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|