GVG Posted March 7, 2007 Posted March 7, 2007 Hi All,I would like to ask you, how can I detect chipset type of motherboard. I haven`t found this info in WMI. Resp. I found some in Win32_PNPEntity, but on every PC I have different models, so I cannot grab name from exact position. Can somebody help me, how or where discover, what kind of chipset is used (Intel 945 or VIA....). Thanks a lot.
cluberti Posted March 11, 2007 Posted March 11, 2007 The Win32_BaseBoard class has some good info (if the vendor actually provides the data to the OS, and I know at least most Intel boards respond very well to this), as well as the Win32_MotherboardDevice class.Win32_BaseBoard:strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_BaseBoard",,48) For Each objItem in colItems Wscript.Echo "-----------------------------------" Wscript.Echo "Win32_BaseBoard instance" Wscript.Echo "-----------------------------------" Wscript.Echo "Caption: " & objItem.Caption If isNull(objItem.ConfigOptions) Then Wscript.Echo "ConfigOptions: " Else Wscript.Echo "ConfigOptions: " & Join(objItem.ConfigOptions, ",") End If Wscript.Echo "CreationClassName: " & objItem.CreationClassName Wscript.Echo "Depth: " & objItem.Depth Wscript.Echo "Description: " & objItem.Description Wscript.Echo "Height: " & objItem.Height Wscript.Echo "HostingBoard: " & objItem.HostingBoard Wscript.Echo "HotSwappable: " & objItem.HotSwappable Wscript.Echo "InstallDate: " & objItem.InstallDate Wscript.Echo "Manufacturer: " & objItem.Manufacturer Wscript.Echo "Model: " & objItem.Model Wscript.Echo "Name: " & objItem.Name Wscript.Echo "OtherIdentifyingInfo: " & objItem.OtherIdentifyingInfo Wscript.Echo "PartNumber: " & objItem.PartNumber Wscript.Echo "PoweredOn: " & objItem.PoweredOn Wscript.Echo "Product: " & objItem.Product Wscript.Echo "Removable: " & objItem.Removable Wscript.Echo "Replaceable: " & objItem.Replaceable Wscript.Echo "RequirementsDescription: " & objItem.RequirementsDescription Wscript.Echo "RequiresDaughterBoard: " & objItem.RequiresDaughterBoard Wscript.Echo "SerialNumber: " & objItem.SerialNumber Wscript.Echo "SKU: " & objItem.SKU Wscript.Echo "SlotLayout: " & objItem.SlotLayout Wscript.Echo "SpecialRequirements: " & objItem.SpecialRequirements Wscript.Echo "Status: " & objItem.Status Wscript.Echo "Tag: " & objItem.Tag Wscript.Echo "Version: " & objItem.Version Wscript.Echo "Weight: " & objItem.Weight Wscript.Echo "Width: " & objItem.WidthNextWin32_MotherboardDevice:strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_MotherboardDevice",,48) For Each objItem in colItems Wscript.Echo "-----------------------------------" Wscript.Echo "Win32_MotherboardDevice instance" Wscript.Echo "-----------------------------------" Wscript.Echo "Availability: " & objItem.Availability Wscript.Echo "Caption: " & objItem.Caption Wscript.Echo "ConfigManagerErrorCode: " & objItem.ConfigManagerErrorCode Wscript.Echo "ConfigManagerUserConfig: " & objItem.ConfigManagerUserConfig Wscript.Echo "CreationClassName: " & objItem.CreationClassName Wscript.Echo "Description: " & objItem.Description Wscript.Echo "DeviceID: " & objItem.DeviceID Wscript.Echo "ErrorCleared: " & objItem.ErrorCleared Wscript.Echo "ErrorDescription: " & objItem.ErrorDescription Wscript.Echo "InstallDate: " & objItem.InstallDate Wscript.Echo "LastErrorCode: " & objItem.LastErrorCode Wscript.Echo "Name: " & objItem.Name Wscript.Echo "PNPDeviceID: " & objItem.PNPDeviceID If isNull(objItem.PowerManagementCapabilities) Then Wscript.Echo "PowerManagementCapabilities: " Else Wscript.Echo "PowerManagementCapabilities: " & Join(objItem.PowerManagementCapabilities, ",") End If Wscript.Echo "PowerManagementSupported: " & objItem.PowerManagementSupported Wscript.Echo "PrimaryBusType: " & objItem.PrimaryBusType Wscript.Echo "RevisionNumber: " & objItem.RevisionNumber Wscript.Echo "SecondaryBusType: " & objItem.SecondaryBusType Wscript.Echo "Status: " & objItem.Status Wscript.Echo "StatusInfo: " & objItem.StatusInfo Wscript.Echo "SystemCreationClassName: " & objItem.SystemCreationClassName Wscript.Echo "SystemName: " & objItem.SystemNameNext
GVG Posted March 29, 2007 Author Posted March 29, 2007 Thanks cluberti, I already tried these two things. But nowhere is Chipset name. This is, what I need to determine. Maybe with help of other component/code. But I seek entire WMI and not found exact way, how to determine it
CoffeeFiend Posted March 29, 2007 Posted March 29, 2007 Thanks cluberti, I already tried these two things. But nowhere is Chipset name. This is, what I need to determine. Maybe with help of other component/code. But I seek entire WMI and not found exact way, how to determine it There is no WMI class that will help you detect the chipset. Nor any native API of any kind. WMI is somewhat limited (not just for tasks like chipset detection, also like how to detect CPU types properly: 64bit or not, Dual Core or not, HyperThreading or not... Some classes are there but never return anything -- like some probes). But it all comes down to this: there's no chipset information in the SMBIOS tables and such. There's no real place to get the information from.There's only one easy way. And yes you'd be using WMI (and yes, specifically the Win32_PnPEntity class you were already using). You enumerate them, and try to match with the right vendor/device IDs of the chipsets. Yes, it is a real PITA.E.g. you want to detect an Intel chipset, like say, the 915G. Their VendorID is 8086, and you use a device like the one with the DeviceID 2580 ("Host Bridge / DRAM Controller" or "Intel® 915G/P/GV Processor to I/O Controller - 2580"). Pick something specific to the chipset you want to detect (i.e. not USB ports or a IDE controller, more like a bridge or such) So here you'd be looking for a DeviceID of PCI\VEN_8086&DEV_2580&... (match the left portion). Via would be VendorID 1106, SiS would be 1039, etc. You'll have to create a database of sorts for the chipsets you want to detect.Yes. It sucks, but there really aren't any other easy ways (reading the ACPI tables directly is not easy). No idea how you'd do this in Delphi (last time I've used Borland's stuff was in the Windows 95 days, and I really don't miss it).
GVG Posted March 30, 2007 Author Posted March 30, 2007 Thanks for your message!I know, that there is lot of unfilled entries (e.g. RevisionLevel in CDROMDRIVE - I want to detect FW of drive and here shoul be - I must to extract it from DeviceID).I will try to do with chipset some things you describe. It is strange - everything is in operating system, OS is detecting it succesfully, but not provide..
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now