Module Conflict Bias Version 1.0 Copyright (C) 1995 by Kerry B. Rogers All Rights Reserved What is Bias? The Module Conflict Bias engine was designed to act as a self- terminating babysitting-loader for the launch of Microsoft Windows® executables. NOTE: So that you may see the Bias engine at work, we have placed a non-existent file in the INI file that Bias creates. For Bias to work properly, you must delete this dummy file reference. To do this, edit the INI file created by Bias and remove or edit the line reflecting "File1=C:\WINDOWS\TESTFILE.VBX". The Versatility of Modules What is a module? A module is a dynamically loaded and shared resource that multiple Microsoft Windows programs can simultaneously share. Some examples are DLL's and VBX's like THREED.VBX, VBRUN300.DLL and MSGBLAST.DLL. These are DLL's or "dynamic link libraries" that will not be unloaded from Microsoft Windows memory until all programs that may have accessed their internal resources or functionality are unloaded from memory. The ability for several programs to share the same resources saves on space, load times and distribution costs. These and other advantages of DLL usage are considered more important than the drawbacks of their use. Solving Module Usage Drawbacks The Microsoft Windows operating system allows for imbedded version information within many Microsoft Windows file formats. Included in this list are dynamic link libraries (DLL's). This information assists programmers in identifying version collisions before they happen and allows for pre-planned compensation coding. Unfortunately, not all programmers follow the standard of using the readily available version control structures. Some simply do not understand it. Some think checking file dates, times and sizes clear the way for their code. This is not so. These parameters are easily changed for any file -- many times by accident. An example of this would be the extraction of DLL's from a compressed archive file and unknowingly having your system default set up to date and time-stamp the extracted file the same as the archive's date and time. This effectively rids any calling program from successfully using date and time information to determine if the DLL is compatible with their product. When DLL's are loaded with disregard to the imbedded version information, conflicts in available features can cause disastrous results ranging from the dreaded "General Protection Fault" to "Fatal System Error". In any case, the messages displayed may often erroneously point to "your application" as the culprit when, in fact, it wasn't. Module Conflict Bias assures that these situations are trapped before they happen and allow you to really find out which application or module is the culprit. Conflicts An example scenario depicting a common DLL loading conflict would be: - The first program loaded is a game program. It uses version 2.02.002 of the infamous THREED.VBX. - The second program loaded is a spreadsheet program. It uses the THREED.VBX as well (version 3.00.000) but requires no special functionality from 3.00.000 so allows itself to load using the 2.02.002 version that now exists in memory. - The first program (the game) is unloaded. Since Microsoft Windows realizes that THREED.VBX is still in use by the spreadsheet program that was loaded second, it allows the game to shutdown without releasing the THREED.VBX module from memory. - The third program loaded is a word processing program. It, too, uses THREED.VBX however, it requires version 3.00.000 as well and all of its functionality. - Since the word processor only checks for the existence of THREED.VBX in memory and not the version, the word processing program continues to load and tells Microsoft Windows to increment the usage count of THREED.VBX. - The word processing program needs advanced functionalities imbedded in version 3.00.000 and, unknowingly, only has version 2.02.002 available in memory. It has however, already cleared itself for loading and attempts to use functions that do not exist in the 2.02.002 version of THREED.VBX. - THREED.VBX cannot execute functions that do not exist and a General Protection Fault occurs within the word processing module. Unfortunately, sometimes the "GP" fault points to the spreadsheet program as the culprit. (This occurs even though the spreadsheet program was meticulously written to compensate for version differences!) - Who suffers? Hundreds of users call customer support for the spreadsheet program and demand to know why Microsoft Windows is reporting a "General Protection Fault in Module 'SpreadSheet' at address...". - The makers of the spreadsheet software suffer unfairly for a lack of foresight on the part of the word processing program's creators. Module Conflict Bias solves this and many other version collision problems by alerting the user before the incident takes place. This allows the shutdown of ill-behaved software. It helps network engineers, programmers and support personnel avoid unwarranted customer support costs. How It Works The Bias engine does this by reading a hand-edited .INI file with the same basename and residing in the same directory as the executable you desire to launch. If the INI file does not exist, BIAS creates a skeleton INI file for you. The syntax to launch BIAS is: BIAS where Filename.Ext reflects a fully qualified path (FQP) to the desired executable file. BIAS immediately reads the INI file, determines whether or not the required files exist, checks any version conflicts with modules currently loaded in memory and displays status information ONLY if a conflict exists. If no conflicts are present, BIAS launches the desired executable and gracefully shuts itself down, freeing the memory it used to the operating system. INI File Parameters The "AutoIgnore" feature listed in the INI file forces BIAS to execute the desired program without stopping to display the conflict dialog box. Use this feature only after it has been determined that choosing "Continue Load Sequence" has no adverse effect. This value must be hand edited right here in the INI file as there is no accomodation to do so from the BIAS program. The allowable values are numeric only with "-1" representing TRUE and "0" representing FALSE. Keep in mind that the INI file's "TotalFiles" parameter must reflect the total number of files itemized below under the "File?=" auspice where the "?" indicates user-defined sequence numbers (the first four are provided for you although, for instance, only the first three would be used if "TotalFiles=3" was used. Some example entries would be: [Required Files] TotalFiles=6 File1=C:\WINDOWS\SYSTEM\THREED.VBX File2=C:\WINDOWS\MSAPPS\TP95.MDB File3=C:\ONFOR\THE\GIPPER.DLL File4=C:\THE\JUICE\GOT\LOOSE.DEV File5=C:\RUSH\RULES.EIB File6=C:\SNIFF\WEGIVE\IRS\ALL.$$$ But then, these are just examples... ;) Note that the files do not have to be executable. Any file is eligible. This allows deployed applications with missing files to be aborted BEFORE damage is done. This does however, require knowledge of the internal workings of applications. Contact Information For registered support, custom modifications or suggestions please contact: Kerry B. Rogers 2612 Briana Ct. Orlando, FL. 32837 71514,735 CompuServe 71514.735@compuserve.com Internet KerryRogers@msn.com Internet Currently, Module Conflict Bias costs: $50 Single User $250 Unlimited Site License $500 Source Code Please note that delivery of this software can only take place via electronic transfer and after payment is received in-full. Acceptable payment methods are check, money order, or electronic means (CompuServe's SWREG forum). Please send no cash. Payment may be remitted to the above address or through the Software Registration Forum on CompuServe - Single User is Registration ID 8121. To locate other versions of this product search using the submitter ID 71514,735. Thanks, and enjoy!