Windows 98 includes system files, Plug and Play mechanisms, and various options for starting the operating system. This section describes the Windows 98 system startup sequence.
During the real-mode startup process, devices use only static configurations; that is, no dynamic resource allocation or arbitration is provided. When the system startup process switches to protected mode, Configuration Manager ensures all devices are configured properly, as described in Chapter 28, "Windows 98 Architecture."
The system startup includes four phases:
Microsoft worked with several hardware manufacturers to define a new Plug and Play BIOS specification, which defines the interactions among a Plug and Play BIOS, Plug and Play devices, and option ROMs (sometimes called adapter ROMs). The Plug and Play BIOS enables and configures Plug and Play boot devices. The Plug and Play BIOS also passes configuration information to Configuration Manager in Windows 98 for configuring the remaining adapters and devices.
For legacy computers that do not have Plug and Play BIOS, the BIOS enables all devices on the ISA bus. A Plug and Play ISA card that has an option ROM must start up when the computer is turned on with the option ROM enabled.
A Plug and Play BIOS accesses nonvolatile random access memory (RAM) to determine which Plug and Play ISA cards should be enabled, where their option ROMs should be mapped, and what I/O, DMA, and other assignments are to be given to the cards.
The BIOS then programs the Plug and Play cards before the power-on self-test (POST). All cards that do not have configurations stored in the BIOS are disabled completely, reducing the chance of a conflict.
The Plug and Play BIOS also configures all devices on the motherboard. Some devices might have been disabled or assigned to different I/O addresses, IRQ settings, and so on, by Configuration Manager.
After BIOS initialization, the operating system attempts to determine the current configuration, including whether the computer is a docking station. This is done by using a hardware profile that Windows 98 selects before Config.sys is processed. The hardware profile is built by a detection process that collects information about interrupt usage, BIOS serial and parallel ports, BIOS computer identification, Plug and Play BIOS docking station data, and, if possible, docking station data that is unique to each original equipment manufacturer (OEM). Then the detection process builds a 2-byte value known as the current hardware profile (or the current configuration).
Each hardware profile has a name that matches a top-level menu item in a multiconfigured Config.sys file (that is, the long text in the menu, not the section name enclosed in square brackets). Windows 98 automatically selects that multiconfiguration menu item and processes the corresponding section of Config.sys.
Config.sys and Autoexec.bat are processed at this point. Although these files are not required for Windows 98, they are used for backward compatibility with applications created for MS-DOS or Windows 3.1x. In Windows 98, Config.sys and Autoexec.bat are processed much as they are processed under MS-DOS 6.x. Drivers and TSRs specified in these files are loaded in real mode.
For more information, see "System Startup Files" later in this chapter.
Note
The real-mode MS-DOS errors are standard, as documented in the MS-DOS 6.0 Programmer’s Reference.
Windows 98 supports static VxDs that load during system startup in the same way as Windows 3.x VxDs, and it also supports dynamically loaded VxDs. Vmm32.vxd includes the real-mode loader, the executable Virtual Machine Manager, and common static VxDs. Notice, however, that if a VxD file is in the \Windows\System\Vmm32 directory, Windows 98 loads it in addition to the combined VxDs in Vmm32.vxd.
Note
If you want to update a VxD that has been bound into the monolithic Vmm32.vxd, place the VxD file in the System\Vmm32 directory. Windows 98 always checks that directory and uses any individual VxDs it finds instead of loading those bound in Vmm32.vxd.
The following list shows the VxDs typically combined to create Vmm32.vxd. (A custom list is built for each computer.) These drivers used to be specified in the [386enh] section of System.ini.
*biosxlat *configmg *dynapage *ebios *enable *ifsmgr *int13 |
*ios *parity *reboot *vcache *vcd *vcomm *vcond |
*vdd *vdef *vfat *vfbackup *vflatd *vkd *vmcpd |
*vmouse *vmpoll *vpd *vsd *vtdapi *vwin32 *vxdldr |
VMM32 loads VxDs in three steps:
HKEY_LOCAL_Machine\System\CurrentControlSet\Services\VxD
SYSTEM\CurrentControlSet\Services\VxD\V86MemoryManger
Description=MS-DOS Virtual 8086 Memory Manager
Manufacturer=Microsoft
StaticVxD=*V86MMGR
EMMEXCLUDE=E000-EFFF
If a specific device conflicts with a device loaded from the registry, the device specified in System.ini takes precedence. However, if the device specified in System.ini cannot be found, an error occurs.
Many Windows 98 driver models, such as integrated office system (IOS) (for disk drivers) and the network, support dynamically loaded device drivers. These VxDs are not loaded by the VMM32 real-mode loader, but are loaded by a device loader that is responsible for loading and initializing the drivers at the correct time and in the correct order.
For example, for SCSI adapter miniport drivers, the device loader is *Ios. The entries for a SCSI adapter are found in the following registry key:
HKEY_LOCAL_Machine\System\CurrentControlSet\Services\Class
Because there is no StaticVxD=xxx line in this registry entry, the VMM32 real-mode loader does nothing when Windows 98 identifies this device.
Configuration Manager attempts to find any device node that has a DevLoader= entry in the registry. The device loader (in the previous example, *Ios) examines the registry, finds the PortDriver= entry, loads the driver and any associated support drivers, and initializes the adapter.
In the previous phase, the following elements of the operating system were loaded:
After all static VxDs have been loaded, Vmm32.vxd switches the processor to operate in protected mode, and the last phase of the boot process begins. This phase involves loading the protected-mode components of the operating system.
The protected-mode Configuration Manager is initialized for importing configuration information from a Plug and Play BIOS (if available); otherwise, it develops the Plug and Play hardware tree by enumerating devices and loading dynamically loadable device drivers. These device drivers are identified by loading drivers from a specific directory.
The next phase resolves device resource conflicts for every device in the tree and then informs the devices of their configuration. When all devices have been enumerated, all conflicts have been resolved, and all devices have been initialized, Windows 98 is ready to be used.
The remaining Windows 98 system components are loaded in the following sequence:
At this point, a prompt appears so that you can log on by typing a user name and a password. After you log on, Windows 98 can process user-specific configuration information. If you do not log on, default settings are used. If Windows 98 is configured for network logon, the unified Windows 98 logon can be used to log on to the network during this process.
After Windows 98 is loaded and you log on, the Startup directory is processed.