我试图了解 Windows 操作系统内核的哪一部分负责提供详细的硬件信息。例如,诸如
device manager
、system information (msinfo32)
之类的实用程序或显示硬件详细信息(如 CPU、内存、存储等)的第三方工具依赖于某些内核组件来检索此数据。
我需要获取CPU、内存、磁盘、GPU 和网络接口信息。我在互联网上找不到明确的解释。
抱歉语法不好。
一般来说,驱动程序提供有关硬件的信息。在底层,有总线驱动程序(现代机器上的 PCI/PCIe),它枚举总线上存在的组件。 VendorID/ProductID 代码确定应安装哪个特定驱动程序,并且该驱动程序将知道如何详细查询硬件以获取细粒度信息。
还应该注意的是,处理器、RAM 和其他组件有“驱动程序”(理论上)不需要实际驱动程序即可运行。这些伪驱动程序与 HAL(硬件抽象层)集成,为操作系统提供标准化接口。例如,它们允许系统访问以下详细信息:
在操作系统级别,没有单个组件负责中继此硬件信息。相反,你会发现:
我需要澄清的是,WMI 本身并不是一个硬件分析 API,而是一个集中和标准化硬件分析和枚举 API 使用的组件。它使用上述元素等进行操作。
对于DirectX,不需要用它来识别安装的GPU;仅需要获得高级 GPU 功能。
最后,当我提到CPU和RAM的“伪驱动程序”(实际上,它们是“软件抽象组件”)时,应该从非常广泛的意义上理解它 - 实际上,这是在HAL内处理的,信息通过 BIOS、ACPI 或 SMBIOS 调用检索。这被封装在一个轻量级层中,以避免不断查询硬件或能够获得否定响应,而不会冒超时或硬件错误(例如“总线错误”)的风险。
也就是说,如果您的目标是获取可以在程序中获取此信息的 API,则需要指定目标语言、模式(用户/内核)以及所需的集成级别。其范围可以从对 Win32 API 的简单调用到涉及外部程序执行的更复杂的场景。