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

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!
