Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to programmatically find chipset's north bridge, south bridge names and other hardware info on windows?

Is there a way to programmatically find system chipset's north bridge, south bridge names and other hardware info on windows ? I don't think WMI provides this information. I'm trying to find out how tools like hwinfo and cpuinfo find this information.

like image 836
ivymike Avatar asked Jul 16 '12 17:07

ivymike


1 Answers

People normally do this kind of stuff through WMI, but it fails to provide useful information a lot of times, even providing "wrong" info because sometimes it relies on vendor filled info from the BIOS (via SMBIOS), which frequently comes empty or wrong, instead of going to communicate with the specific hardware part.

I've gone through this experience before to get RAM info. WMI provided wrong BIOS info and I've found that RAM chips comes with a special SPD (Serial Presence Detect) chip that I needed to communicate with. In the end my employer opted for the CPUID API.

Here the CPU-Z author talks a little about this subject in an interview:

http://www.techpowerup.com/mobile/reviews/Interviews/Franck_Delattre/1.html.

To get info like this you need to search on how communicate with the PCI Configuration Space in kernel mode through a driver or go for some alternative API which would do this for you.

Here are some links I've gone through at that time:

http://www.codeproject.com/Articles/35378/Access-Physical-Memory-Port-and-PCI-Configuration

http://support.microsoft.com/?scid=kb;en-us;253232&x=3&y=13

http://www.hollistech.com/Resources/Misc%20articles/getbusdata.htm

http://www.osronline.com/showThread.CFM?link=176210#T4

Also, I think is worth to mention about the SetupDi functions in Windows which sometimes are able to provide info that WMI can't.

like image 189
pepper_chico Avatar answered Oct 19 '22 07:10

pepper_chico