哪个内核组件提供了详细的硬件信息

问题描述 投票:0回答:1

我试图了解 Windows 操作系统内核的哪一部分负责提供详细的硬件信息。例如,诸如

device manager
system information (msinfo32)
之类的实用程序或显示硬件详细信息(如 CPU、内存、存储等)的第三方工具依赖于某些内核组件来检索此数据。

我需要获取CPU、内存、磁盘、GPU 和网络接口信息。我在互联网上找不到明确的解释。

抱歉语法不好。

windows kernel windows-kernel
1个回答
0
投票

一般来说,驱动程序提供有关硬件的信息。在底层,有总线驱动程序(现代机器上的 PCI/PCIe),它枚举总线上存在的组件。 VendorID/ProductID 代码确定应安装哪个特定驱动程序,并且该驱动程序将知道如何详细查询硬件以获取细粒度信息。

还应该注意的是,处理器、RAM 和其他组件有“驱动程序”(理论上)不需要实际驱动程序即可运行。这些伪驱动程序与 HAL(硬件抽象层)集成,为操作系统提供标准化接口。例如,它们允许系统访问以下详细信息:

  • CPU:物理/逻辑核心数量、频率、协处理器(SIMD、数学等)等。
  • RAM:总容量、总线大小、存储体数量等。
  • 机器中可选的其他组件可通过各自的驱动程序进行查询。

在操作系统级别,没有单个组件负责中继此硬件信息。相反,你会发现:

  • 哈尔,
  • I/O 管理器(Windows 内核的一部分),
  • 配置管理器,
  • 即插即用管理器,
  • WMI(Windows 管理规范)API,
  • DirectX 接口。

我需要澄清的是,WMI 本身并不是一个硬件分析 API,而是一个集中和标准化硬件分析和枚举 API 使用的组件。它使用上述元素等进行操作。

对于DirectX,不需要用它来识别安装的GPU;仅需要获得高级 GPU 功能。

最后,当我提到CPU和RAM的“伪驱动程序”(实际上,它们是“软件抽象组件”)时,应该从非常广泛的意义上理解它 - 实际上,这是在HAL内处理的,信息通过 BIOS、ACPI 或 SMBIOS 调用检索。这被封装在一个轻量级层中,以避免不断查询硬件或能够获得否定响应,而不会冒超时或硬件错误(例如“总线错误”)的风险。

也就是说,如果您的目标是获取可以在程序中获取此信息的 API,则需要指定目标语言、模式(用户/内核)以及所需的集成级别。其范围可以从对 Win32 API 的简单调用到涉及外部程序执行的更复杂的场景。

© www.soinside.com 2019 - 2024. All rights reserved.