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.
|
||
|
||
|
||
|
||
|