VxD and Drivers

Why do we need to know about VxD and drivers?

VxD drivers work as part of the operating system and they have absolute power.

A lot of serious problems may be resolved by managing these drivers.

RegRun gives you the unique possibility to get full control of your computer.

Note: If you are not a computer specialist, we recommend that you do not change anything.

We recommend that you make a copy of your registry, system files and disk information before making any changes!

    With Windows 9X/ME, RegRun shows currently loaded VxD modules.

    With Windows NT/2000 RegRun displays the list of currently loaded drivers.

RegRun allows you to monitor changes of this list and warns you.

 

You should set the Security Level (Configuration screen) to Ultra High Level to automatically turn on the monitoring of VxDs. When you use the High Level of Security, RegRun only displays the list. If you choose Low Level, you will see no VxD tab.

Note! Don't afraid if Watch Dog popups often. Windows loads a lot of VxDs dynamically.

Use WatchDog Exclusions to skip unwanted popups. Click on the "Scissors" icon.

images\changes.gif

 

Look at the example of VxD list:

 

Name Type Source Version VxD ID In

ACPI Static UNKNOWN 040A 0000

AFVXD Dynamic AFVXD 0000 0001 REG

AGENTCD Static agentcd.vxd 0100 0000 REG

AMDIDEPM Dynamic Amdeidepm.vxd 0100 0001 IOSUBSYS

...

 

The Source column displays the file name that contains the VxD.

It may be a standalone file or VMM32. Unfortunately, sometimes RegRun can't find the location of a dynamic VxD. This is a problem, but Windows doesn't give us this information.

The In column informs you about the place where the VxD is registered. It may be the Registry (system.ini and registry) or IOSUBSYS folder(C:\WINDOWS\SYSTEM\IOSUBSYS\).

You can edit the registration by double clicking on a selected item or via the context popup menu or by the toolbar button.

Click the "Diskette" button to export the list into the text file with comma delimiters. You may use Microsoft Excel or Notepad to view it.

Click the "Printer" button to print the list.

The "Question": button is used to show you more information about a VxD.

The "Event log" button shows the Bootlog.txt (Windows 9X/Me) or Event Viewer (Windows NT/2000/XP/Vista).

Note:

You may easily sort the table by clicking the header of a column. Use the first letter to quickly find items.

 

What is a VxD?

Microsoft tells:

"A virtual device is a program that manages a system resource (such as a hardware device or installed software) so that more than one application can use the resource at the same time. Windows uses virtual devices to allow multitasking for Windows-based applications. The virtual devices work in conjunction with Windows to process interrupts, and carry out I/O operations for a given application without disrupting the execution of other applications."

VxD modules are very important for the normal operation of Windows.

 

Brief issue about VxD to help you understand the VxD list.

Windows 9X/ME supports static VxDs that load during system startup 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.

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 always checks that directory and uses any individual VxDs it finds instead of loading those bound in VMM32.VXD.

The following list contains 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:

VMM32 loads base drivers specified in the Registry, which contains entries for every VxD not directly associated with any hardware. VxDs are located in this branch of the Registry:

Hkey_Local_Machine\System\CurrentControlSet\Services\VxD

If VMM32 finds a value StaticVxD= in any Registry key, it loads that VxD and runs its real-mode initialization. For example, the following entry loads *V86MMGR:

SYSTEM\CurrentControlSet\Services\VxD\V86MemoryManger

Description=MS-DOS Virtual 8086 Memory Manager

Manufacturer=Microsoft

StaticVxD=*V86MMGR

EMMEXCLUDE=E000-EFFF

VMM32 loads the static VxDs specified in the device=*VxD lines in the [386enh] section of SYSTEM.INI. These VxDs are actually loaded from VMM32, and appear in SYSTEM.INI only for backward compatibility.

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