Initializing Static VxDs at Startup

Windows 95 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 95 loads it in addition to the combined VxDs in MRCI2.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 95 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.

Typical VxDs Combined to Create VMM32.VXD

*biosxlat
*configmg
*dynapage
*ebios
*ifsmgr
*int13

*ios
*parity
*reboot
*vcache
*vcomm
*vcond

*vdd
*vdef
*vfat
*vfbackup
*vkd
*vmcpd

*vmouse
*vmpoll
*vsd
*vtdapi
*vwin32
*vxdldr


VMM32 loads VxDs in three steps:

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 will occur.

Many Windows 95 driver models, such as 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 this 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 95 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.