VMware Communities
behealed
Enthusiast
Enthusiast

How does windows know the VM display adapters hardware ID before VM Tools is even installed?

If I delete the VGA.ROM file from the vmware-vmx.exe's folder from my host's hard drive, and try to boot up a windows VM, it displys an error message saying that it couldn't find the VGA.ROM file as soon as I start the VM,however, it gets past the error message with seemingly no further problems and loads into windows, but everyting is in black and white and set to 640x480 resolution. If I install VM Tools, the display problems seem to entirely dissappear and it seems to have all the features of a full 1080p, with I assume 3d acceleration as well, even though the VGA.ROM file was deleted. I thought that was kind of interesting, but, that's not even my question...

So here's my question... If I DO NOT install VM Tools, and I'm in windows with no VGA.ROM, with black and white only, 640x480 resolution, and nothing but the microsoft basic display adapter... if I go to device manager and look at details on the display adapter, under hardware id, it gives me this: PCI\VEN_15AD&DEV_0405&SUBSYS_040515AD&REV_00

That VEN_15AD is the vendor ID number for VMWare, which means that windows is seeing the virtual device's hardware id number. That hardware ID is always the same. It's the same if I install or don't install VM Tools, and it's the same if I delete or don't delete the VGA.ROM file. It seems like no matter what, windows always knows and see's that same hardware ID string for the display adapter: PCI\VEN_15AD&DEV_0405&SUBSYS_040515AD&REV_00.

My question is, where is windows getting this information? I've deleted the VGA.ROM file, and it still somehow knows and sees this hardware id number.

In a physical machine, I would conclude that windows is directly accessing the physical device through the PCI port, and that the device is telling windows what it is. However, in this case, I've deleted the VGA.ROM file, which i assume is supposed to be the device's bios file. Without that, I can't see how the virtual adapter is telling windows anything AT ALL (I'm surprised it even boots, but admittingly I don't really know how rom files work to be honest). But since this is a virtual device, I know windows is not talking to a physical device. Windows must be talking to a piece of software, and that software must be giving windows that hardware ID string. i checked the windows reigstry, and it's not there either. So my question is... if it's not in the registry, and not VGA.ROM or VM Tools or any driver (no drivers are installed), then what path is windows taking to get this information, and what peice of software is sitting at the end of that path, communicating this hardware ID information back to the VM?

3 Replies
wila
Immortal
Immortal

Hi,

If you have assigned a video adapter to your VM (which is a default) then you have basically inserted a video adapter onto your (virtual) PCI bus.

As such that (virtual) video adapter registers itself with a PCI Vendor ID.

Which is what you are seeing.

The VGA ROM is not the magic you are seeing for features such as 3D.

Those are all handled by the virtual hardware of the VGA adapter, not by the rom.

--

Wil

| Author of Vimalin. The virtual machine Backup app for VMware Fusion, VMware Workstation and Player |
| More info at vimalin.com | Twitter @wilva
behealed
Enthusiast
Enthusiast

Thanks for the reply. I guess what I'm trying to do is dig a little deeper into the whereabouts of exactly where this virtual PCI device is located. Obviously it's not physically something I can grab with my hand since there is no pysical device in this case. So, it's software, but where exactly is that software? I've been doing searches for about 4 days (no joke) trying to find the exact spot in all the software on my host, and even checking the VM's software (checking all partitions), trying to find exactly where this virtual PCI device is. And I'm not finding it. It seems to simply exist, and I can't explain where or how. The virtual machine seems to be aware of these PCI devices, but, where are they? I assume they exist on the host side. But I can't find them on the host either. I got excited today because I found a folder at Workstation/env which contained xml files for multiple "hardware versions", that seemed to have a list of PCI devices and lots of information about them. I thought I had hit the superuser jackpot. But then, I renamed that entire folder (which is basically the same as deleting it), and the virtual machiens still see the exact same PCI devices. That whole folder of xml files seems to not even be used, and deleting it changes nothing. So I am back to square one, still can't find where the information about those PCI devices is being loaded from or saved to or stored at on the host. All I know is that the virtual devices must exist somewhere, and I guess all I can do is keep searching till I find where they are coming from.

0 Kudos
wila
Immortal
Immortal

Hi,

Don't want to discourage your enthousiasm, but what you are trying to do is not likely to be possible.

The functionality to set the refresh rate is going to be buried deep into the binaries of the hypervisor and dependent on both the display adapter as well as the virtual display that is being emulated.

If it is configurable then it would most likely be via the .vmx file.

See the sanbarrow site for undocumented features on that.

--

Wil

| Author of Vimalin. The virtual machine Backup app for VMware Fusion, VMware Workstation and Player |
| More info at vimalin.com | Twitter @wilva
0 Kudos