Member 13863799 Ответов: 1

Я хочу получить информацию об аппаратном обеспечении компьютерной системы(о батарее, материнской плате, процессоре, клавиатуре), используя общий исходный код C/C++ в разных ОС, таких как linux и windows?


I want to get computer system hardware information(about battery,motherboard,cpu,keybooard) using a common c/c++ source code across different os like linux and windows? 


Что я уже пробовал:

я думал, что это связано с командами в windows и linux, такими как( команды ls и wmic), и выполнение этих команд через программу

экс-
плинтус wmic
процессор при работе
lscpu

есть ли другой способ

1 Ответов

Рейтинг:
12

Jochen Arndt

Не существует универсального независимого от ОС метода получения такой информации, поскольку информация, связанная с аппаратным обеспечением, предоставляется внутренне драйверами устройств (которые полностью отличаются в Windows и Linux) и становится доступной с помощью специфичных для ОС интерфейсов.

Однако существуют исключения для оборудования, подключенного к шине, доступ к которому можно получить с помощью общей библиотеки. Вот такой пример libusb (первоначально для Linux, но также доступен для Windows), который может быть использован для перечисления USB-устройств и поиска на них базовой информации, такой как VID, PID, производитель и строка названия продукта.


Member 13863799

Привет Йохен ,
Спасибо за ответ, так как же мы можем получить эту информацию для конкретного linux?

Jochen Arndt

В файловой системе virtual /proc можно найти много общей системной информации.
Видишь ли https://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html

Конкретную информацию об оборудовании можно найти в псевдофайловой системе /sys/class.
Видишь ли http://man7.org/linux/man-pages/man5/sysfs.5.html

Там вы можете получить, например, состояние батареи в /sys/class/power_supply/BAT<n>.

Также часто существуют инструменты командной строки для конкретного оборудования, такие как upower для состояния батареи.

Другой вариант-проанализировать загрузочные сообщения (используя dmesg или если они вошли в файл типа /var/log/boot с помощью этого). Он содержит информацию об обнаруженном оборудовании.