VMM32 examines the registry branch SYSTEM\CurrentControlSet\Services\VxD and enumerates all keys under this branch. ("Enumerate" here refers to the enumeration of registry keys, not to Plug and Play enumeration.) If it finds a value "StaticVxD=", it will load that static VxD and execute its real mode initialization portion. For example:
SYSTEM\CurrentControlSet\Services\VxD\V86MemoryManger
Description=MS-DOS Virtual 8086 Memory Manager
Manufacturer=Microsoft
StaticVxD=*V86MMGR
Start=0
EMMEXCLUDE=E000-EFFF
SYSTEM\CurrentControlSet\Services\VxD\ConfigMG
Description=Plug and Play Configuration Manager
Manufacturer=Microsoft
StaticVxD=*CONFIGMG
Start=0
SYSTEM\CurrentControlSet\Services\VxD\IOServices
Description=IO Services Driver Version 4.0
Manufacturer=Microsoft
StaticVxD=*IOS
Start=0
Entries exist in this section of the registry for every VxD that is not directly associated with any hardware. These drivers used to be specified under [386ENH] in SYSTEM.INI. Examples of these devices are DOSMGR, V86MMGR, Reboot, VMPoll, and BiosXlat.
Device specific information can be stored in the registry under the same key as the driver. In the preceding example, the V86MemoryManager key contains the value EMMEXCLUDE=E000-EFFF, which is a setting specific to the V86MMGR VxD. Any other VxD-specific information can be grouped with the driver it is associated with in the same way. VxDs can use the VMM services _GetRegistryKey or _GetRegistryPath to discern the location from which they were loaded, and then use this information to read any associated values. Although loading VxDs from SYSTEM.INI (and the associated ReadProfileString and WriteProfileString functions) will still be supported for compatibility with older drivers and setup programs, driver writers are encouraged to use this location and load method for new VxDs and associated switch settings.