Principles of Operation

Previous  Top  Next

General Initialization Phase:
·Scan for IDE controllers and peripherals  
·Scan for SCSI controllers and peripherals  
·Check existence of all database files. If a new version of the program is detected which requires an update database format, the program automatically converts the database to the new structure and sets reasonable default values for new fields.  
·Load alert rule sets into RAM  
·Initialize SCSI device structures  

Device Initialization Phase:

·Detect IDE devices by querying either pass-through IDE controller (NT/2000/XP/2003) or SMARTVSD.VXD driver (Windows '95/'98/ME)  
·Read all IDE disk parameters into RAM, and enable S.M.A.R.T. on all S.M.A.R.T. compliant disks.  
·Detect ATAPI/SCSI/Fibre Channel device(s) by querying ASPI module  
·Read desired operating characteristics from S.M.A.R.T. Disk Monitor's registry entries (disks only). The entries are stored at HKEY_LOCAL_MACHINE\SOFTWARE\SANtools, Inc.\S.M.A.R.T. Disk Monitor  
·If no registry entries for (non-IDE) drive, create registry entries as suggested by SMART specifications to:  
·S.M.A.R.T. Enabled (DExcpt bit)  
·Performance disabled (slight delays acceptable (PERF bit)  
·Error logging enabled (LogErr bit)  
·Test bit disabled  
·Unconditionally generate recovered errors (MRIE=4)  
·Set drive's internal interval timer for running SMART tests at 10 minutes (Interval Timer).  
·Set no limit to number of times to report exception condition.  
·Read registry entries, and program characteristics into disk's volatile storage area. (All changes can therefore be disabled by recycling power on disk drives).  

Main Window Initialization Phase:

·Display main window, unless program feature to start minimized is checked  
·Initialize polling timer to value stored in registry (or disable if = 0)  
·Create initialization entry into history file (HISTORY.TXT)  

Normal Execution
Wait for keyboard, mouse, or timer input without chewing up CPU time. If an event occurs, determine if the Alert timer caused the event. If so, proceed to Poll Disk Drives section. Otherwise just process the command.

Poll Disk Drives:
·Query IDE disk devices for S.M.A.R.T status.  
·Query disk for deferred errors that might have been caused by previous SCSI commands not generated by S.M.A.R.T. Disk Monitor. (Not possible with IDE devices, which have no such feature).  
·Test if disk still on-line before issuing further commands.  
·Read from block #0 to allow for detection of SMART error  
·If Error found:  
·Decipher error text from database, and display it.  
·Check to see if error warrants sending EMAIL to operator by comparing values against Alert Rule set database. Sends EMAIL if match and EMAIL enabled.  
·Log message in HISTORY.TXT file.  
·If error was SMART error (Sense Key=1, Code=0x5d), then launch SMARTAlert.EXE which displays message in another window. If this program already running, because a previous error launched it, then it just maximize the window and bring it into the foreground.  
·Repaint the upper window that shows SCSI devices and status information.  
·Update device and status windows on screen.  
·Test if disk still on-line before issuing further commands.  
·Read from block #0 to allow for detection of SMART error  
·If SES Polling is enabled, and the device is capable of communicating with the enclosure:  
·Read SES Page #2 for status.  
·Check to see if status warrants sending EMAIL to operator by comparing values against Alert Rule set database. Sends EMAIL if match and EMAIL enabled.  
·Log message in HISTORY.TXT file.  
·If Statistical Data polling (log page polling) is enabled, then appropriate values and thresholds for the selected disk drive are assessed by querying the appropriate log pages. Alerts, EMAILs, and log entries are made if appropriate.  
·Repaint the upper window that shows SCSI devices and status information.  
·Update device and status windows on screen.  
·Return to Normal Execution Mode.  

Poll SAF-TE Processors:
·If SES/SAF-TE polling is enabled, then the necessary commands are sent to the SAF-TE processor pointed to by the appropriate SCSI ID/LUN.