Programmatically determining PC MB and/or BIOS type

I work on a line of embedded test and measurement devices based on standard PC hardware.

At the moment, we are identifying the different types of motherboards that have been used in various generations of the product by walking the PCI tree and matching the vendor/device/bus/function of the on-board peripherals. This has always seemed to be somewhat of a hack, but so far we’ve been able to uniquely identify motherboard types with this type of probe.

However, I noticed the “Belarc Advisor” which Crucial used to provide to help folks determine what type of RAM to purchase is able to determine not only the motherboard type, but also the BIOS type and revision number. So it seems that this information is available through some mechanism. I’d like to be able to get at this information myself, but I have no clue about how to do it and have had no luck googling. I’m guessing it might be part of an BIOS call, PNP, ESCD, etc.; but my PC hardware documentation is woefully out of date.

I’d appreciate it if someone with more current knowledge can point me in the right direction.

Try asking your question in a dedicated forum. Another one is here. Good luck.