Winpulse
v.0.5.3
v.0.4.5
Date: dec-2001
Contents.
1.
Introduction.
2. Starting Winpulse.
3. Main Window.
4. Sentinels & Speeders.
5. Designer.
6. Options.
7. FAQ.
8. Contacts+Misc.
Winpulse is a system
resources monitoring utility.
Primary platforms: Win2000, WinNT, WinXP
Secondary platforms: Win95,Win98, WinME (why?)
Unpack winpulse.zip
to some directory. Winpulse directory structure contains:
File or directory | Explanation | |
wpulse32.exe |
Winpulse launcher | |
engine32.dex |
Winpulse dynamic executable engine | |
awiz32.dll |
"About" window shared lib | |
cpuwiz32.dll |
"CPU" window shared lib | |
/help |
Help directory | |
/skins |
Skins directory (not real skins, see Skins section) | |
/data | Data directory |
To run Winpulse,
invoke wpulse32.exe. Winpulse starts as a stub which will launch main module.
The stub will be closed immediately after engine32 module was launched. Because
Winpulse uses various command line options, stub checks for input arguments
validity and dumps errors or messages to the terminal where it was invoked from.
GUI part has no ability to dump data to standard output without locking it.
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. |
WARNING: High level of debugging may significanlty decrease performance of the system because of high intensity of dumps to debugging console (e.g. level >80 - very very intensive debugging) |
/docking=<trigger> | On
WinXP platfrom when Winpulse works in docking mode, Desktop icons get shifted.
This behaviour was reported by Winpulse user and currently this option allows
to disable docking feature Docking mode <trigger> values: yes - docking mode enabled no - docking mode disabled |
valid
values: 1,true,yes 0,false,no |
/unplug=<sentinel> |
Unplugs Sentinel
from current session (Sentinel will not be created). Valid values for
<sentinel>: |
Can be used with /unlink simultaneously |
/unlink=<speeder> |
Unlinks Speeder
from current session (Speeder will not be created). Valid values for Speeders: Speeders'
names are case sensitive. |
Can be used with /unplug simultaneously |
/logfile=<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 |
Click on Winpulse image area to jump to explanation of specific Sentinel or Speeder.
![]() |
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 (which does not happen often because different Win32 platfroms behave differently). 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 at defined distance. Winpulse windows space is occupied by 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. Particular Sentinel and Speeder may have its own menu options. The Sentinels are visible as panels, delimited from each other by shaded frame. Hidden sentinel is not visible at all. Speeders
always contain: Speeder is
customizable via Designer. All visual features (icon,nick,gauge bar, free/total
indicators, text label) are adjustable: Speeder may
introduce additional visual elements. Both Sentinels and Speeders may share its menus to the main Winpulse menu for quick access. The Sentinels and Speeders options are accessed from Designer. |
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
|
|
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 FSR 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 In Designer in Speeder Area, Clock Speeder provides capability to change time representation mask. |
|
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) In Designer in Speeder Area, Live Speeder provides capability to change time representation mask. |
|
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] <lanuage
name> - Language name. The name may contain spaces, brackets, etc
and will be shown in The Speeder.
|
|
power |
The Speeder shows the Battry charge status on Laptops. On desktops the icon of the Speeder will be mains plug and the status in the Gauge Bar will be "plugged".
|
|
exe |
The Speeder contain small edit area where user can run application. PATH envi-variable is in effect. Started applicaitons are stored in a small stack. If nothing happened after pressing Enter, then probably executable was not found or another error occured. If meters are enabled, error will be displayed there, explaining why application could not be launched.
|
|
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 (disabled) | |
midi | MIDI volume (disabled) | |
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: |
|
Kernel Sentinel | Operating system kernel objects | |
thread | shows number of threads in the System | |
process | shows number of processes in the System | |
event | shows number of event queues in the System | |
mutex | shows number of mutex objects in the System | |
semaphore | shows number of semaphore objects in thr System | |
sections | shows number of critical section objects in the System | |
LAN Sentinel | Sentinel
detects all standard Network interfaces on the system and dynamicly creates
Incoming and Outgoing Speeders for every interface, except "Microsoft
Loopback" interface. Speeders names are assigned dynamicly by concatenating words "in" (incoming) and "out" (outgoing) and Network interface name. Some network adapters don't provide all perfomance information (e.g. no Bandwidth, or no outgoing traffic), as a result Speeders may show invalid information. In Designer in Speeder Area, LAN Speeders have additional properties: bandwidth - bandwidth limit for LAN Speeer. At first run LAN Sentinel will assign maximal bandwith of the Network interface. User can change this value. LAN generally is not exploited to its maximum bandwidth and as a result Gauge is usually at 1-10% load all the time. If users wants to restore maximum bandwidth assigned by system, 0 value should be typed in. bytes/sec - if checked, Speeder will show traffic meters in bytes/sec instead of traditional networkds bps. ATTENTION: Network interfaces are accessed through Performance counters and as a result this Sentinel is not available on Win95 clones. |
|
Mail Sentinel |
Sentinel
contains POP Speeders. POP Speeder is an interface to access POP3 mail
server to retrieve information about unread mails on the server and notify
user about this. ATTENTION: current Winpulse version does not encrypt password for storage. |
|
RAS Sentinel | Sentinel
monitors standard Modem interface. RAS Sentinel reuses LAN Sentinel for detecting WAN Network Interface and monitoring its traffic. All features and functionality are identical to LAN Sentinel. Not available on Win95 clones |
Designer.
Click on image area to jump to explanation.
Snap 1. | Snap 2. |
![]() |
|
Designer allows to configure Sentinels and Speeders. Designer window has several areas:
Area | Description |
menu | Designer
menu: Refresh - refreshes Tree of Sentinels and Speeder in Area 1. Hide - hides currenlty selected Sentinel or Speeder Show - shows currenlty selected Sentinel or Speeder Destroy - destroys currently selected Speeder. Only editable Speeders can be destroyed (e.g. Ping Speeder, Mail Speeder). If Speeder does not support destruction, this menu will be disabled Add - adds new Speeder to Sentinel. editable Speeders can be added (e.g. Ping Speeder, Mail Speeder). If Speeder does not support addition, this menu will be disabled Update - updates Speeder's properties from Area 4. Only this area requires special actions to take effect, because it's common for Sentinel and Speeder. I'm currently elaborating how to get rid of such behaviour and make it adjustable "on-fly". up - moves currenlty selected Speeder or Sentinel up in Winpulse window down - moves currently selected Speeder or Sentinel up in Winpulse window. |
1 | Hierarchical tree of Sentinels and Speeders. Speeders names are not the names you see in Winpulse main window. These are unique internal names. Multiple selection is not supported (thanks to Borland...) |
2 | Visual
properties of Speeders and Sentinels: Hidden - hides/shows currenlty selected Sentinel or Speeder from Winpulse window (but NOT unlinked or unplugged) Meters - hides/shows currenlty selected Speeder Free/Total labels. Can be disabled for Speeders which don't provide meters information Named - hides/shows Speeder Nick. Iconed - hides/shows Speeder Icon. Nick - allows to change Speeder Nick name. 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 Speeder, Mail Speeder, Clock Speeder). If Speeder does not support own Frequency update, the option will be disabled. The "frequency" is specified in milliseconds. Sentinels don't have Meters, Named, Iconed, Nick and Frequency properties. The effect of every setting in this area is visible immediately after changing. |
3 | Speeder
specific properties: All Speeders have following properties (Snap 2): width - adjusts width of gauged or text area. User can decrease/increase the size of a gauge bar or a text label. This could be helpful if the Nick is very big and is obstructed by gauge area. height - adjusts height of Speeders gauge area (gauge bar or text label). This could be useful if gauge bar is in Spectrum or Oscillo mode and too small to see anything. Speeder which have Gauge bar additionally have following properties (Snap 1) Tolerable- sets the color and percentage 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 percentage 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 percentage of alarm level. If Free value of a Speeder exceeds Low level, it's Gauge color will change to a chosen one. 100% is alarm level as well. This color is used for representing Error Information in Speeder Stasis level - sets the color of Speeders, which Free/Total values are not changed and updated and always remain static (DVD-ROM Speeders). This color is also used for representing Status Information in Speeder. Back color - sets backgroud color of Gauge Bar Font color - sets font color of text in Gauge Bar. Please mind, that in Bar style of Gauge, font color is ignored and color is automaticly calculated (xor) Style - sets a style of Gauge Bar: 1) Bar - Gauge bar shows instant value 2) Spectrum - Gauge bar shows history of values in Spectrum-like graph 3) Oscillograph - Gauge bar shows history of values in Oscillograph-like graph. Art - sets additional visual option of a Gauge bar: 1) shadow - Gauge bar will have shaded borders 2) BeOS - a-la BeOS style (single line borders, simple and nice) Tray - assigns selected Speeder to Tray icon. Tray gauge icon has two bars and Speeder can be assigned to either bars. If some Speeder is assigned to the bar being chosen, the old Speeder will be automaticly deassigned from TRay bar and new Speeder will take possession of the Tray bar. Tray icons are added/deleted in Options window. The effect of every setting is visible immediately after changing. |
4 |
Sentinel
Designer area. If Sentinel supports its own design features, this area
will show controls to edit selected Sentinel. |
5 | Speeder Designer area. Speeders may provide their own editing capabilities. In this case the area will show controls to edit selected Speeder. Refer to specific Speeder to see what properties can be changed. |
Options.
Click
on image area to jump to explanation.
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.
Options window has 2 main areas:
Area 1 - tree of Options Groups. Option Group can have its own subgroups
(e.g. tray)
Area 2 - page with currenly selected Options Group properties.
All options take effect immediately.
When Winpulse
starts it tries to read file "default.bmp" from /skins directory.
If the file is not found, internal icons will be used for Speeders. User can
use his own icons by copying default.bmp file into /skins directory and restarting
Winpulse.
Skins file is a usual Win32 bmp file where all icons follow each other without
gap horizontally. Transaprency color of every icon is the most left-bottom pixel
of the image. Here is an example of the default skin:
Icons indexes are used by Speeders to assign icon to itself:
Icon Index | Speeder | |
0 | CPU Speeder | |
1 | RAM and VM Speeders | |
2 | Swap Speeder | |
3 | GDI Resources Speeder | |
4 | USER Resources Speeder | |
5 | Clock Speeder | |
6 | Audio Speeder | |
7 | Live Speeder | |
8 | OS Speeder | |
9 | User Speeder | |
10 | Host Speeder | |
11 | Screen Speeder | |
12 | Ping Speeder | |
13 | RAS in and out Speeders | |
14 | MAPI "email recieved" Speeder | |
15 | MAPI and POP "empty" Speeder | |
16 | Key Speeder unknown language | |
17 | Exe Speeder | |
18 | POP "email received" Speeder | |
19 | Power Speeder AC | |
20 | Power Speeder DC | |
21 | LAN Speeder Incoming traffic | |
22 | LAN Speeder Outgoing traffic | |
23 | Kernel Speeders (all) |
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 ?
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. Ukraine
Q7. What a hell
is aka ?
A7. My directory in /home/users.
Q8. What language
is it written in ?
A8. delphi + some code in C.
Q8. Development
platform ?
A8. PIII-866, 128M, Win2000, 4M Intel82815 graph. card (total crap), 9.4G HDD
developers: dev@aka.com.ua
bugs and help: info@aka.com.ua
http://aka.com.ua
Winpulse primary
platform is WinNT (Win2000, WinXP). Win95 clones (Win95,Win98, WinME) are supported
but some functionality will not be available. Currently I perform very limited
testing on Win98 (checking that Winpulse at least does not crash :) In simple
words: Win95 clones must die...
Credits.
Special
thanks:
- LES TINAMOUS (a.k.a. Patrice and Maryvonne RONDARD) for french translation
of the help for Winpulse 0.4.5.
- Don Woodall for numerous mistakes corrections on /dev page.
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.