Im trying to understand which part of the windows operating system kernel is responsible for providing detailed hardware information. for example, utilities like device manager
, system information (msinfo32)
, or third party tools that display hardware details (like cpu, memory, storage, etc.) rely on some kernel component to retrieve this data.
i need to get cpu, memory, disk, gpu and network interface information. i couldnt find a clear explanation on the internet.
sorry for bad grammar btw.
Im trying to understand which part of the windows operating system kernel is responsible for providing detailed hardware information. for example, utilities like device manager
, system information (msinfo32)
, or third party tools that display hardware details (like cpu, memory, storage, etc.) rely on some kernel component to retrieve this data.
i need to get cpu, memory, disk, gpu and network interface information. i couldnt find a clear explanation on the internet.
sorry for bad grammar btw.
Share Improve this question asked Jan 20 at 9:55 baydırmanbaydırman 519 bronze badges1 Answer
Reset to default 3In general, it is the drivers that provide information about the hardware. At the base level, there is the bus driver (PCI/PCIe on a modern machine), which enumerates the components present on the bus. The VendorID/ProductID codes determine which specific driver should be installed, and that driver will know how to query the hardware in detail to obtain fine-grained information.
It should also be noted that there are "drivers" for the processor, RAM, and other components that (theoretically) do not need actual drivers to function. These pseudo-drivers integrate with the HAL (Hardware Abstraction Layer) to provide a standardized interface to the operating system. For example, they allow the system to access details such as:
- CPU: Number of physical/logical cores, frequency, coprocessors (SIMD, mathematical, etc.), and more.
- RAM: Total capacity, bus size, number of banks, and more.
- Other components, optional in a machine, are queried via their respective drivers.
At the operating system level, there is no single component responsible for relaying this hardware information. Instead, you will find:
- The HAL,
- The I/O manager (a part of Windows' kernel),
- The configuration manager,
- The Plug and Play manager,
- The WMI (Windows Management Instrumentation) API,
- The DirectX interface.
I should clarify that WMI is not a hardware analysis API in itself, but rather a component that centralizes and standardizes the use of APIs for hardware analysis and enumeration. It operates using the aforementioned elements, among others.
As for DirectX, it is not necessary to use it to identify the installed GPU; it is only required for obtaining advanced GPU functionalities.
Finally, when I refer to "pseudo-drivers" (in fact, they are "software abstract components") for the CPU and RAM, it should be understood in a very broad sense - practically speaking, this is handled within the HAL, and information is retrieved via BIOS, ACPI, or SMBIOS calls. This is encapsulated in a lightweight layer to avoid constantly querying the hardware or to enable obtaining negative responses without risking a timeout or a hardware error (such as a "bus error").
That said, if your goal is to obtain the APIs that can fetch this information in your program, you’ll need to specify the target language, the mode (user/kernel), and the desired level of integration. This can range from simple calls to the Win32 API to more complex scenarios involving the execution of external programs.