В Windows, как я могу увидеть емкость чипа ПЗУ, установленного на моем компьютере, для хранения UEFI/BIOS? Я бы предпочел способ использования инструмента или команды Windows без установки какого-либо другого приложения.

3 ответа3

2

Чтение информации SMBIOS

Из Википедии:

В вычислительной технике спецификация BIOS для управления системой (SMBIOS) определяет структуры данных (и методы доступа), которые можно использовать для считывания информации, хранящейся в BIOS компьютера. Приблизительно в 1999 году он стал частью рабочей группы по распределенному управлению (DMTF). [...] Примерно в то же время Microsoft начала требовать от OEM-производителей и поставщиков BIOS поддержки интерфейса / набора данных для получения сертификации Microsoft.

Источник: Система управления BIOS

Информация SMBIOS хранится в разных таблицах данных; первый (тип 0) содержит основные сведения, такие как поставщик, версия и дата выпуска. Размер физического устройства , содержащего BIOS соответствует одному байту , который расположен на offest 0x9 указанной таблицы.

Фактический размер может быть рассчитан следующим образом:

64K * (value + 1)

Значение 0 означает, что размер равен 64 КиБ, 1 означает 128 КиБ и т.д.

Насколько я знаю, Windows не предоставляет встроенную утилиту, которая может извлекать определенные данные SMBIOS, такие как размер ROM. Вы все еще можете написать сценарий самостоятельно, хотя; см. ниже некоторые рабочие примеры. В качестве альтернативы вы можете использовать стороннюю программу, например, порт dmidecode Windows.


Пакетный скрипт

@echo off
setlocal enabledelayedexpansion

set key=HKLM\SYSTEM\CurrentControlSet\services\mssmbios\Data

for /f "tokens=3" %%G in (
'reg query "%key%" /v "SMBiosData" ^| findstr /i /c:"REG_"'
) do (
set "size=%%~G"
set /a size=64 * 0x!size:~34,2! + 64
)

echo ROM Size: %size% KiB
PAUSE
exit /b

VBScript

Set tables = GetObject("winmgmts:\\.\root\wmi").ExecQuery _
    ("SELECT * FROM MSSmBios_RawSMBiosTables")

For Each obj In tables
    WScript.Echo "ROM Size: " & (64 * obj.SMBiosData(9) + 64) & " KiB"
Next

PowerShell

$tables = Get-WmiObject -ComputerName . -Namespace root\wmi -Query "
    SELECT * FROM MSSmBios_RawSMBiosTables"

foreach ($obj in $tables)
{
    echo $("ROM Size: " + (64 * $obj.SMBiosData[9] + 64) + " KiB")
}

замечания

Инструментарий управления Windows (WMI) является предпочтительным методом для чтения информации SMBIOS в Windows.

Источник: Устройство \ Объект PhysicalMemory

Драйвер [SMBIOS] также сохраняет эту информацию в реестре по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mssmbios\Data . Хотя информация SMBIOS хранится в реестре в этом месте, потребители должны продолжать использовать WMI или API GetSystemFirmwareTable() для извлечения данных SMBIOS. Нет никакой гарантии, что эта информация будет храниться в этом подразделе реестра для каждого последующего выпуска Windows.

Источник: поддержка SMBIOS в Windows

дальнейшее чтение

2

Я не думаю, что вы можете, по крайней мере, ни в коем случае.

По сути, это потому, что размер кода BIOS не предоставляет никакой полезной информации для вас, пользователя. BIOS в IBM PC-совместимом компьютере имеет несколько основных обязанностей, большинство из которых применимы и к другим платформам, но могут быть реализованы по-разному:

  • Он выполняет самотестирование при включении питания (POST)
  • Это делает базовое аппаратное обнаружение и инициализацию
  • Он устанавливает базовую среду выполнения, особенности которой восходит к исходному ПК IBM 5150 с 1981 года (ЦП находится в реальном режиме, несколько регистров ЦП инициализированы с известными значениями, а несколько флагов ЦП установлены с известными значениями).
  • Он предоставляет операционной системе (очень примитивные) аппаратные средства доступа и обнаружения; они не используются современными операционными системами, либо из-за технических ограничений ЦП (например, нелегкий способ переключения из длинного режима ), либо из-за ограничений производительности (переключение назад и вперед в реальный режим или режим V86 для выполнения -битный код BIOS занимает много времени, поэтому быстрее оставаться в защищенном или длительном режиме и просто делать это самостоятельно в ОС)
  • Он загружает загрузчик первого этапа операционной системы в известное фиксированное место в ОЗУ и передает ему выполнение
  • Предоставляет пользовательский интерфейс для настройки основных параметров системы; Строго говоря, это необязательно, и BIOS 1980-х годов часто не предоставлял такого интерфейса, вместо этого полагаясь на программное обеспечение, поставляемое отдельно, или на аппаратные DIP-переключатели для настройки даже таких базовых системных настроек, как тип видеокарты и объем установленной оперативной памяти.

Ни в чем из этого нет никакой выгоды для пользователя, зная, сколько кода используется для реализации этих задач. Еще в первые дни (здесь мы говорим о DOS раньше, чем Windows 3.0 до 3.1, так с начала 1980-х до начала 1990-х), BIOS часто полагался на выполнение основных функций, и, таким образом, размер кода BIOS мог потенциально соответствовать, по крайней мере, частично производительность, но в современных компьютерах BIOS отводится в основном в качестве загрузчика операционной системы и низкоуровневого интерфейса конфигурации оборудования. Кроме того, в компьютерах той эпохи, если код BIOS вообще можно было заменить, это было физическим удалением и переустановкой микросхем ПЗУ на материнской плате; BIOS с возможностью обновления флэш-памяти - намного более позднее изобретение.

Вы сравниваете это с определением размера запоминающих устройств или оперативной памяти. Разница заключается в том, что возможность определить размер того, что на самом деле говорит вам, пользователю, о чем-то, что стоит знать: объем доступного пространства хранения для каждого устройства или в совокупности является определяющим фактором того, сколько данных вы будете иметь. возможность хранить на компьютере, и размер оперативной памяти является одним из определяющих факторов, с которыми вы можете работать одновременно и с какой скоростью работать с этими данными.

В принципе, вы можете перейти на веб-сайт конкретного производителя материнских плат и посмотреть загружаемые образы обновлений BIOS. Размер этих файлов изображений будет, с очень высокой степенью достоверности, соответствовать размеру чипа флэш-ПЗУ, содержащего код BIOS на этой конкретной материнской плате. Я думаю, что общий размер сегодня составляет порядка нескольких мегабайт; исходный BIOS IBM 5150 для ПК составлял 8 КБ, а начиная с XT (IBM 5160) он был увеличен до 32 КБ в IBM. Я где-то читал анекдот о том, что в ранних клонах IBM PC BIOS чистых помещений хотя бы однажды люди задавались вопросом, не упустили ли они что-то, поскольку они смогли сделать это значительно меньшим количеством кода.

И, конечно, это полностью игнорирует возможность наличия в системе других прошивок, кроме BIOS компьютера. Видеокарты, сетевые карты, платы контроллеров дисков и все другие периферийные устройства имеют свои собственные BIOS, которые с точки зрения реализации полностью отделены от BIOS на материнской плате, как веб-браузер (или должен быть) полностью отдельно от операционной системы.

-2

В Linux вы можете найти емкость флэш-памяти множеством способов. Команда dmidecode предоставляет много полезной информации о BIOS, включая емкость чипа. Я наконец обнаружил, что это 1 МБ. Я предлагаю всем либо взглянуть на свою материнскую плату, либо попробовать live CD с linux.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .