Winpulse
v.0.4.5
Date: 25-Aug-2001
Contents.
1.
Introduction.
2. Starting Winpulse.
3. Main Window.
4. Sentinels & Speeders.
5. Designer.
6. Options.
7. FAQ.
8. Contacts+Misc.
Introduction.
Winpulse is a system
resources monitoring utility. Runs on Win95,98,ME,NT4,2000,XP.
Starting
Winpulse.
Unpack winpulse.zip.
Invoke wpulse32.exe. Winpulse starts a stub which will launch main module. The
stub will be closed immediately after Engine32 module was launched.
Winpulse provides command line arguments, which are used usually for tuning
Winpulse and mainly for debugging purposes. Current version does not provide
Uninstaller.
Command line syntax: wpulse32.exe [flags]
As a flag you can use: '-', '--' (unix style), '/' (dos style).
As options assigning ':' or '=' can be used.
Flags are case insensitive. Order of flags is not important.
([] - arbitrary, <> - obligatory)
| Flags: |
Description |
Notes |
| /debug=<level> |
sets debug
level. Debugging console will be opened.
Level: number in the range 0...100
0 - no debug information
100 - very verbose debugging.
WARNING: High level of debugging may significanlty decrease performance
of the system because of high intensity of dumps to debugging console
|
In
current version debug log file DEBUG.log will be mirrored in the
current directory. |
| /unplug=<sentinel> |
Unplugs Sentinel
from current session (Sentinel will not be created). Valid values for
Sentinel:
0 - Drives Sentinel
1 - CPU Sentinel
2 - Memory Sentinel
3 - FSR Sentinel
4 - Audio Sentinel
5 - System Sentinel
6 - Net Sentinel
Multiple unplugging is supported (e.g. /unplug=1 /unplug=2)
|
Can
be used with /unlink |
| /unlink=<speeder> |
Unlinks Speeder
from current session (Speeder will not be created). Valid values for Speeders:
ram - Physical memory speeder
swp - Swap Space speeder
vm - Virtual memory speeder
usr - User resources speeder
gdi - GDI resources speeder
audio - Master volume speeder
wav - Wave volume speeder
clock - Clock speeder
os - OS speeder
scr - Screen resolution speeder
host - Host speeder
user - Logged user speeder
live - OS live speeder
mapi - MAPI speeder
key - Keyboard language speeder
Speeders'
names are case sensitive.
Multiple unlinking is supported (e.g. /unlink=mapi /unlink=vm)
Unlinking is _not_ supported for dynamic speeders (which are created/destroyed
dynamicly during Winpulse session), such as Drive Speeders, CPU Speeders,
Ping Speeders.
|
Can
be used with /unplug |
| /log=<log
file> |
Debug
log file where all debug information will be dumped. Takes effect only if
/debug flag is specified. Default file name is DEBUG.log
|
|
Main
Window.
 |
The main
Winpulse window is mouse draggable by any point with pressed left button.
The window should intercept situations, when screen resolution changes
and thus position itself in visible area. By pressing right mouse button
the context popup menu will appear. Standard Windows controls will process
mouse clicks according to their behaviour if clicked within their area
(e.g. pressing right button on Tracker will perfrom nothing :). The Winpulse
window can be resized only horizontally. Vertical resizing is not possible.
Window can snap to screen borders.
Winpulse
windows share its space among several panels or groups, which are called
Sentinels. Each Sentinel contains indicators,
which are named Speeders (short for 'speedometer').
Usually particular Sentinel contains the group of Speeders with the same
functionality. Winpulse allows to hide and show any Speeder and any Sentinel
arbitrarily. Particulat Sentinel and Speeder may have its own menu options.
The Sentinels
are visible as panels, delemeted from each other by shaded frame. Hidden
sentinel is not visible at all.
The Speeders
always contain:
1) Icon
2) Nick
All other visual elements are arbitrary, but the main are:
1) Speeders with Gauge bar, which is situated next to the Nick. In major
cases also have Free and Total indicators, which are situated below the
Gauge Bar.
The Gauge bar usually shows information in percent, but not mandatory.
User must refer to specific Speeder help for correct interpretation (e.g.
inverse gauge)
2) Speeders with Text label, which is situated next to the Nick.
The Speeder
is customizable:
1) Icon can be hidden/shown
2) Nick can be hidden/shown
3) Free/Toal indicators can be hidden/shown
|
4) Nick name can
be changed to an arbitrary string.
The Speeder may introduce additional visual elements, expand/shrink its size.
Both Sentinels
and Speeders may share its menus to the main Winpulse menu for quick access.
The Sentinels and Speeders options are accessed via Designer.
Sentinels
& Speeders.
Sentinels contain
group of Speeders with similar functionality for optimized performance and resources
consumption, and also for more comprehensive look.
| Sentinel |
Speeder |
Description |
| Drives
Sentinel |
|
This Sentinel
monitors disk drives present in the system
Only Floppy drives are not supported because of extreme system performance
degradation they can inflict. Adding and removing of drives from the system
is intercepted and Sentinel is updated correspondingly (e.g. new network
drive mapped).
The drive options, specified in Designer window will be memorized even
if drive was removed from the system. Theses stored options will be applied
when drive is added later. It is handy in the case when you have large
number of network drives, which are mounted automaticly during login.
You can hide drives you don't want to monitor and next time they are added
to the system at login, they won't be visible in Winpulse. On the other
hand it may lead to confusion in the situation, when at some preliminary
stage the user had hidden the drive D: and hid it. After a while the drive
was removed from the system. Then user adds drive to the system and mounts
it as D: Winpulse will intercept the drive addition but won't show it,
because the options tell him the drive should be invisible. User must
go to the Designer window and watch what drives are being monitored at
the moment.
Issues:
1. Keep in mind that mounting to many network drives may inflict
system performance, because drive information is transfered across network.
2. CD/DVD drives are processed sometimes slowly by Win32 when no
media is inserted. It's not Winpulse responsibility. I assume, the same
pertain to Zip/Backup drives. On my system just keeping CD-ROM in the
drive was enough for Win32 to be more generous with CPU load.
3. On Win95,Win95 OSR1 the drive sizes are reported incorrectly for volumes
greater than 2G. It's a limitation of Win32 on those platforms. Install
OSR2 (but I'm still afraid that the limit will be 8G, however have not
checked it).
|
| CPU
Sentinel |
|
CPU
Sentinel monitors cpu load. Multiple processors are supported (up to 32,
although never heard of more then 4 cpus box).
CPU Sentinel provides Tray Gauge wich can show the load for two cpus. If
the system has only one cpu, the right tray sub-gauge will be inactive (I
am actually thinking about showing ram in that gauge)
The Sentinel also provides CPU Menu where user can find out what kind of
processor system runs on and some additional properties, like cpu clock,
family, model, stepping, type and vendor. The frequency is approximate and
calculated internally for one second. It will guarantee more or less precise
detection on overclocked cpus.
Issues:
1. On Win95 clones cpu load may sometimes show considerable load
(up to 100%) when there is absolutely no load. It is a bug in Win32 subsystem
of registry performance counters. Due to this fact, more robust and precise
method is being elaborated now which is not based on registry perfromance
counters. |
| Memory
Sentinel |
|
|
| |
ram |
The
Speeder monitors Random Access Memory on the system.
|
| |
swp |
The
Speeder monitors Swap Memory on the system. It's not always equal to the
swap file. When the free size of the swap approaches 0, the system may become
very unstable. User must close applications which hog too much memory. |
| |
vm |
The
Speeder monitors Virtual Memory available to the _PROCESS_ which retrieves
this information. Hence this speeder is rather useless, because it shows
information specific only to Winpulse. Win32 allocates 2G of virtual space
for every process, so monitoring this information in regards of the whole
system is not feasible. |
| |
free |
By
selecting "Free Memory" in Winpulse menu it's possible to free
RAM. The Speeder will be added to Memory Sentinel and will be active for
a while. When it reaches 100%, it will be removed from the Sentinel. |
| FSR
Sentinel |
|
Free
System Resources. This Sentinel is feasible only on Win95 clones, which
is very limited on FSR resources. On WinNT clones resources are "virtually"
unlimited in comparison with Win95 even on the same box. On WinNT the gauges
will be always 100%.
Keep in mind that Speeders show % of free resources, 100% - means 100% of
free resources (good), 10% - 10% of free resources (very bad). It is different
from all other Gauged Speeders, which show % of consumed space. |
| |
gdi |
Graphics
Device Interface Speeder monitors graphics resources on the system. All
visual elements on Win32 system (buttons, windows, etc) are interpreted
as graphics resources. When resources are close to 0%, no more "buttons"
will be created |
| |
usr |
This
Speeder monitors system resources, often refered as USER resources. Memory
heaps, threads, processes, mutexes, semaphores and some other handles are
user resources. |
| System
Sentinel |
|
|
| |
clock |
The
Speeder shows current time |
| |
os |
The
Speeder shows Operating system |
| |
scr |
The
Speeder shows current screen resolution |
| |
host |
The
Speeder shows host name and its IP address. If IP address is not resolved,
it will be 127.0.0.1 |
| |
user |
The
Speeder shows currenly logged user name |
| |
live |
The
Speeder shows how long the system was live (without reboots) |
| |
mapi |
The
Speeder monitors unread emails in INBOX folder for default user via MAPI
interface. It utilizes MAPI32.DLL for access to MAPI interface. When Winpulse
starts for the first time, the Dialog window will appear from MAPI Layer
to choose profile to be used. By checking desired profile and selecting
"Remember whatever..." it's possible to prevent MAPI to ask about
profile during next Winpulse start. MAPI interface is usually used for access
to Exchange server, but it's also possible to communicate with POP3 servers
in this way by configuring profile correspondingly.
Mail notifications are delivired immediately after receiving by server,
so no frequency is needed for the Speeder.
When new mail arrive, the Speeder will change its icon and show the number
of new messages.
Issues:
1. On some boxes Winpulse does not startup and displays nasty error
message box: "The procedure entry point MAPIAllocateBuffer
could not be located in the dynamic link library mapi32.dll."
This error is caused by corrupted MAPI32.DLL file, which is responsible
for MAPI interface. In 99% of cases, some application during installation
has replaced original MAPI32.DLL with its own version, which does not comply
to M$ MAPI interface. For example, Netscape Communicator and Eudora are
notorious to commit such "crime". There are two workarounds:
- Run fixmapi from command line. It should replace corrupted libary with
the original MAPI32 stub dll. It certainly works on Win2000.
- If a system does not have fixmapi utility, replace MAPI32.DLL explicitly.
DLL can be found in Office97, Office2000, Outlook2000, Explorer 4,5,6 installations.
Unpack it into Windows system directory (\system for Win95 clones, \system32
for WinNT clones)
Both workarounds should not affect functionality of MAPI applications.
- If nothing helps, unlink mapi speeder by invoking Winpulse like this:
wpulse32.exe -unlink=mapi
2. MAPI interface is very bloated. POP3 is much simplier and more
quick. I'm currently working on POP3 Speeder.
3. Users, who don't use MAPI interface don't need mapi Speeder. It's
possible to hide it in Designer or unlink during Winpulse start. |
| |
key |
The Speeder
shows the Keyboard Language Layout for the currently selected window.
The icon shows the country flag of chosen language. If the flag is European
Union flag, then the Speeder could not find the resource for selected
language. User can add desired resources by himself. Directory /data
in Winpulse root directory contains file called keylang.ini. This
file contains entries for predefined languages. The structure of the file
is as following:
[Languages]
<language name>= <language id>, <language
icon>
<lanuage
name> - Language name. The name may contain spaces, brackets, etc
and will be shown in The Speeder.
<language id> - Win32 numerical id of the language. Can be
written both in hexadecimal and decimal. Win32 SDK contains all ids for
supported laguages. In case you want to add your language and don't know
id, write me email.
<language icon> - file name of a flag icon. All icons must
be located in /data directory. File name cannot be absolute path, but
only relative from /data.
For exmaple: Russian= $0419, ru.ico
The user must restart Winpulse to take effects of the changes to the file.
|
| Audio
Sentinel |
|
|
| |
audio |
The
Speeder monitors Master Volume of the sound card. User can change volume.
Left/Right Balance is processed correctly. |
| |
wav |
The
Speeder monitors Wave Volume of the sound card. User can change volume.
Left/Right Balance is processed correctly. |
| |
cd |
CD
volume (not implemented) |
| |
midi |
MIDI
volume (not implemented) |
| Net
Sentinel |
|
Sentinel
allows to add/delete hosts in Designer. When Net Sentinel is selected in
Designer, the Sentinel Area will allow to enter host name and lag time.
Host name can be either IP or DNS name. Lag time specifies in milliseconds
the time limit which is interpreted by Ping Speeder as lag and will be painted
in Alarm Level color. The Ping Speeder has it's own Timer. By selecting
Ping Speeder in Designer it's possible to adjust a Frequency of pings. |
| |
ping |
The Ping
Speeder monitors ping response from specified host. Ping Speeder is controlled
from Designer. In Designer user can add/delete/update Ping Speeder. User
can specify host to ping (can be either DNS name or IP address), lag time
limit (Gauge Bar limit) and frequency of ping. It's not advised to set
high frequency of ping (less 100ms), because it can degrade system performance.
Usually 1000ms is more than enough. The Speeder's gauge will show the
ping time to the host. If the Speeder encounters errors during ping, the
gauge will show error explanation:
1. unresolved host - host DNS name could not be resolved
2. time out - there was no ping response for at least 1 sec from host.
In future version timeout interval will be configurable.
0ms ping time means that the response from host took less then 1 ms (the
highest resolution for ping).
Issues:
1. The Speeder utilizes ICMP.DLL library for pinging. If the library
cannot be found, the ping facility will not be available.
2. Ping Speeder tries to resolve host name before starting to ping.
If host cannot be resolved, it won't be pinged.
3. Ping Speeder does not support pinging hosts beyond the Firewall/Proxy
if they prohibit ICMP packets. In my case even DNS resolution does not
work, so I am rejected at previous stage. If the host can be resolved
but Firewalls filters out ICMP packet, you will receive "time out".
The only solution I see at present is to use deprived "Tunnelled
Ping", which uses UDP or TCP instead of ICMP to "ping"
specified host port. For instance, in this way it's possible to "ping"
generic deamons like HTTP or FTP.
|
Designer.
Designer allows
to configure Sentinels and Speeders. Designer window has several areas:
| area |
description |
| 1 |
Hierarchical
tree of Sentinels and Speeders. |
| 2 |
Visual
settings of Speeders and Sentinels.
Sentinel supports only "Hidden" option
Hidden - hides/shows Sentinel or Speeder from Winpulse window (but
_not_ unlinked or unplugged)
Meters - hides/shows Speeder Free/Total labels. Disabled for Sentinels
Named - hides/shows Speeder nick. Disabled for Sentinels
Iconed - hides/shows Speeder icon.. Disabled for Sentinels
Nick - allows to change Speeder nick name. Disabled for Sentinels
Frequency - allows to specify update frequency of a Speeder. Usually
Speeders are updated by Major Timer, but some Speeders may have their own
timers (Ping Speeders). If a Speeder does not support own Frequency update,
the option will be diabled. Disabled for Sentinels.
The effect of every setting is visible immediately |
| 3 |
Speeder
Gauge settings. If Speeder does not have Gauge Bar, the are will be hidden
Tolerable - sets the color and percetage of tolerable level. If Free
value of a Speeder does not exceed Tolerable level, it's Gauge color will
change to a chosen one.
Low level - sets the color and percetage of low level. If Free value
of a Speeder does not exceed Low level, it's Gauge color will change to
a chosen one.
Alarm level - sets the color and percetage of alarm level. If Free
value of a Speeder exceeds Alarm level, it's Gauge color will change to
a chosen one. 100% is alarm level.
Stasis level - sets the color of Speeders, who's Free/Total values
are not changed and updated and always remain static (DVD-ROM Speeders)
The effect of every setting is visible immediately |
| 4 |
Sentinel
Designer area. If Sentinel supports own design features, this area will
show controls to edit selected Sentinel.
If user selects editable Sentinel, Add button will be enabled to
add new Speeder to the Sentinel.
If user selects Speeder under editable Sentinel, Add, Destroy
and Update buttons will be enabled.
User must press Update button in order the changes to take effect.
|
| 5 |
Speeder
Designer area. Speeders may provide their own editing capabilities. In this
case the area will show controls to edit selected Speeder. |
Options.
|

|
Winpulse
main options are stored in registry in Current User hive. Hence Winpulse
options are not shared among different users. This is convenient for machinces
which are used by different users.
Autostart with Windows - Winpulse will be launched every time user
logs in global context (Win2000 allows to login in the current context)
Stay on top - Winpulse window will be on top of all windows (except
Taskbar with "Always on top" option).
Transparency - track gauge allows to change translucency of Winpulse
window. Win95 clones (Win95,98,ME) do NOT
support transluceny and for these platforms the option is disabled.
Background - changes background color of Winpulse.
Update - frequency of major Winpulse timer in milliseconds. It's
highly unadvised to set frequency lower than 500 ms, because of significant
performance degradation. 1 sec is optimal and very efficient.
Shortcut - system wide shortcut to Hide/Show Winpulse window. Equivalent
to "Hide" popup menu.
Tray gauge Load - sets "load" value color of tray progress
bar.
Tray gauge Free - sets "free" value color of tray progress
bar.
Current version support tray gauge only for CPU
Sentinel. The gauge shows load for 2 cpus. If the box has only one
CPU the right progress bar will be inactive. This will be corrected.
Stick at - sets the distance in pixels at which Winpulse window
adheres to screen borders.
All options take effect immediately.
|
FAQ.
Q1. Winpulse does
not startup and displays nasty error message box: "The
procedure entry point MAPIAllocateBuffer could not be located in the dynamic
link library mapi32.dll."
A1. This error is caused by corrupted MAPI32.DLL file, which is responsible
for MAPI interface. In 99% of cases, some application during installation has
replaced original MAPI32.DLL with its own version, which does not comply to
M$ MAPI interface. For example, Netscape Communicator and Eudora are notorious
to commit such "crime". There are two workarounds:
- Run fixmapi from command line. It should replace corrupted libary with the
original MAPI32 stub dll. It certainly works on Win2000.
- If a system does not have fixmapi utility, replace MAPI32.DLL explicitly.
DLL can be found in Office97, Office2000, Outlook2000, Explorer 4,5,6 installations.
Unpack it into Windows system directory (\system for Win95 clones, \system32
for WinNT clones)
Both workarounds should not affect functionality of MAPI applications.
- If nothing helps, unlink mapi speeder by invoking Winpulse like this:
wpulse32.exe -unlink=mapi
Q2. Winpulse crashes/hangs
?!
A2. Try to run Winpulse from command line with /unplug swtiches
to detect which Sentinel causes crash. The easiest way is to unplug all Sentinels
except one. When Winpulse runs successfully, plug another Sentinel. For instance:
wpulse32.exe -unplug=1 -unplug=2 -unplug=3 -unplug=4 -unplug=5 -unplug=6
This command will run Winpulse only with Drives Sentinel. Let's assume it works,
now enter:
wpulse32.exe -unplug=2 -unplug=3 -unplug=4 -unplug=5 -unplug=6
Let's assume that after running:
wpulse32.exe -unplug=6, Winpulse crashes. So now it's clear that System
Sentinel crashes. Let's dive deeper into investigation by unlinking Speeders
which belong to System Sentinel with the switch
/unlink.
wpulse32.exe -unlink=os -unlink=scr -unlink=host -unlink=user -unlink=live
-unlink=mapi -unlink=key
In this way we run Winpulse only with Clock Speeder in System Sentinel. Assume
it is ok. Now:
wpulse32.exe -unlink=scr -unlink=host -unlink=user -unlink=live -unlink=mapi
-unlink=key
Still fine, and after:
wpulse32.exe -unlink=key, Winpulse crashes or hangs
Now the perpetrator is detected - MAPI Speeder. Run Winpuse
as the last time but with additional switch:
wpulse32.exe -unlink=key -debug=100
And send me email with attached DEBUG.log file. I'll try to fix it.
Q3. Where are NT
counters, POP3 and Network speeders ?
A3. Being debugged.
Q4. Your program
is a total crap !
A4. Very likely.
Q5. Why does it
take so long to implement very easy feature I asked for ?
A5. I have very popular excuse - very limited free time :) Moreover, I'm not
very smart and pretty slow.
Q6. What does UA
stand for in domain name ?
A6. !AU
Q7. What a hell
is aka ?
A7. My directory in /home/users.
Contacts+Misc.
developers: dev@aka.com.ua
bugs and help: info@aka.com.ua
http://aka.com.ua
To do:
1. Rewrite CPU Sentinel for Win95 clones. Registry counters on Win95 for Kernel
suck.
2. DialUP network Speeders
3. Plugins support.
Credits:
During development I've used several free public components as a startup for
my own. Some have been changed so heavily that only author text credits remained.
Thank you guys for excellent work.
(c) 2001 aKa.com