В современных версиях Windows информация для запуска операционной системы храните в файле конфигурации загрузки BCD (Boot Configuration Data). В этом файле хранятся данные об установленной Windows и параметрах ее загрузки. Если файл BCD удален или поврежден, Windows перестает загружаться. Также вы не сможете загрузить Windows, если повреждена MBR запись на жестком диске. В этой статье мы покажем, как корректно пересоздать файл хранилища данных конфигурации загрузки BCD и
Master Boot Record
(MBR) на примере Windows 10 и 11.
Содержание:
- Ошибка “The boot configuration data file is missing some required information”
- Автоматическое восстановление конфигурации загрузчика Windows
- Идентификация разметки дисков и букв томов
- Восстановление загрузочного сектора MBR в Windows 10/11
- Пересоздание BCD файла загрузчика Windows 10
Ошибка “The boot configuration data file is missing some required information”
Если файл BCD поврежден, отсутствует, если вы удалили / отформатировали отдельный раздел диска с меткой System Reserved (и размером 500Мб), специальный OEM раздел, то скорее всего при попытке загрузить Windows появится такое сообщение:
Your PC needs to be repaired The Boot Configuration Data file is missing some required information File: BootBCD Error code: 0xc0000034
Также ошибка может выглядеть так:
The Boot Configuration Data for your PC is missing or contain errors. File: bootbcd Error Code: 0xc000000f
При повреждении MBR может быть ошибка No operating system found.
Автоматическое восстановление конфигурации загрузчика Windows
При появлении такой ошибки, в первую очередь попробуйте исправить проблему с загрузкой ОС с помощью режима автоматического восстановления (Startup Repair), который можно запустить из среды восстановления Windows RE.
Совет. Желательно периодически проверять работоспособность среды WinRE, и если она не работает, воспользоваться для ее восстановления методикой из статьи Восстановление среды WinRE в Windows.
Если автоматическое восстановление с помощью Startup Repair не помогло решить проблему, вам нужно загрузиться с загрузочного или установочного диска с Windows или в среде WinRe (Repair your computer -> Troubleshoot -> Advanced options -> Command Prompt), запустить командную строку и попробовать полностью пересоздать файл конфигурации загрузчика BCD и обновить MBR запись.
В этом примере я буду использовать установочный диск с Windows 10. Выберите в настройках BIOS первичным загрузочным устройство DVD диск или USB флешку с дистрибутивом Windows (в зависимости от того, с какого устройства вы хотите загрузить компьютер). Загрузитесь с установочного диска и на экране выбора языка установки нажмите сочетание клавиш Shift+F10. Перед вами откроется консоль командной строки.
Попробуйте восстановить BCD файл автоматически, выполнив команду:
bootrec /RebuildBCD
Перезагрузите компьютер и проверьте, загружается ли Windows (не забудьте изменить приоритет загрузочных устройств в BIOS). Если Windows не загружается, еще раз загрузитесь с установочного диска и откройте окно командной строки.
Идентификация разметки дисков и букв томов
Очень важно. Все инструкции, описанные ниже, подходят для обычных компьютеров с BIOS (или загружающихся в режиме UEFI legacy) и MBR таблицей разделов. На компьютерах с UEFI прошивками для пересоздания BCD нужно использовать следующе инструкци: восстановлению EFI загрузчика в Windows 10 или восстановление удаленного EFI раздела в Windows.
Как понять, используется ли у вас BIOS или UEFI система? Проще всего проверить тип таблицы разделов на диске, на котором установлена Windows: GPT или MBR. Для этого выполните команду:
diskpart
Затем выполните:
list disk
- Если у диска в столбце Gpt указана звездочка (*), значит на диске используется таблица разделов GPT. Это значит, что у вас компьютер с UEFI, и для восстановления загрузчика нужно использовать статью по ссылке выше.
- Если в столбце GPT звездочка отсутствует, значит у вас на диске таблица разделов MBR, и вы можете продолжить следовать данной инструкции.
Далее вам нужно идентифицировать локальные диски и разделы системы (скорее всего назначенные им буквы дисков будут отличаться от дисков, которые вы видели при работе в Windows). Проще всего это сделать с помощью утилиты diskpart. Выполните следующие команды:
diskpart
list vol
Перед вами появится список разделов в системе, назначенные им буквы дисков и их размер. В нашем случае к компьютеру подключен 1 жесткий диск, на котором имеются всего два раздела:
- Раздел System Reserved размером 500 Мб, которому назначена буква диска C:. На этом небольшом служебном разделе по-умолчанию хранится файл конфигурации загрузки BCD (подробнее)
- NTFS раздел размером 39 Гб, которому назначена буква D:. На этом разделе находится установленная Windows, программы и данные пользователя.
Важно. Запомните буквы дисков, назначенные разделам. Данные буквы дисков будут использоваться в последующих командах.
Восстановление загрузочного сектора MBR в Windows 10/11
С помощью утилиты bootrec.exe можно перезаписать данные в MBR и загрузочном секторе, поместим в них ссылки на загрузчик Windows (bootloader).
Попробуйте перезаписать основную загрузочную запись (MBR) системного раздела для совместимости с загрузчиком Windows (существующая таблица разделов не перезаписывается).
bootrec.exe /fixmbr
Добавьте в загрузочные секторы диска код для загрузки файла bootmgr ( диспетчера загрузки Windows):
bootsect.exe /nt60 all /force
Прежде, чем идти далее, попробуйте автоматически пересоздать конфигурацию загрузчика BCD командами (это самый простой способ для начинающих):
bootrec /FixBoot
– команда создает новый загрузочный сектор на системном разделе (перезаписывает загрузочную запись раздела PBR).
bootrec /ScanOs
– просканировать диски и найти установленные копии Window, которых нет в хранилище конфигурации загрузки
В случае успешного сканирования появится запрос на добавление записей о найденный Windows в BCD:
Scanning all disks for Windows installations. Please wait, since this may take a while... Successfully scanned Windows installations. Total identified Windows installations: 1 [1] D:Windows Add installation to boot list? Yes/No/All:
bootrec /RebuildBcd
– пересоздать хранилище конфигурации загрузкика, добавить в BCD найденные на компьютере копии Windows/
После этого перезагрузите компьютер и проверьте загрузку Windows. Если ОС не загружается, следуйте инструкции.
Если команда bootsect.exe не найдена, попробуйте указать полный путь к ней:
X:bootbootsect.exe /nt60 all /force
Пересоздание BCD файла загрузчика Windows 10
Далее с помощью команды BCDedit нужно создать новый файл с конфигурацией загрузчика (предполагается, что у вас нет резервной копии BCD).
Ваши дальнейшие действия зависят от того, есть ли на диске отдельный раздел System Reserved или нет. В командной строке выполните:
diskpart
list vol
Проверьте, есть ли на диске компьютера системный раздел System Reserved. Его можно идентифицировать по метке тома, либо более точнее по размеру (500 Мб для Windows 10+, 350 Мб для Windows 8.1 и 100 Мб для Windows 7).
- Если раздела нет (вы случайно удалили его), можно хранить конфигурацию загрузчика BCD на основном диске, где находится каталог Windows. Чтобы создать конфигурационные файл загрузчика BCD и Bootmgr на указанном диске, выполните команду:
bcdboot C:Windows /S C:
Должно появится сообщение
Boot files successfully created
. - Если раздел System Reserved у вас имеется, удалите старый (поврежденный) файл BCD и создайте вместо него новый:
del c:bootbcd
Если разделу System Reserved не назначена буква диска (по-умолчанию), вы можете сами назначить ее с помощью diskpart.
Запустите:
diskpart
Выберите диск (в моем случае в компьютере имеется всего один жесткий диск, а вы можете вывести список дисков командой list disk):
select disk 0
На скриншота выше видно, что раздел с меткой System Reserverd называется Volume 1. Выберите его:
select volume 1
Назначьте букву диска (я назначил букву C:, но вы можете использовать любую другую букву, в этом случае измените путь в следующих командах):
assign letter C:
exit
Создайте временный пустой файл bcd.tmp:
bcdedit /createstore c:bootbcd.tmp
Создайте запись для диспетчера загрузки bootmgr:
bcdedit.exe /store c:bootbcd.tmp /create {bootmgr} /d "Windows Boot Manager"
Импортируйте в BCD настройки из файла bcd.tmp:
bcdedit.exe /import c:bootbcd.tmp
Если команда bcdedit возвращает ошибку (
Ошибка создания хранилища. Отказано в доступе, access denied
) при доступе к файлу BCD, попробуйте снять с него атрибуты скрытый, read-only и системный:
attrib C:BootBCD -s -h -r
Укажите, что загрузчик находится на служебном разделе System Reserved (ему назначена буква диска C: )
bcdedit.exe /set {bootmgr} device partition=c:
Настройте время ожидания при выборе ОС:
bcdedit.exe /timeout 10
Удалите временный файл:
del c:bootbcd.tmp
Итак, вы создали пустой BCD файл с параметрами загрузчика. Теперь в него нужно добавить записи об установленных на диске Windows .
Создайте в хранилище BCD новую запись для Windows 10:
bcdedit.exe /create /d "Windows 10" /application osloader
Команда должна вернуть уникальный идентификатор (GUID) данной записи загрузчика:
The entry {8a7f03d0-5338-11e7-b495-c7fffbb9ccfs} was successfully created.
Укажем, что bootmgr должен использовать данную запись по-умолчанию (после истечения времени ожидания при выборе ОС, для загрузки будет используется именно эта запись).
bcdedit /default {8a7f03d0-5338-11e7-b495-c7fffbb9ccfs}
Теперь в новой записи загрузчика осталось указать пути к имеющейся на диске установленной копии Windows 10. Ранее мы определили, что в среде WinPE диску с установленной Windows присвоена буква D:. Используйте эту букву диска в следующих командах:
bcdedit.exe /set {default}device partition=d:
bcdedit.exe /set {default} osdevice partition=d:
bcdedit.exe /set {default} path Windowssystem32winload.exe
bcdedit.exe /set {default} systemroot Windows
Осталось сделать данную загрузочную запись в BCD видимой (по умолчанию она скрыта):
bcdedit.exe /displayorder {default} /addlast
Итак, мы полностью пересоздали загрузчик Windows 10 (обновили файл BCD и перезаписали загрузочный сектор MBR).
Теперь нужно сделать раздел, на котором находится файл BCD с конфигурацией загрузчика активным (BIOS передает управлению загрузчику ОС с активным MBR раздел). Допустим, разделы на вашем диске распределены так.
- Volume 0 – загрузочная/установочная флешка (ISO образ) диск, с которого вы загрузили компьютер
- Volume 1 – раздел System Reserved с BCD загрузчиком (размер 500 Мб)
- Volume 2 – раздел с файлами Windows (здесь находятся каталог Windows, Program Files, Users и т.д.)
В этом примере нужно сделать активным раздел Volume 1 (в вашем случае определите номер раздела самостоятельно). Сделать раздел активным можно с помощью diskpart:
diskpart
list disk
sel disk 0
list vol
select volume 1
(файлы bootmgr и «BootBCD» находятся на этом разделе)
active
exit
Проверьте, что раздел volume 1 теперь активный:
select vol 1
detail partition
Все верно (
Active: Yes
).
Теперь вы можете перезагрузить компьютер и убедится, что Windows загружается в штатном режиме.
Многие технические специалисты в своей работе сталкиваются с ошибками, возникающими на различных стадиях загрузки операционной системы Windows. Случился и в моем практике не так давно достаточно нетипичный сбой этапа загрузки, в котором мне, к моему огромному недовольству, затруднительно было сходу разобраться. Смысл проблемы заключался в том, что вышедшая из строя по достаточно нетривиальной цепочке причин, система Windows 7 (Профессиональная) отказывалась грузиться во всех, без исключения, режимах загрузки. Процесс загрузки просто «вис» на черном экране на этапе, следующем за графическим экраном заставки (splash screen). Код работы с видеоадаптером устанавливал разрешение в родное для монитора, а далее загрузка просто-напросто останавливалась, при этом отчетливо был виден графический курсор мыши, сам манипулятор функционировал. Я так полагаю, что у профессионалов подобное явление обозначается термином черный экран смерти (Black Screen of Death, KSOD), наиболее распространенными причинами которого являются: повреждение различных частей реестра, невозможность запуска критически важных служб и кривая установка разрешений на системные каталоги (все эти вещи зачастую вызваны обновлениями). Большая просьба не путать термин «черный экран смерти» с общеизвестным синим экраном смерти (Blue Screen of Death, BSOD). Как я уже упоминал, загрузка в безопасном режиме останавливалась на том же самом месте, то есть я вообще никак, ни в каком из режимов не мог загрузить ОС!! С грустью вспомнил обо всех хваленых средствах диагностики загрузки вида xbootmgr и прочих трассировщиках, которые оказывались абсолютно бесполезными в подобной ситуации. Потом пришла мысль, что хорошо было бы подключиться каким-нибудь отладчиком удаленно и просто протрассировать код до ошибки, но подобным опытом я пока не обладаю, а проблему надо было решать в сжатые сроки.
В действительности, проблему удалось таки решить «по старинке», воспользовавшись отличным средством Microsoft DaRT, благо удалось докопаться до виновника сбоя.
Однако, сама ситуация навела меня на размышления о том, что на дворе уже далеко ведь не первая версия операционной системы, да и эра технологий, так сказать, в полном разгаре :), а пользователи Windows продолжают наблюдать «неопределенные состояния», в которых операционная система не в силах хотя бы на простом уровне вычислить причину сбоя и сообщить об этом оператору!! С другой стороны для меня лично очевидно, насколько сложно создать код, который отслеживал бы все возможные внутренние состояния. Как же быть? Ведь я совершенно не могу понять, на каком именно этапе загрузка остановилась. Поизучав материалы, которые имеются в Сети по теме этапов загрузки, понял, что большинстве своем они не дают представления о характерах и причинах возникновения ошибок, а содержат лишь общие рекомендации по устранению. Поэтому у меня возникло желание углубиться в материал и сделать себе небольшую карту ошибок этапов загрузки, да и для дальнейшего изучения он был бы неплохой отправной точкой. Так родилась идея начать серию статей по описанию стадий загрузки Windows с уклоном в сторону диагностики ошибок. Затем захотелось посмотреть на проблему ошибок загрузки Windows не с точки зрения последовательности «описание — снимок экрана — а попробуйте во это решение», а именно со стороны изучения всех возможных причины возникновения той или иной ошибки непосредственно с изучением кода. Да и вообще, мне лично всегда было интересно погрузиться до глубин кода, заглянуть «в файл» и прикоснуться к граням алгоритмов загрузки Windows, понять больше, познакомиться с ошибками, которые никогда не встречались мне на практике и не были освещены в информационном пространстве Сети, понять происходящее «изнутри».
Вот тут то была допущена основная ошибка Вернувшись к этому месту после довольно продолжительного времени изучения кода я могу смело утверждать, что попал я в настоящий кодовый кошмар. Я осознал, что алгоритмический пласт информации оказался очень большим, да и ошибки коррелируются между собой настолько витиевато, что иногда упускаешь из виду сам смысл происходящего. Материалы поддержки в Сети просто отсутствуют, поэтому приходится прорубать себе путь по абсолютно незнакомому маршруту.
Поэтому я начал сокращать материал и решил сильно не вдаваться в подробности логики работы процедур/функций, а сфокусироваться именно на причинах ошибок, возникающих на различных стадиях исполнения кода. Весь материал я вынужден разбить на несколько частей, что бы не городить огромную стену теста, при чтении которой можно запросто заснуть. В этой, первой статье цикла мы будем исследовать ошибки Bootmgr, то есть одного из начальных модулей в цепи загрузки операционной системы Windows.
Скажу честно, статья получилась сырая, потому как познания в реверсинге у меня явно не соответствуют уровню материала, посему и некоторые выводы не до конца проработаны и частично ошибочны! Но я всё же набрался смелости опубликовать материал, авось кому то и будет полезной в качестве базиса.
Как Вы уже поняли, данный материал в доработанной своем состоянии (к которому еще только предстоит дойти) призван помочь нам в дальнейшей практике и существенно облегчить диагностику проблем, возникающих на стадиях загрузки операционной системы, помочь более точно отследить логику ошибки, вместо того, чтобы с досады бросить решение и взяться за модернизацию, переустановку и прочие разные нехорошие вещи.
В данной версии статьи будет описана классическая схема разбиения и загрузки (legacy boot), основанная на использовании PC/AT BIOS и MBR.
Да просто потому, что под рукой в нужный момент оказалась именно эта конфигурация. Алгоритм с использованием GPT быть может опишу в будущем, но сразу могу сказать, что уже даже на достаточно ранних этапах код, в большинстве своем, идентичен.
Об ошибках в модулях загрузки
Непосредственно перед тем как начать описание процесса загрузки и возникающих в процессе проблем, я бы хотел сделать небольшое отступление на тему ошибок Bootmgr, Winload и ntoskrnl, возникающих в ходе работы кода одноименных модулей. Многие критичные процедуры кода, реагируя на те или иные условия, генерируют числовые идентификаторы ошибок и возвращают их через произвольный регистр (чаще всего это eax). Поскольку регистр, хранящий код ошибки, часто сохраняется либо умышленно не используется, ошибки в «сквозном» режиме передаются на верхний уровень иерархии вложенных подпрограмм, то есть просто при множественном возврате из них по команде ret
. Таким образом ошибки регистрируются до тех пор, пока в коде не встречается логика обработки ошибки. Подобных участков обработки ошибок Bootmgr у нас несколько:
- Блок кода в процедуре BmMain, выдающий ошибку BlInitializeLibrary failed …;
- Блок кода в процедуре BmMain, выдающий ошибку BlResourceFindMessage failed …;
- Блок кода в процедуре BmMain, выдающий ошибку BlXmiInitialize failed …;
- Процедура BmFatalErrorEx, которая является глобальным обработчиком ошибок на все остальные случаи;
- Процедура BlStatusError, которая вызывается из процедур MmHapReportHeapCorruption и BmFatalErrorEx в аварийной ситуации, проверяет наличие активного отладчика и случае наличия выдает специальную ошибку *** Fatal error …;
Некоторые обработчики незамедлительно выдают сообщение о возникшей проблеме на консоль, а вот глобальный кейс-обработчик BmFatalErrorEx содержит более витиеватую логику обработки поступившего кода с выдачей уже развернутого текста ошибки. Другая особенность обработки ошибок Bootmgr/Winload заключается в том, что, насколько я смог разобраться, менее значимые ошибки замещаются более значимыми. А это означает, что если ошибка возникла в какой-то процедуре как реакция на определенное условие, то другая ошибка, возникшая позже и являющаяся более приоритетной, может в процессе дальнейшего исполнения кода просто «затереть» первичную ошибку. Из этого следует, что на консоли пользователь видит лишь один результирующий статус, имеющий самый высокий приоритет, хотя, вероятно, имелся и менее приоритетный статус (или серия статусов), который был потерян.
Все ошибки, возникающие на этапах загрузки операционной системы Windows можно подразделить на две общие категории:
- Ошибка NT_ERROR (NTSTATUS). Хорошо знакомый разработчикам статус, использующийся для передачи результатов ошибок между разными компонентами ОС. Используется в ошибках Bootmgr/Winload, то есть сразу начиная с этапа Bootmgr.
- Ошибка BSOD BugCheck (STOP). Фатальная ошибка, хорошо знакомый всем нам синий экран смерти. Может возникать на поздних стадиях загрузки ОС, после того как подгружается логика обработки критических ошибок на этапе Ntoskrnl.
Код NTSTATUS — это 32-битное числовое значение, описывающее статус выполнения (результат завершения) кода подпрограммы/функции.
NTSTATUS частично описан в заголовочном файле ntstatus.h комплекта Windows WDK. Значения подразделяются на четыре категории:
- NT_SUCCESS (0 − 0x3FFFFFFF);
- NT_INFORMATION (0x40000000 − 0x7FFFFFFF);
- NT_WARNING (0x80000000 − 0xBFFFFFFF);
- NT_ERROR (0xC0000000 — 0xFFFFFFFF);
По коду можно заметить, что неотрицательные значения соответствуют «успешному» завершению подпрограммы, отрицательные — «ошибочному». Числовой статус обычно ассоциирован с текстовым описателем, который призван олицетворять понятный человеку, осмысленный текст ошибки (в теории, а на практике иногда весь мозг сломаешь в догадках). Полный список статусов NTSTATUS достаточно внушителен, но весь он нам не потребуется, поскольку далеко не все ошибки из этого списка мы можем наблюдать на изучаемых этапах загрузки Windows, а это, согласитесь, существенно облегчает нам работу
Некоторые особенности ошибок
У ошибок в коде Bottmgr я выделил несколько особенностей:
- В коде Bootmgr присутствуют так называемых «перекодирующих процедур», которые на входе проверяют значения некоторых ошибок NT_ERROR (диапазон 0xC0000000-0xFFFFFFFF) и, в зависимости от неких условий, преобразуют их в предупреждения NT_WARNING (диапазон 0x80000000-0xBFFFFFFF). По этой причине некоторые ошибки пользователь вообще никогда не будет наблюдать на результирующем ошибочном экране, выводимом Bootmgr. Однако, я этот факт в своей работе не учитывал и описывал все без исключения ошибки.
- Следующий немаловажный момент в логике обработки ошибок заключается вот в чем: Информационные сообщения об ошибках BootMgr/Winload, выводимые кодом модулей, вовсе не обязательно будут однозначно соответствовать уникальному значению NTSTATUS! Вот вам простой пример, наверняка многие видели на практике вот такую вот ошибку:
Не удалось запустить Windows. Возможно, это произошло из-за недавнего изменения
конфигурации оборудования или программного обеспечения. Чтобы устранить ошибку:
1. Вставьте установочный диск Windows и перезагрузите компьютер.
2. Выберите параметры языка, затем нажмите кнопку «Далее».
3. Выберите пункт «Восстановить компьютер».
Если этот диск отсутствует, обратитесь за помощью к системному администратору
или изготовителю компьютера.
Состояние: 0xc000000f
Сведения: Сбой меню загрузки, поскольку требуемое устройство недоступно.
А вот теперь та же самая ошибка, но с другим состоянием:
Не удалось запустить Windows. Возможно, это произошло из-за недавнего изменения
конфигурации оборудования или программного обеспечения. Чтобы устранить ошибку:
1. Вставьте установочный диск Windows и перезагрузите компьютер.
2. Выберите параметры языка, затем нажмите кнопку «Далее».
3. Выберите пункт «Восстановить компьютер».
Если этот диск отсутствует, обратитесь за помощью к системному администратору
или изготовителю компьютера.
Состояние: 0xc000000e
Сведения: Сбой меню загрузки, поскольку требуемое устройство недоступно.
Описание идентично, а коды разные!! Из этого следует, что одно текстовое сообщение об ошибке (сведения) может группировать сразу несколько родственных состояний (кодов ошибок). Если я нигде не ошибся, то для меня это, честно говоря, открытие! Получается, что разработчики решили особо не заморачиваться и не описывать в коде реакции на все возможные варианты ошибок, а ограничиться лишь конечным списком пояснений с выдачей конкретизирующего кода состояния (по которому и можно определить детали). И удивляться тут нечему, ведь данный факт опирается на бессмысленность генерации в коде реакции на все возможные состояния, поскольку код Bootmgr генерирует более 70 (!) уникальных ошибок, при том что многие неявны и по ним очень сложно работать, да и многие коды ошибок Bootmgr действительно одинаковы на разные события. Не думаю, что разработчик будет сидеть и корпеть над уникальным описанием для каждой ошибки.
- Еще одна особенность ошибок Bootmgr проистекает из второго пункта и заключается в том, что одно и то же состояние (например, C00000001) может иметь различные причины возникновения внутри разных по назначению функций. Имеется ряд ошибок Bootmgr, под которые может подпадать достаточно широкий спектр проблем в разнообразных функциональных частях образа Bootmgr. В одной функции ошибка имеет один смысл, в другой функции — другой. Поэтому, подобные ошибки лишь с большой натяжкой могут быть подогнаны под общее определение, иногда лишь отдаленно отражающее реальную суть происходящего, соответственно и рекомендации по устранению могут иметь большое количество пунктов, логически не связанных между собой. Вот такая вот реальность!!
Учитывая все вышеописанные обстоятельства, мы примем на вооружение следующую логику:
При возникновении ошибки сначала обращаем внимание на код состояния (NTSTATUS), как на наиболее информативный, а уж затем, при необходимости, руководствуемся сведениями об ошибке.
Собственно, этот постулат и будет у нас основополагающим, мы будем изучать ошибки Bootmgr, а не их описания. Это позволит нам более детально локализовать, конкретизировать проблему, то есть сделать её более определенной в причине собственного возникновения.
BmFatalErrorEx
Хотелось бы еще отдельно упомянуть основную процедуру для вывода сообщений об ошибках на консоль, именуемую BmFatalErrorEx. Она вызывается примерно из 9 мест на протяжении всего кода Bootmgr. Сама процедура предназначена для группировки ошибок по классам и вывода ограниченного количества сообщений об ошибках. Я думаю практически всем специалистам приведенный ниже шаблон достаточно хорошо знаком:
Не удалось запустить Windows. Возможно, это произошло из-за недавнего изменения конфигурации оборудования или программного обеспечения. Чтобы устранить ошибку: 1. Вставьте установочный диск Windows и перезагрузите компьютер. 2. Выберите параметры языка, затем нажмите кнопку «Далее». 3. Выберите пункт «Восстановить компьютер». Если этот диск отсутствует, обратитесь за помощью к системному администратору или изготовителю компьютера. Файл: _путь_до_проблемного_файла_; Состояние: _код_состояния_; Сведения: Общее_описание_ошибки (смотрите_ниже) |
Указанная самой последней строка «Сведения» может содержать одну из нижеследующих текстовых строк:
Русское обозначение | Английское обозначение |
---|---|
An error occured while attempting to read the boot configuration data file | |
An error occured while attempting to load the boot application | |
Ошибка при перечислении глобальных параметров | An error occured while enumerating global parameters |
Произошла непредвиденная ошибка | An unexpected error has occured |
Возникла неожиданная ошибка ввода-вывода | An unexpected I/O error has occured |
Не удается загрузить выбранную запись, поскольку приложение отсутствует или повреждено. | The selected entry could not be loaded because the application is missing or corrupt |
Файл данных конфигурации загрузки Windows не содержит действительного элемента списка загрузки ОС. | The Windows Boot onfiguration Data file does not contain a valid OS entry |
Введена неверная группа цифр. Исправьте выделенную группу. | Invalid group of digits entered. Please correct the highlighted group |
Сбой меню загрузки, поскольку требуемое устройство недоступно. | The boot selection failed because a required device is inaccessible. |
Не удается завершить действие, поскольку не получен ключ программы шифрования диска BitLocker, необходимый для снятия блокировки с тома. | The action could not be completed because the BitLocker Drive Encryption key required to unlock the volume could not be obtained |
Не удается создать диск в памяти, поскольку недостаточно памяти | Ramdisk device creation failed due to insufficient memory |
Требуемая информация отсутствует в файле данных конфигурации загрузки Windows | The Windows Boot Configuration Data file is missing required information |
Попытка загрузить 64-разрядное приложение, однако данный процессор не совместим с 64-разрядным режимом. | Attempting to load a 64-bit application, however the CPU is not compatible with 64-bit mode |
Возможно, файл поврежден. Указанная в его заголовке контрольная сумма не совпадает с вычисленной. | The file possibly corrupt. Its header checksum does not match the computed checksum |
Не удается проверить цифровую подпись этого файла. | Windows cannot verify the digital signature for this file |
В хранилище данных конфигурации загрузки обнаружена недопустимая конфигурация элемента объекта. | The configuration for an element within the object is invalid in the boot configuration data store |
The boot manager experienced an error parsing element within BCD object. | |
The boot manager experienced error due to an invalid entry in the BCD store. | |
Файл хранилища данных конфигурации загрузки Windows содержит неправильные данные | The boot configuration file is invalid. |
No valid entries found in the boot configuration data file |
Как можно заметить, не все ошибки имеют свою локализацию на русскому языке. Не знаю с чем это может быть связано, однако имеются две вероятных причины: я неправильно распарсил ресурсы главного модуля bootmgr.exe, либо пропустил какие-то записи в файле локализации bootmgr.exe.mui.
Ну и наконец то давайте уже переходит к анализу ошибок Bootmgr. Хотелось бы заметить, что вступление у нас было бы неполным, если бы сразу перешли к этапу Bootmgr и не осветили, хотя бы даже и поверхностно, стадии, которые ему предшествуют и относятся к процессу работы кода BIOS, MBR, PBR (VBR), ибо без них сюжетная линия повествования не была бы цельной.
Стадия BIOS
На IBM PC/AT-совместимой машине с классическим BIOS, код прошивки (firmware) на финальной стадии своего функционирования, по очереди перебирает устройства загрузки, заданные пользователем через меню настройки (Setup), и пытается считать с каждого из этих устройств загрузочный сектор. Сектор этот носит название Главной Загрузочной Записи (Master Boot Record, MBR). После загрузки с носителя загрузочного сектора, код BIOS проверяет наличие в последних двух байтах сигнатуры AA55h
, и если сигнатура не обнаружена, то будет предпринята попытка перехода к другому устройству, если это устройство последнее в списке загрузки, то выдается одна из следующих ошибок (зависит от вендора оборудования):
Ошибка |
|
Описание | BIOS не нашел Master Boot Record (MBR)! А записан ли он вообще? Необходимо удостовериться:
|
Решение | Если Вы уверены, что носитель выбран правильно и система на него устанавливалась, то, вероятнее всего, повреждена информация в первом физическом секторе носителя. В этом случае требуется загрузиться в консоль восстановления и выполнить в командной строке следующую команду: bootrec /fixmbr |
Как Вы видите, с точки зрения ошибок финальная стадия BIOS достаточно проста, поскольку характеризуется всего-лишь невозможность нахождения кода MBR, а именно 512-байтного физического сектора с предопределенной сигнатурой AA55h
.
Стадия MBR
Если коду BIOS удалось успешно считать первый физический сектор носителя в память и успешно проверить его сигнатуру, то он передает считанным данным управление. Начинает выполняться непосредственно сам код MBR. Поскольку в этом миниатюрном участке кода сложно выделить данные, то мы просто будем говорить о блоке кода и данных, который содержит всего три ошибки, детектируемые на стадии выполнения кода главной загрузочной записи. ASCII-строки ошибок располагаются во второй половине 512-байтного сектора и выглядят следующим образом:
Если обратите внимание, в данном случае со смещения 160 начинаются те самые ошибки. Ну а теперь давайте более детально остановимся на каждой из них:
Ошибка | Invalid partition table |
Описание | код MBR не нашел в таблице разделов активный раздел (маркер 80h), то есть раздел, с которого должна происходить дальнейшая загрузка. Повреждена таблица разделов, то есть она не содержит активного раздела для загрузки. |
Решение | Для начала попробуем автоматические средства. Загрузимся в консоль восстановления и выполним команду: bootrec /fixmbr |
Ошибка | Error loading operating system |
Описание | Код не смог считать сектор с носителя при помощи функций прерывания int 13h. Ошибку возвращает код BIOS, который взаимодействует с портами контроллера. Проблема в BIOS? Это слишком старая материнская плата, у которой имеются проблемы с обработкой int 13h? Или физическая проблема контроллера/носителя? |
Решение |
|
Ошибка | Missing operating system |
Описание | Считали загрузочный сектор раздела (PBR), однако у него сигнатура оказалась не AA55h. То есть, считается, что на месте сектора записан мусор. По какой то причине поврежден PBR. Скорее всего с самим разделом всё нормально, то он существует и назначен активным, а вот с первым сектором раздела что-то не так. |
Решение | Требуется восстановить PBR. Для этого загружается в консоль восстановления и выполняем команду: bootrec /fixmbr bootrec /fixboot |
Стадия PBR (VBR)
MBR нашел раздел, помеченный активным, загрузил с него первый физический сектор NTFS-раздела (партиции, тома) PBR (VBR), проверил его сигнатуру и передал ему управление. Как мы помним, основной целью кода PBR является загрузка Менеджера загрузки Windows (Windows Boot Manager, BootMgr) и передача ему управления.
Ошибка | A disk read error occurred |
Описание | Универсальная комплексная ошибка, используемая кодом PBR сразу на нескольких стадиях:
|
Решение | Ваш BIOS не поддерживает расширения прерывания работы с диском 13h? Такие ситуации у нас полностью должны быть исключены, ну конечно если Вы не откопали совсем уж старую материнскую плату Во всех остальных случаях остается вариант с поврежденным блоком BPB в загрузочном секторе раздела. Его можно восстановить целиком со всем PBR, загрузившись в консоль восстановления и выполнив команду: bootrec /fixboot |
Ошибка | BOOTMGR is missing |
Описание | Код PBR не смог найти файл BOOTMGR на специализированном разделе. |
Решение | Идем по списку:
|
Ошибка | BOOTMGR is compressed |
Описание | Код PBR определил, что что-то не так с разделом, на котором располагается Bootmgr. |
Решение | Снять атрибут сжатия с раздела, на котором находится Bootmgr. |
Ошибка | An operating system wasn't found |
Описание | Очередная комплексная ошибка дополнительного кода PBR, возникает в следующих случаях:
|
Решение |
|
Стадия Boot Manager (BOOTMGR)
Вот тут то у нас и начинается самое интересное, собственно то, ради чего данная статья и задумывалась. Код PBR(VBR) находит зарезервированный загрузочный раздел (System Reserved), находит в корне раздела файл Bootmgr и загружает его в память, затем передает ему управление. Стоит обратить отдельное внимание на оригинальный файл Bootmgr
, располагающийся в корне зарезервированного раздела. Если Вы заметили он не имеет расширения, поскольку это не исполняемый PE-файл в привычном нам понимании, а составной файл, содержащий в начале 16-битную «заглушку» реального режима и «запакованный» 32-битный PE-файл bootmgr.exe. После загрузки в память управление получает именно 16-битная «заглушка», которая и занимается переводом процессора в 32-битный защищенный режим, использующий плоскую модель памяти, распаковкой оригинального .exe-файла и передачей ему управления.
Инициализация
Bootmgr.exe стартует с основной процедуры BmMain, которая сразу же начинает выполнять инициализацию внутренних структур и ключевых аппаратных компонентов системы при помощи процедуры: BlInitializeLibrary. Эта процедура включает в себя такие подпрограммы как InitializeLibrary, ReinitializeLibrary. Код которых, в свою очередь, друг за другом вызывает следующие процедуры:
Процедура | Описание |
---|---|
BlFwSetParameters | Инициализация параметров, предназначающихся для последующей работы с функциями BIOS PC/AT. В том числе задается ключевой для всей логики параметр PcatServicesTable; |
BlpMmInitialize | Выделение памяти под рабочий процесс; |
BlpTimeInitialize | Замеры производительности системы, и определение параметра BlpTimePerformanceFrequency, который далее будет часто использоваться в коде; |
BlpArchInitialize | Инициализация служебных структур: глобальная таблица дескрипторов (GDT), таблица векторов прерываний (IDT), схема управления страницами физической памяти и прочее; |
BlpTpmInitialize | Инициализация модуля TPM; |
BlpIoInitialize | Инициализация файловых систем FAT32/NTFS для обеспечения доступа к основному системному разделу, содержащему операционную систему; |
BlNetInitialize | Инициализация сети. Используется для работы с PXE?; |
BlUtlInitialize | Инициализация внутренних переменных модуля. Для нас процедура на данный момент абсолютно не интересная; |
PltInitializePciConfiguration | Выделяет область памяти для работы с пространством PCI; |
BlpSiInitialize | Инициализация подсистемы безопасности; |
BlBdInitialize | Проверка на наличие отладчика этапа загрузки. Конфигурирование отладки режима загрузки; |
BlpLogInitialize | Конфигурирование файла хранения журнала загрузки; |
BlpDisplayInitialize | Инициализация консоли для вывода. Под консолью подразумевается как текстовый, так и графический локальный терминал, так и удаленная сетевая консоль. |
BlpResourceInitialize | Инициализация данных в ресурсной (.rsrc) секции, получения параметров дисплея, загрузка данных из файлов локализации (.mui), инициализация локали. Достаточно важная, я бы даже сказал, ключевая процедура, поскольку именно от её функционирования зависит дальнейшая работа с конфигурационными файлами. |
Поскольку стадия инициализации критична для дальнейшего функционирования модуля Bootmgr, разработчики решили сообщать об ошибках данной стадии отдельно. Поэтому, при возникновении проблем в функционировании процедуры BlInitializeLibrary мы можем получить нашу первую ошибку Bootmgr, и выглядит она следующим образом:
BlInitializeLibrary failed 0xXXXXXXXX |
Текст вывода намекает нам на то, что произошел сбой в какой-то из перечисленных выше подпрограмм. Поскольку данная ошибка охватывает достаточно большой диапазон кода и не имеет текстового описателя, то оператору будет довольно сложно понять в какой именно подпрограмме она возникла. Из этого следует, что единственный способ выявить причину, это попытаться вычислить её по коду ошибки. А что, в свою очередь, представляет из себя код 0xXXXXXXXX
? Так ведь это же описанный выше NTSTATUS. Коды ошибок и их описания смотри в разделе ниже. Ну а мы двигаемся дальше.
Открытие BCD
После первичной инициализации логика bootmgr выполняет открытие файла данных конфигурации загрузки (BCD), который размещается:
- Для традиционной PC/AT (MBR) загрузки — на активном разделе по пути BootBCD;
- Для современной UEFI загрузки — на разделе EFI по пути EFIMicrosoftBootBCD;
Для достижения этой цели используется процедура под названием BmOpenDataStore.
Файл данных конфигурации загрузки (Boot Configuration Data, BCD) — база данных, содержащая конфигурацию отдельных аспектов этапа загрузки. По структуре идентична файлу реестра Windows, после загрузки монтируется в куст HKLMBCD00000000.
Как Вы уже поняли, BCD является одной из ключевых структур процесса загрузки, содержащей пункты меню загрузки, описывающие пути и настройки определенных элементов конфигурации. Естественно, что любые проблемы с этой базой сразу же выливаются в критические ошибки Bootmgr и невозможность продолжения процесса загрузки операционной системы.
Далее проверяются настройки журналирования этапов загрузки и если логгирование включено, то статус записывается в файл %SystemDrive%Bootbootstat.dat процедурой BmpInitializeBootStatusDatalog.
Затем процедура BlResourceFindHtml используется для поиска ресурсного файла bootmgr.xsl внутри ресурсной секции (.rsrc) образа файла bootmgr.exe.
Bootmgr.xsl является конфигурационным файлом, который содержит общие настройки параметров меню: внешнего вида, количества выводимых пунктов меню, наименование пунктов, описание горячих клавиш, цветового оформления меню, наличия разных опций и прочее.
Затем предпринимается попытка найти файл bootmgr.exe.mui, содержащий локализованные версии сообщений. На этапе поиска ресурсов, в случае возникновения проблем с нахождением/открытием оных, мы можем наблюдать ошибку:
BlResourceFindMessage failed 0xXXXXXXXX |
Тут у нас ситуация, похожая ту, которая описывалась на этапе инициализации. Текст данной ошибки Bootmgr говорит о том, что в процедуре возникла проблема с нахождением ключевых ресурсов, которые потребуются в дальнейшей работе. Поскольку процедура многосоставная, то и источников проблемы может быть множество. Одной из причин данной ошибки могут быть проблемы с файлом bootmgr.xsl, поскольку без параметров, в нем описанных, дальнейшее выполнение невозможно. Коды ошибок у нас опять же сгруппированы в разделе под названием «Возникающие ошибки» ниже по тексту.
Далее ссылка на данные, загруженные из файла bootmgr.xsl передается процедуре BlXmiInitialize, которая предназначена для разбора содержимого файла и вывода на консоль меню загрузки на основе обнаруженных настроек. В случае, когда инсталлировано несколько операционных систем, либо присутствует несколько пунктов выбора, процедура отображает текстовое меню загрузки и ожидает пользовательского выбора.
при неудачном окончании процедуры выдается ошибка:
BlXmiInitialize failed 0xXXXXXXXX |
Ошибка говорит нам о том, что на этот раз уже с содержимым файла bootmgr.xsl что-то не так. Вероятно, присутствуют ошибки в операндах, структуре. Возможно, пользователь пытался изменить внешнее представление меню при помощи какой-то редактора и допустил ошибку.
Далее происходит проверка собственной цифровой подписи при помощи процедуры BmFwVerifySelfIntegrity. На этом этапе мы можем видеть ошибку C0000428.
Отдельно происходит проверка на наличии файла гибернации hiberfil.sys при помощи процедуры BmResumeFromHibernate, и в случае необходимости, код вызывает winresume.exe и начинает восстановление системы из режима гибернации.
Далее, в коде имеется еще один локальный обработчик ошибки, который предназначен для вывода на консоль следующего содержания:
*** Fatal error 0xXXXXXXXX : |
Честно признаюсь, воочию я никогда в живой природе подобной ошибки не наблюдал, да и судя по коду она возникает только в случае подключенного отладчика в теле процедуры BlStatusError непосредственно перед передачей управления отладчику посредством вызова прерывания командой int 3, поэтому акцентировать внимание мы на ней не будем.
Загрузка пункта и передача управления OSLoader
Этот этап у нас является финальным в логике работы модуля Bootmgr. Когда пункт загрузки выбран пользователем, либо назначен автоматически, процедура под названием BmpLaunchBootEntry начинает загружать выбранный пункт загрузки. Процедура BlImgStartBootApplication через подмножество вложенных процедур передает параметры и управление загрузчику операционной системы следующего этапа под названием winload.exe (OSLoader), располагающемуся на выбранном разделе по пути ?:WindowsSystem32winload.exe либо ?:WindowsSystem32bootwinload.exe.
Возникающие ошибки
Для удобства поиска по коду ошибки и её описателю, в данном разделе будут сведены воедино все ошибки Bootmgr, возникающие на различных стадиях процесса функционирования кода модуля. Сортироваться у нас они будут по коду NTSTATUS и иметь возможные варианты описания причины возникновения. К сожалению, таблица получилась не достаточно удобной, однако другого формата представления данных я пока не придумал, поэтому что есть то есть.
Код ошибки | Контекст / Причина |
---|---|
C0000001 STATUS_UNSUCCESSFUL Запрошенная операция была неудачной. |
BlpNetInitialize :: Выставляется, если параметр BlpPxeInfo равен нулю. |
BlpNetSoftReboot :: Выставляется, если параметр BlpPxeInfo равен нулю. |
|
BmpGetCustomAction :: Возникает при проверке списка возвращенных опций из BlpGetBootOptionIntegerList. |
|
BmPopulateBootEntryList :: Возникает при ошибке MiscGetBootOption, которая ищет опции загрузки по заданному типу. |
|
BmpInitializeDisplayMeasurements :: Возникает как реакция на ошибку BlResourceFindMessage, которая ищет ошибку в ресурсной секции по её идентификатору. |
|
DmDisplayFveRecovery :: Возникает как реакция на ошибку BlResourceFindMessage, которая ищет ошибку в ресурсной секции по её идентификатору. |
|
DmDisplayFvePinEntry :: Возникает как реакция на ошибку BlResourceFindMessage, которая ищет ошибку в ресурсной секции по её идентификатору. |
|
BmpResumeCreateBootEntry :: Возникает при проверке существования опции загрузки, получении описателя записи загрузки. |
|
BmpBootIniConvertToOptionList :: Возникает как реакция на ошибку AhCreateLoadOptionsList, которая создает список опций загрузки для записи загрузки. |
|
PcatGetNextE820Descriptor :: Возникает как реакция на ошибку PcatBiosInterrupt, которая вызывает прерывание. |
|
FvebpPromptForExternalMedia :: Возникает как реакция на ошибку отклика от консоли вывода. |
|
DeviceTablePurge :: Возникает при проверке открыто ли уже текущее устройство. |
|
BcInitialize :: Возникает если BcpBlockAllocatorHandle = -1. |
|
UdpFirmwareReceivePacket :: Возникает при проверке таймера через BlpFwCheckTimer. |
|
VhdiDynamicReadWriteAtOffset :: Возникает при проверке первого входного аргумента функции на не нулевое значение. |
|
VhdiReadVhdInfornationAtOffset :: Возникает при проверке четвертого входного аргумента функции. |
|
BlDisplayGetCharacterResolution :: Возникает при проверке параметра DspTextConsole на нулевое значение. |
|
BlDisplayGetTextColor :: Возникает при проверке параметра DspTextConsole на значение 14h. |
|
BlDisplayGetScreenResolution :: Возникает при проверке параметра DspTextConsole на нулевое значение. |
|
BfiPrintBitmap :: Возникает при проверке входных параметров функции. |
|
ConsoleTextLocalSetTextResolution :: Возникает при проверке результата ConsolepFindResolution, которая выполняет поиск разрешения в списке. |
|
ConsoleGraphicalGetConsoleResolution :: Возникает при проверке значения переменной блока входных параметров. |
|
ConsoleGraphicalGetOriginalResolution :: Возникает при проверке значения переменной блока входных параметров. |
|
ConsoleGraphicalGetOriginalFormat :: Возникает при проверке значения переменной блока входных параметров. |
|
ConsoleGraphicalClearPixels :: Возникает при проверке значения переменной блока входных параметров. |
|
ConsoleGraphicalReadPixels :: Возникает при проверке значения переменной блока входных параметров. |
|
ConsoleGraphicalWritePixels :: Возникает при проверке значения переменной блока входных параметров. |
|
ConsoleGraphicalGetFrameBuffer :: Возникает при проверке значения переменной блока входных параметров. |
|
BfiMapCharacterCodeToGlyphIndex :: Возникает при проверке входных параметров функции. |
|
ConsolePcatFindModeFromAllowed :: Возникает при проверке входных параметров функции. |
|
ConsolePcatFindTargetMode :: Возникает при ошибке функции ConsolePcatFindModeFromAllowed. |
|
FileTablePurgeEntry :: Возникает при проверке входных параметров функции. |
|
FileIoOpen :: Возникает при ошибке нахождения записи о файле в файловой системе. |
|
FatMount :: Возникает при отсутствии инструкции jmp (E9h) в первом байте загрузочного сектора раздела, то есть это не FAT!. |
|
FatpIoOperation :: Статус по умолчанию? |
|
EtfspCheckEtfs :: |
|
EtfspCheckCdfs :: Возникает при ошибке сравнения имен посредством функции EtfsCompareNames. |
|
UdfspGetNextDirectoryEntry :: Возникает при сравнении локального параметра (?) со значением 101h. |
|
NtfsMount :: Возникает как реакция на неправильное значение параметра в BPB. |
|
NtfsDecodeUsa :: . |
|
NtfspDeviceReadAtOffset :: Возникает при проверке входного параметра на определенное значение. |
|
NtfspDeviceWriteAtOffset :: Возникает при проверке входного параметра на определенное значение. |
|
NtfspFileRecordPurgeEntry :: Выставляется при проверке блока входных параметров. |
|
NetMount :: Выставляется при проверке входного параметра. |
|
WimpValidateWim :: Ошибка проверки длины wim-образа. |
|
BsdpGetLogControl :: Выставляется, если функция BlFileReadAtOffset вернула ошибку. |
|
BsdpWriteAtLogOffset :: Выставляется, если функция BlFileWriteAtOffset вернула ошибку. |
|
PxeGetBcdFilePath :: Выставляется при проверке на ноль второго параметра функции PxepGetPacketByType. |
|
PxeGetBcdFilePath :: Выставляется как реакция на ошибку в функции PxepFindOption. |
|
PxepGetInformation :: Выставляется при проверке на ноль второго параметра функции PxepGetPacketByType. |
|
BlUtlRegisterMulticastRoutine :: Появляется если параметр UtlMcDisplayMessageRoutine равен нулю. |
|
BlUtlRegisterProgressRoutine :: Появляется если параметр UtlProgressRoutine равен нулю. |
|
BlEnRegisterEventHandler :: Появляется если параметр EnSubsystemInitialized равен нулю. |
|
BlPdFreeData :: Возникает как реакция на ошибку в BlMmTranslateVirtualAddress, которая выполняет преобразование реальных и виртуальных адресов. |
|
TblDoNotPurgeEntry :: Функция всегда возвращает данный код. |
|
BlTftpQueryFileSize :: Возникает как ошибка при вычислении длины получаемого по TFTP файла |
|
TftppGetImageRegular :: Выставляется, если первый входной параметр функции равен нулю. |
|
TftppGetImageWindow :: Ставится при равенстве пятого входного параметра некоему значению. |
|
TftppReceive :: !!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|
TftppNegotiate :: Ставится при возврате в eax значения 0FFFFFFFFh из функции TftppSafeAtol. |
|
PxeApiService :: Возвращается в коде ошибки в любом случае. |
|
PxeSoftReboot :: Выставляется в случае значения переменной BlpPxeInfo, отличной от нуля. |
|
SipGetOrCreatePersistentState :: Ошибка выставляется при значении определенной переменной в блоке параметров BlpLibraryParameters значению 100h. |
|
SipInitializePhase1 :: Выставляет при вхождении подсистемы безопасности в некое незащищенное состояние. Пока не ясно, что это такое? |
|
SipGracefulCloseEnvironment :: Возникает при проверке некоего глобального статуса безопасности (?). |
|
BlTpmpFirmwareCall :: Возникает после проверки некоего глобального параметра, указывающего на номер функции работы с TPM. Если не укладываемся в диапазон функций, то ошибка. |
|
ImgPcatStartLegacyLoader :: Возникает при ошибках функций RtlUnicodeStringToAnsiString и BlGetBootOptionString. |
|
ImgPcatStartRestartBootcode :: Код ошибки в любом случае устанавливается на выходе функции. |
|
BlMmFreeHeap :: Выставляется при проверке параметра HapInitializationStatus на несоответствие значению 1. |
|
BlMmAllocateMemoryBlocks :: Выставляется при нулевом значении параметра MmBlockAllocatorInitialized. |
|
BlMmDeleteBlockAllocator :: Выставляется при нулевом значении параметра MmBlockAllocatorInitialized. |
|
BlpMmFreeMemoryBlocks :: Выставляется при нулевом значении параметра MmBlockAllocatorInitialized. |
|
MmBapPurgeBlockAllocatorTableEntry :: Возникает при проверке блока входных параметров. |
|
BcdGetElementDataWithFlags :: |
|
BcdDeleteElement :: |
|
BdpReconfigureDebuggerDevice :: Возникает при невозможности инициализировать контроллер шины 1394. |
|
BdSetupPciDevice :: Ошибка выставляется, когда функция поиска отладочного устройства BdSearchForPciDebuggingDevice ничего не находит. |
|
BdSendWaitContinue :: Возникает при проверке ошибок от множества функций, в том числе от BdMoveMemory и KdTransportMaxPacketSize. |
|
BdWriteBreakPointEx :: возникает при проверке статуса выполнения функции BdDeleteBreakPoint. |
|
BdRestoreBreakPointEx :: возникает при проверке статуса выполнения функции BdDeleteBreakPoint. |
|
FveStatusFromHResult :: Возникает при перекодировке определенных статусов Bitlocker. |
|
FveDatumCreateAndCopy :: |
|
FveDatumFree :: Возникает при проверке локальной переменной. |
|
Dbg1394_ReadPhyRegister :: Возникает как реакция на ошибку в функции BL_READ_REGISTER_ULONG. |
|
Dbg1394_InitializeController :: Возникает при невозможности инициализировать контроллер шины 1394. |
|
C0000002 STATUS_NOT_IMPLEMENTED Запрошенная операция не выполнена. |
BlDeviceEnumerateDeviceClass :: Выставляется при нулевом значении переменной BlockIoDeviceFunctionTable. |
BlpDeviceOpen :: Выставляет при неподдерживаемом типе устройства. |
|
BlockIoEnumerateDeviceClass :: Выставляется при нулевом значении переменной DiskDeviceFunctionTable. |
|
BlockIoCreate :: Выставляется при проверки серии глобальных переменных на нулевое значение. |
|
UdpEnumerateDeviceClass :: Единственный код возврата из функции. Вероятно говорит о том, что данная функция не доработана? |
|
UdpReset :: Единственный код возврата из функции. Вероятно говорит о том, что данная функция не доработана? |
|
ConsoleGraphicalSetTextResolution :: Выставляется, если первый параметр функции нулевой. |
|
BfiGetEbdtBitmapInformationFromSubTable :: |
|
BfiReadEbdtImage :: Выставляется при проверке значения третьего входного параметра функции. |
|
WimWrite :: Единственный код возврата из функции. Вероятно говорит о том, что данная функция не доработана? |
|
NtfspReadWriteAttributeEx :: Выставляется при нулевом значении седьмого входного параметра функции. |
|
BlTpmpFirmwareCall :: Выставляется при отсутствии необходимых функций для работы с TPM. |
|
BlTcgFwGetLog :: Выставляется при различных проблемах дешифровки проверки TPM/дешифровки содержимого. |
|
MmPaeInitializeTranslation :: Выставляется при ненулевом значении второго входного параметра функции. |
|
MmDefInitializeTranslation :: Выставляется при ненулевом значении второго входного параметра функции. |
|
RtlpImageDirectoryEntryToData32 :: |
|
RtlpImageDirectoryEntryToData64 :: |
|
FveStatusFromHResult :: Выставляется при результате 80004001 (Unable to activate partition) BitLocker. |
|
FveVmkInfoProcess :: Выставляется при проверке некой локальной переменной на значение 1? |
|
C0000005 STATUS_ACCESS_VIOLATION Инструкция обратилась к определенному адресу памяти и не может выполнить (чтение/запись/выполнение). |
BdTrap0d ::
|
BdTrap0e ::
|
|
C000000E STATUS_NO_SUCH_DEVICE Заданное устройство не существует. |
BmOpenDataStore :: возникает при неготовности PXE. |
BmResumeProbeLegacyHiberFile :: Не может получить доступ к устройству загрузки. |
|
BmReadBootIni :: Выставляется как реакция на ошибку в функции BlGetBootOptionDevice, которая получает различные опции для устройства загрузки. |
|
FileDeviceOpen :: Возникает как реакция на ошибку в функции BlDeviceOpen. |
|
DiskFirmwareOpen :: Устанавливается, если переменная NextDiskNumber больше FirmwareDisks. |
|
CdromFirmwareOpen :: Возникает при проверке блока параметров, на который указывает BlpRootDevice. |
|
FloppyFirmwareOpen :: Возникает, если переменная NextFloppyNumber больше значения 2. |
|
BlNetSoftReboot :: Возникает если переменная BlpBootDevice принимает нулевое значение. |
|
PxeGetBcdFilePath :: Выставляется при проверке переменной BlpPxeInfo на нулевое значение. |
|
AhGetBootEnvironmentDevice :: Выставляется при проверке локальной переменной после вызова BlDeviceEnumerateDeviceClass и при равенстве переменной BlpPxeInfo нулю. |
|
AhGetFilePath :: Генерируется при проверке выходных переменных функции BlGetDevice . |
|
PltpCheckDeviceExistence :: Устанавливается при ошибках доступа к устройству по шине. |
|
C000000F STATUS_NO_SUCH_FILE Файл не найден. Файл не существует. |
BmpReadBootIni :: Возникает при проверке параметра из блока параметров BlpPxeInfo. |
FvebpReadKeyFile :: Возникает при несовпадении при сравнении внутреннего параметра с аргументом. Скорее всего по факту считывания блока данных, относящего к ключевому файлу BitLocker’а из внешнего источника. |
|
FvebpSearchForKeyFileNoPrompt :: Возникает при ошибке выполнения функции BlDeviceEnumerateDeviceClass . Скорее всего отсутствует ключевой файл BitLocker’a. |
|
FileDeviceOpen :: Возникает при ошибке в функции BlpFileOpen. В глобальном плане система не может найти файл следующего этапа (зачастую это WindowsSystem32Winload.exe (Winload.efi)). |
|
RdpLoadImage :: Возникает при ошибке в функции RdpQueryImageSize. Вероятно, в глобальном плане это ошибка загрузки образа виртуального диска (ramdisk). |
|
RdpUnlockSourceDevice :: Устанавливается как реакция на ошибку функции BlGetDevice. Относится к виртуальному диску (ramdisk). |
|
RdpLoadFileToImage :: Возникает при ошибке функции BlGetFilePath. В глобальном плане функция монтирует файл в образ в памяти (ramdisk). |
|
FatpGetNextDirent :: Вероятно, возникает при вычислении следующего элемента файловой таблицы? |
|
EtfspSearchForDirent :: Появляется при ошибке функции EtfspGetDirent. В глобальном плане имеется в виду файловая система El Torito File System, используемая на CD диска. Скорее всего ошибка поиска записи в файловой системе. |
|
EtfspGetDirent :: Ошибка в получении записи файла из файловой системы El Torito File System. |
|
UdfspSearchForMatchingFid :: Возникает при проблемах получения записи о файле при помощи функции UdfspGetNextDirectoryEntry. Подразумевается файловая система udfs, которая может использоваться на широком спектре сменных носителей (чаще оптические диски). |
|
NtfspSearchForFileIndexEntryEx :: Генерируется при ошибке функции NtfspGetNextFileIndexEntry, которая выполняет поиск записи о файле в файловой системе ntfs. |
|
NtfspGetNextFileIndexEntry :: Генерируется при ошибке функции NtfspGetNextIndexEntry, которая выполняет поиск записи любого типа в файловой системе ntfs. |
|
WimOpen :: Возникает при работе с блоком данных WimFunctionTable. В глобальном плане это попытка открытия wim-образа инсталляции. |
|
WimpSearchForDirent :: Ошибка поиска файловой записи в образе. |
|
BlTftpQueryFileSize :: Устанавливается при ошибках длины удаленного файла. |
|
TftppReceive :: Генерируется при проверке входного параметра на значение 100h. |
|
C0000010 STATUS_INVALID_DEVICE_ REQUEST Указанный запрос является не допустимой операцией для целевого устройства. |
BlockIopReadWriteVirtualDevice :: |
UdpOpen :: |
|
UdpRead :: |
|
UdpWrite :: |
|
DeviceLogGetDeviceInfo :: |
|
NetOpen :: |
|
NetRead :: |
|
NetWrite :: |
|
C0000011 STATUS_END_OF_FILE Достигнут конец файла. Далее данной отметки в файле данных не обнаружено. |
NtfspGetNextIndexEntry :: Возникает при отсутствии следующего индекса в цепочке кластеров. Данных для файла больше нет.
|
NtfspReadWriteAttribute :: Возникает при проверке входных параметров функции. Скорее всего при проверке атрибутов файла.
|
|
C0000017 STATUS_NO_MEMORY Не хватает виртуальной памяти или файла подкачки для завершения операции. |
BlMmAllocateHeap :: Возникает, когда функция не смогла выделить кучу (блок) памяти коду произвольной стадии. Выделение памяти инициируется в более чем 180 (!) фрагментах кода Bootmgr, однако привести огромный список всех процедур пока не могу. Причина ошибки может быть:
|
C0000022 STATUS_ACCESS_DENIED Процесс запросил доступ к объекту, но не был наделен правами доступа. |
CdromFirmwareOpen :: Выставляется при проверке типа устройства загрузки, содержащемся в переменной BlpBootDevice
|
FileIoOpen :: Проверяется валидность и наличие DeviceID в таблице DmDeviceTable.
|
|
TftppReceive :: Выставляется при проверке входного аргумента функции на значение 100h (512).
|
|
C0000023 STATUS_BUFFER_TOO_SMALL Буфер слишком мал, чтобы уместить запись. Информация не записана в буфер. |
BmpProcessBadMemory :: Возникает обработка вызова BlPdQueryData
|
BmGetOptionList :: Функция предназначена для загрузки опций приложений из BCD. Возникает при обработке возвращаемых значений из BcdEnumerateAndUnpackElements
|
|
BmErrorGetData :: Возникает если ячейка loc_404607 = 0.
|
|
BmpHandleInvalidBcdEntryEvent :: возникает при обработке ошибки из BcdGetElementDataWithFlags
|
|
BmpBootIniConvertToOptionList :: возникает при обработке ошибки из AhCreateLoadOptionsList
|
|
FvebpLogError :: возникает при обработке ошибки из FveDatasetAppendDatum
|
|
PartitionEnumerateDeviceClass :: возникает при обработке ошибки из PartpEnumerateGptPartitions
|
|
PartpEnumerateMbrPartitions :: возникает при обработке результатов из PartpTraverseMbrPartitions
|
|
PartpEnumerateGptPartitions ::
|
|
DiskEnumerateDeviceClass ::
|
|
RdDeviceEnumerate ::
|
|
FatGetNextFile ::
|
|
EtfsGetNextFile ::
|
|
UdfsGetNextFile ::
|
|
NtfsGetNextFile ::
|
|
WimGetNextFile ::
|
|
PxeAddDhcpOption ::
|
|
BlLogData :: Функция предназначена для записи статуса операции в bootlog.
|
|
BlImgLoadImageWithProgressEx ::
|
|
ImgpLoadPEImage ::
|
|
BlPdQueryData ::
|
|
AhGetFilePath ::
|
|
ArcConvertStringIntegerToOption ::
|
|
ArcConvertStringToOption ::
|
|
BlTftpGetImage ::
|
|
BlTcgFwGetLog ::
|
|
ImgPcatStartLegacyLoader ::
|
|
BlMmGetMemoryMap ::
|
|
BiConvertRegistryDataToElement ::
|
|
BiEnumerateSubObjectElements ::
|
|
BiConvertBcdElements ::
|
|
FveWorksetCommit ::
|
|
FveGetExternalFileName ::
|
|
FveDatasetAppendDatum ::
|
|
FveKeyringCreate ::
|
|
FveKeyringCreateDataset ::
|
|
sub_44CBDF ::
|
|
C0000024 STATUS_OBJECT_TYPE_ MISMATCH Существует несоответствие между типом объекта, который требуется по запрошенной операции и типом объекта, указанным в запросе. |
FvebOpen ::
|
FvebpCheckAndAllocateFvebDevice ::
|
|
BiGetObjectDescription ::
|
|
BiConvertRegistryDataToElement ::
|
|
BiGetRegistryValue ::
|
|
sub_44CBDF ::
|
|
C0000032 STATUS_DISK_CORRUPT_ ERROR Структура файловой системы на диске повреждена и непригодна для использования. Запустите служебную программу chkdsk для тома. |
WimpinitilizeDecompressionWordspace ::
|
C0000033 STATUS_OBJECT_NAME_ INVALID Имя объекта является недействительным. |
VhdiLoadVerifyParentVhd ::
|
C0000034 STATUS_OBJECT_NAME_NOT_ FOUND Имя объекта не найдено. |
BiOpenKey :: Возникает как реакция на значение 0FFFFFFFFh в статусе ошибки при возврате из CmpFindSubKeyByName.
|
BiEnumerateSubKeys :: Возникает при сравнении какого то параметра с 0.
|
|
CmpFindSubKeyInLeafWithStatus :: .
|
|
CmpFindSubKeyByHashWithStatus :: .
|
|
CmpFindNameInListWithStatus :: .
|
|
C0000035 STATUS_OBJECT_NAME_ COLLISION Имя объекта уже существует. |
BlHtStore :: Возникает при обработке возвращенной ошибки из BlHtLookup
|
C000003F STATUS_CRC_ERROR Ошибка контрольной суммы. |
FveAesCcmDecrypt :: возникает как реакция на возвращаемые значения процедурой FvepAesCcmComputeUnencryptedTag
|
C0000040 STATUS_SECTION_TOO_BIG Указанный раздел слишком большой, чтобы быть отображенным на файл. |
ImgPcatStartLegacyLoader :: возникает по причине стартового адреса, меньше чем 7F000h
|
C0000059 STATUS_REVISION_MISMATCH Указывает на то, что два уровня редакции являются несовместимыми. |
BmpGetCustomAction :: возникает по причине стартового адреса, меньше чем 7F000h
|
BmErrorGetData :: Возникает при проверке каких-то данных, возвращаемых BlPdQueryData.
|
|
C000007A STATUS_PROCEDURE_NOT_FOUND Адрес процедуры не найден в библиотеке DLL. |
FveLibAllocZero :: возникает как реакция на несоответствие какого-то глобального параметра на входе процедуры.
|
FveLibUnseal :: возникает при проверке глобального параметра 46D1BC на входе процедуры.
|
|
FveLibRandom :: возникает при проверке глобального параметра 46D1BC на входе процедуры.
|
|
FveLibGetTime :: возникает при проверке глобального параметра 46D1BC на входе процедуры.
|
|
FveLibFree :: возникает при проверке глобального параметра 46D1BC на входе процедуры.
|
|
C000007B STATUS_INVALID_IMAGE_ FORMAT Образ либо не предназначен для выполнения в Windows, либо содержит ошибку в структуре. |
BmpResumeProbeLegacyHiberFile :: Генерируется при некорректном заголовке файла гибернации (hiberfil.sys).
|
BmpResumeReadLegacyHiberFileHeader :: Выставляется при проверке некоторых атрибутов файла гибернации (hiberfil.sys).
|
|
BmpResumeInvalidateLegacyHiberfile :: Выставляется при проверке некоторых атрибутов файла гибернации (hiberfil.sys).
|
|
BfiInitializeFonts :: Появляется при проверке входного параметра. Глобально функция относится к коду по работе со шрифтами.
|
|
BfiLoadFontFile :: Возникает проверке структуры считываемого файла шрифта.
|
|
BfiConvertIndexSubTable :: .
|
|
BfiReadCmapTable :: Возникает при ошибке чтения блоков данных из файла шрифтов.
|
|
BfiReadEdbtImage :: Возникает при ошибке чтения блоков данных из файла шрифтов.
|
|
BfiReadSegmentMapHeader :: Возникает при ошибке чтения блоков данных из файла шрифтов.
|
|
BfiValidateFontNameTable :: Возникает при проверке таблицы имен шрифта.
|
|
ImgpLoadPEImage :: Возникает при проверке загружаемого PE-образа.
|
|
ResInitializeMuiResources :: Возникает при попытке найти секции различного назначения в PE-образе.
|
|
ImgArchPcatLoadBootApplication :: Возникает при загружаемого образа на валидность.
|
|
RtlImageNtHeaderEx :: Генерируется при отсутствии корректной сигнатуры ‘MZ’ заголовка .exe-файла.
|
|
LdrRelocateImageWithBias :: Появляется при проверке загружаемого образа через функцию RtlImageNtHeader.
|
|
C0000095 STATUS_INTEGER_OVERFLOW Целочисленное переполнение. |
RtlULongAdd ::
|
RtlULongLongToULong ::
|
|
BmpReadBootIni ::
|
|
RtlULongLongAdd ::
|
|
RtlULongSub ::
|
|
RtlULongLongSub ::
|
|
RtlULongLongMult ::
|
|
FvebpCheckAndAllocateFvebDevice ::
|
|
BfiReadEblcIndexSubTables ::
|
|
RtlULongPtrAdd ::
|
|
UdfspValidateFileIcb ::
|
|
BlGetApplicationImageName ::
|
|
MmHapHeapAllocatorExtend ::
|
|
BlXmiTransformTextForXml ::
|
|
C0000098 STATUS_FILE_INVALID Раздел, на котором размещался файл был изменен извне, таким образом открытый файл больше не действителен. |
BmpGetSelectedBootEntry :: возникает при проверде данных, возвращенных из BmEnumerateBootEntries.
|
BmFwVerifySelfIntegrity :: возникает при обработке параметров из RtlImageNtHeader.
|
|
UdfspFileRead :: возникает при проверке каких то значений.
|
|
WimpReadResource :: .
|
|
WimpFixupSecurity :: .
|
|
WimpFixupDirectory :: .
|
|
WimpFixupStreams :: .
|
|
WimpRead :: .
|
|
WimpDecompress :: .
|
|
BlImgGetModuleName :: .
|
|
BlImgVerifySignedPeImageFileContents :: .
|
|
ImgpLoadPEImage :: .
|
|
BdpPopulateDataTableEntry :: .
|
|
C000009A STATUS_INSUFFICIENT_ RESOURCES Недостаточно системных ресурсов для завершения вызова API. |
Генерируется при ошибках функции выделения блока памяти BlMmAllocateHeap. Приводить список всех процедур не имеет особого смысла. Вероятно причиной является: недостаточное количество доступной физической памяти, физически неисправная память, попытка загрузиться со сжатого диска VHD(X), размер которого превышает 100 Гбайт. |
C000009C STATUS_DEVICE_DATA_ ERROR На жестком диске имеются сбойные блоки (сектора). |
BdSetupPciDevice ::
|
C000009D STATUS_DEVICE_NOT_CONNECTED Проблема с кабелем, диск не терминирован, или контроллер не смог получить доступ к жесткому диску. |
RcpGetEmsParameters :: относится к службе аварийного управления?
|
BdTrap :: .
|
|
C00000A0 STATUS_MEMORY_NOT_ALLOCATED Была сделана попытка освободить виртуальную память, которая не выделялась. |
BlImgUnloadBootApplication ::
|
C00000A2 STATUS_MEDIA_WRITE_ PROTECTED Запись на диск невозможна, потому что он защищен от записи. Снимите защиту от записи. |
BiDeleteKey ::
|
FveDecryptRegion :: .
|
|
FveEncryptRegion :: .
|
|
FveFilteredWrite :: .
|
|
C00000A3 STATUS_DEVICE_NOT_READY Привод не готов к использованию; возможно открыта дверца. Убедитесь, что диск вставлен и дверца привода закрыта. |
BlpDeviceOpen ::
|
C00000BA STATUS_FILE_IS_A_DIRECTORY Файл, который был указан как целевой, является директорией, а вызывающий код указал, что это может быть что угодно, но не каталог. |
FatRead ::
|
FatWrite :: .
|
|
NtfsRead :: .
|
|
NtfsWrite :: .
|
|
NtfsSetInformation :: .
|
|
C00000BB STATUS_NOT_SUPPORTED Запрос не поддерживается. |
BmProcessCustomAction :: возникает как реакция на выходную ошибку BmpGetCustomAction.
|
BmpCreateDevices :: возникает при работе с входными параметрами.
|
|
BmpBootIniParseLine :: возникает при возврате из strnicmp при сравнении с «c:».
|
|
PcatVesaGetVideoMode :: ??? не факт, маска.
|
|
PcatVesaGetVideoModeInformation :: .
|
|
BlpDeviceResolveLocate :: .
|
|
UdpSetInformation :: .
|
|
PartitionEnumerateDeviceClass :: .
|
|
PartpOpenMbrPartition :: .
|
|
PartpOpenGptPartition :: .
|
|
PartpCreatePartitionDeviceEntry :: .
|
|
PartpTraverseMbrPartitions :: .
|
|
VhdiBuildVhdData :: .
|
|
VhdiVerifyAndInitializeVhd :: .
|
|
VhdiVerifyVhdFooter :: Возникает при проверке завершающего блока vhd-образа, скорее всего параметра Current Size, то есть длины.
|
|
VhdiFileDeviceReadWrite :: .
|
|
VhdiReadVhdInformation :: .
|
|
DiskPcatGetDiskInformationEx :: .
|
|
BfiGetFontStrikeForCharacter :: .
|
|
BfiGetFontStrikeForResolution :: .
|
|
ConsoleTextSplitterGetTextState :: .
|
|
ConsoleTextSplitterGetTextResolution :: .
|
|
ConsoleTextSplitterSetTextResolution :: .
|
|
ConsoleGraphicalSplitterGetConsoleResolution :: .
|
|
ConsoleGraphicalSplitterGetGraphicalResolution :: .
|
|
ConsoleGraphicalSplitterGetOriginalResolution :: .
|
|
ConsoleGraphicalSplitterSetGraphicalResolution :: .
|
|
ConsoleGraphicalSplitterGetCharacterResolution :: .
|
|
ConsoleGraphicalSplitterGetTextCellResolution :: .
|
|
ConsoleGraphicalSplitterGetFormat :: .
|
|
ConsoleGraphicalSplitterGetOriginalFormat :: .
|
|
ConsoleGraphicalSplitterReadPixels :: .
|
|
ConsoleGraphicalSplitterGetFrameBuffer :: .
|
|
BfiGetTableOffsetAndSize :: .
|
|
NtfspReadWriteNonResidentAttributeEx :: .
|
|
BlNetSoftReboot :: .
|
|
ImgpGetFileSize :: .
|
|
ImgPcatStartLegacyLoader :: .
|
|
BlMmAllocatePagesInRange :: .
|
|
PltpAccessPciConfig :: .
|
|
RtlCompressWorkSpaceSizeLZNT1 :: .
|
|
RtlUnicodeToMultiByteN :: Всегда возвращает значение в eax (на выходе).
|
|
C00000BD STATUS_DUPLICATE_NAME Дубликат имени обнаружен в сети. |
SipGetOrCreatePersistentState ::
|
C00000C0 STATUS_DEVICE_DOES_NOT_ EXIST Данное устройство не существует. |
ImgpCopyApplicationBootDevice ::
|
BlTpmpHardwarePresent ::
|
|
C00000E4 STATUS_INTERNAL_DB_CORRUPTION Запрошенная операция не может быть завершена из-за катастрофического сбоя носителя или повреждении структуры данных на диске. |
FveInitializeCrypto ::
|
sub_44CBDF :: возникает как реакия на выходной параметр GveDatumKeyGetSize
|
|
C00000E9 STATUS_UNEXPECTED_IO_ ERROR Если возвращается ошибка ввода-вывода, которая не определена в стандартном фильтре FsRtl, она конвертируется в данный код. Непредвиденная ошибка ввода-вывода. Скорее всего проблемы с чтением носителя. |
FvebpEndTpmBinding ::
|
BlockIoPcatExtendedInt13 :: Выдается при проблемах чтения с устройства. Сигнализирует о проблемах чтения с устройства.
|
|
BlockIoPcatConventionalInt13 :: Выводится при возникновении проблем чтения с загрузочного носителя.
|
|
DiskPcatGetLegacyGeometry ::.
|
|
DiskPcatGetDiskInformationEx ::.
|
|
UdfspFileRead ::.
|
|
UdfspVolumeRead ::.
|
|
NtfspGetNextIndexEntry ::.
|
|
C00000F0 STATUS_INVALID_PARAMETER_2 Неверный параметр был передан функции в качестве второго аргумента. |
RtlAnsiStringToUnicodeString ::
|
RtlUnicodeStringToAnsiString ::
|
|
C00000F7 STATUS_INVALID_PARAMETER_9 Неверный параметр был передан функции в качестве девятого аргумента. |
InitializeLibrary ::
|
C0000103 STATUS_NOT_A_DIRECTORY Запрошенный открытый файл не является каталогом. |
BlFileGetNextFile ::
|
C0000106 STATUS_NAME_TOO_LONG Указанное имя строки слишком длинное. Невозможно использовать в целевой функции. |
BiEnumerateSubKeys ::
|
C0000120 STATUS_CANCELLED Запрос ввода-вывода был отменен. |
BmpLaunchBootEntry :: Возникает при расшифровке ошибок от функции DmDisplayDumpError, которая выводит на экран меню ошибок.
|
BmUpdateMulticastMessage :: Появляется как реакция на любую возвращенную функцией OsxmlResultHasAction ошибку.
|
|
BmDisplayFveRecovery :: Появляется при возникновении проблем с удаленной консолью.
|
|
C0000141 STATUS_INVALID_ADDRESS Дескриптор адреса недействителен. |
BlFileGetNextFile ::
|
C000014C STATUS_REGISTRY_CORRUPT Структура одного из файлов, содержащего данные реестра, повреждена; Образ файла в памяти поврежден; или файл не может быть восстановлен, поскольку резервная копия или журнал отсутствуют или повреждены. |
::
|
C000014F STATUS_UNRECOGNIZED_ VOLUME Том не содержит распознаваемую файловую систему. Убедитесь, что все необходимые драйверы файловой системы были загружены и том не поврежден. |
::
|
C0000184 STATUS_INVALID_DEVICE_ STATE Устройство не находится в допустимом состоянии для выполнения запроса. |
::
|
C0000185 STATUS_IO_DEVICE_ ERROR Устройство ввода/вывода сообщает об ошибке ввода/вывода. |
???????? :: Появляется при таймаутах (чрезвычайно низкой скорости) чтения с загрузочного носителя. Подобное поведение характерно в случае физической неисправности загрузочного носителя (различного рода повреждениях жесткого/твердотельного накопителя).
|
PcatSetVideoMode :: Генерируется при ошибке проверки поддерживаемых видеоадаптером текстовых режимов.
|
|
SppGetByte :: Появляется при ошибках работы с последовательным портом.
|
|
BlpTpmInitialize :: Выставляется при ошибке функции TpmApiSetTpmCallback, которая тестирует наличие обработчика драйвера TPM.
|
|
FveStatusFromHResult :: Выставляется при обработке внутренних статусов BitLocker.
|
|
C0000190 STATUS_TRUST_FAILURE Ошибка входа в сеть. Узел проверки недоступен. |
::
|
C0000221 STATUS_IMAGE_CHECKSUM_MISMATCH Возможно образ файла поврежден. Контрольная сумма, указанная в заголовке, не совпадает с расчетной. |
::
|
C0000225 STATUS_NOT_FOUND Объект не найден. |
Общие причины:
Частные причины: |
BmpGetCustomAction :: Возникает, если функция BlpGetOptionIntegerList не находит опций для выбранной записи загрузки.
|
|
BmpTransferExecution :: Выставляется при обработке результатов функции BlPdQueryData, которая проверяет корректность параметров.
|
|
BlHtLookup :: Возникает при обработке хэш-таблицы.
|
|
BlHtGetNext :: Выставляется при поиске в хэш-таблице.
|
|
BlpmFreeMemoryBlocks :: Генерируется при поиске по битовой карте памяти.
|
|
BcdGetElementDataWithFlags :: Возникает как реакция на ошибку в функции BiOpenKey, вероятно предназначающейся для работы с ключами реестра или файлов, построенных на схожей основе.
|
|
BcdDeleteElement :: Возникает как реакция на ошибку в функции BiOpenKey, вероятно предназначающейся для работы с ключами реестра или файлов, построенных на схожей основе.
|
|
FveDatasetGetDatumHeader :: Возникает при проверке на корректность входных параметров. В глобальном плане функция относится к функционалу BitLocker’а.
|
|
FveKeyringGetDataset :: Возникает при проверке на корректность входных параметров. В глобальном плане функция относится к функционалу BitLocker’а.
|
|
FveDatumValidateCode :: Возникает при ошибке функции FveDatumGetDataSegment. В глобальном плане функция относится к функционалу BitLocker’а.
|
|
C0000229 STATUS_FAIL_CHECK Проверка не удалась. |
::
|
C0000242 STATUS_BAD_COMPRESSION_ BUFFER Указанный буфер содержит неправильно оформленные данные. |
::
|
C000025F STATUS_UNSUPPORTED_ COMPRESSION Указанный формат сжатия не поддерживается. |
::
|
C0000273 STATUS_NO_MORE_MATCHES Больше нет совпадений для текущего индекса перечисления. |
::
|
C0000354 STATUS_DEBUGGER_INACTIVE Попытка произвести действие с отладочным портом не удалась, порт находится в процессе удаления. |
::
|
C0000359 STATUS_INVALID_IMAGE_WIN_32 Указанный образа файла имеет неправильный формат; возможно это образ для 32-битной Windows. |
::
|
C000035A STATUS_INVALID_IMAGE_WIN_64 Указанный образа файла имеет неправильный формат; возможно это образ для 64-битной Windows. |
::
|
C0000420 STATUS_ASSERTION_FAILURE Произошла ошибка утверждения. |
::
|
C0000428 STATUS_INVALID_IMAGE_HASH Хэш для образа не найден в системных каталогах. Образ поврежден или подделан. |
ImgpValidateImageHash :: Проверка хэша кода самого модуля Bootmgr. При модификации кода исполняемого файла именно здесь выставляется ошибка.
|
C0000453 STATUS_RESTART_ BOOT_ APPLICATION Это приложение загрузки необходимо перезапустить. |
::
|
C0000718 STATUS_ALREADY_REGISTERED Функция обратного вызова уже зарегистрирована. |
::
|
C0000904 STATUS_FILE_TOO_LARGE Размер файла превышает допустимый и не может быть записан. |
::
|
C0140019 STATUS_ACPI_INVALID_TABLE Была сделана попытка использовать некорректную таблицу. |
::
|
C01A000A STATUS_LOG_BLOCK_INVALID Служба логгирования обнаружила недопустимый блок. |
::
|
C03A0002 STATUS_VHD_DRIVE_FOOTER_ CHECKSUM_ MISMATCH Некорректная контрольная сумма футера (завершающего блока) виртуального образа. |
::
|
C03A0003 STATUS_VHD_DRIVE_FOOTER_ CORRUPT Поврежденный футер (завершающий блок) виртуального образа. |
::
|
C03A0004 STATUS_VHD_FORMAT_UNKNOWN Некорректный формат виртуального образа. |
::
|
C03A0005 STATUS_VHD_FORMAT_ UNSUPPORTED_ VERSION Неподдерживаемая версия формата виртуального образа. |
::
|
C03A000B STATUS_VHD_INVALID_BLOCK_ SIZE Неправильный размер блока виртуального образа. |
::
|
C03A000C STATUS_VHD_BITMAP_MISMATCH Несоответствие битовой карты виртуального диска. |
::
|
C03A000E STATUS_VHD_CHILD_PARENT_ID_ MISMATCH Ошибка идентификатора ID виртуального образа. |
::
|
C03A0012 STATUS_VHD_INVALID_SIZE Некорректный размер виртуального образа. |
::
|
Выводы
Изучение внутренней структуры ошибок Bootmgr достаточно трудоемкое и кропотливое занятие, требующее огромного количества времени, а самое главное, недюжих знаний, каковыми я пока что не обладаю. Следствием этого, как Вы могли уже заметить, является тот факт, что далеко не все ошибки Bootmgr освещены достаточно подробно. В отсутствии вменяемой логики анализа исходного кода приходится изучать ошибки Bootmgr по ассемблерному листингу в отладчике. Вероятно, кто-то из профессионалов реверсинга может посоветовать восстанавливать исходные тексты на языке C/C++ для упрощения восприятия, но и данными, казалось бы, необходимыми знаниями я пока не наделен. Поэтому, статья находится в статусе альфа как не до конца проработанная, тем не менее, надеюсь, что даже в таком сыром виде будет полезна кому-либо в качестве плацдарма для изучения специфических, возникающих на начальной стадии Bootmgr, ошибок. Какие выводы можно сделать по данному материалу? Я думаю, основной вывод, который напрашивается: невозможно точно характеризовать возникающую ошибку Bootmgr и определенно сказать об причине её возникновения даже по числовому идентификатору NTSTATUS
, поскольку многие статусы имеют различные причины в различных функциях. Единственное что можно сделать, это попытаться по перебору возможных причин ошибки дойти до настоящего виновника сбоя, затем уже воспользовавшись для ошибки рекомендациями по устранению. Можно воспользоваться и общими алгоритмами, которые на каждом шагу можно встретить в Сети, однако не все из них действенны. Возможно, большинство ошибок, которые приведены в результирующей таблице, на практике никогда никому не встречались и скорее всего, в живой природе можно наблюдать значительно меньший диапазон ошибок, которые уже более-менее изучены и по которым написаны развернутые мануалы по устранению. Однако, судя по некоторым темам конференций, можно сказать, что раритетные ошибки всё же имеют место быть, поэтому в качестве отправной точки материал всё же пригодится.
The day just kept getting better!… I was in safe mode tidying up the loose ends of my compromised security ordeal only to be met with this message: "Windows 10 boot configuration data file is missing some required information File:'BCD error code " 0xc0000024
.
I would greatly appreciate any help that anyone can send my way. Note: I do have another working PC on hand here if there are tasks that I will need to access the internet for downloads, etc.
I found these commands online and tried with the following results.
From command prompt:
-
bootrec /fixmbr {The operation completed successfully}
-
bootrec /fixboot{The operation completed successfully}
-
bootrec /rebuildbcd {This may take a while…}
The message is there is no Windows installation to identify…operation was successful?
This computer is less than a year old and came with Windows 10 so I am at a loss here-confused. Any help would be super!
Overmind
9,7784 gold badges25 silver badges37 bronze badges
asked May 4, 2017 at 8:43
It certainly looks like your boot configuration data is corrupted. You might have done this unintentionally as you were,
in safe mode tidying up the loose ends of my compromised security
ordeal
I’d suggest you repair your system either using a DVD or USB stick containing Windows installation media. If have have a 64bit OS have the 64 bit windows installation media vice versa.
-
After booting from the media try to «Automatically repair your system» in advanced menu options.
-
Try perfoming the earlier commands agsin.
Any corrupted system files should be restored
answered May 4, 2017 at 10:40
xavier_fakeratxavier_fakerat
2,4742 gold badges11 silver badges23 bronze badges
0
The day just kept getting better!… I was in safe mode tidying up the loose ends of my compromised security ordeal only to be met with this message: "Windows 10 boot configuration data file is missing some required information File:'BCD error code " 0xc0000024
.
I would greatly appreciate any help that anyone can send my way. Note: I do have another working PC on hand here if there are tasks that I will need to access the internet for downloads, etc.
I found these commands online and tried with the following results.
From command prompt:
-
bootrec /fixmbr {The operation completed successfully}
-
bootrec /fixboot{The operation completed successfully}
-
bootrec /rebuildbcd {This may take a while…}
The message is there is no Windows installation to identify…operation was successful?
This computer is less than a year old and came with Windows 10 so I am at a loss here-confused. Any help would be super!
Overmind
9,7784 gold badges25 silver badges37 bronze badges
asked May 4, 2017 at 8:43
It certainly looks like your boot configuration data is corrupted. You might have done this unintentionally as you were,
in safe mode tidying up the loose ends of my compromised security
ordeal
I’d suggest you repair your system either using a DVD or USB stick containing Windows installation media. If have have a 64bit OS have the 64 bit windows installation media vice versa.
-
After booting from the media try to «Automatically repair your system» in advanced menu options.
-
Try perfoming the earlier commands agsin.
Any corrupted system files should be restored
answered May 4, 2017 at 10:40
xavier_fakeratxavier_fakerat
2,4742 gold badges11 silver badges23 bronze badges
0
Содержание
- Ошибка 0xc0000034 в Windows: причины возникновения и способы решения
- Причины и решения
- Решение
- Устранение ошибки 0xc0000034 в Windows 10
- Заключение
- Исправить код ошибки BCD 0xc0000034 в Windows (решено)
- Выполнить chkdsk
- Ремонт Bootrec
- Загрузитесь в среду восстановления с помощью установочного носителя Windows.
- Что делать при появлении ошибки «The boot configuration data file is missing some required information» или 0xc0000034 в Windows 8, 8.1, 10?
- Исправляем ошибку 0xc0000034
- Дополнительные способ #1
- Дополнительные способ #2
- Код ошибки 0xc0000034 файл BCD в Windows 10
- Как исправить код ошибки 0xc0000034 BCD в Windows 10
- Ошибка в Windows 10 – 0xc0000034 и как от неё избавиться
- Как войти в режим восстановления?
- Как восстановить загрузчик и избавиться от ошибки 0xc0000034?
Ошибка 0xc0000034 в Windows: причины возникновения и способы решения
Возникновение критических ошибок, по большей части, предвещает определённые процессы в операционной системе, которые могут натолкнуть пользователя на мысль, что в работе компьютера имеются проблемы. Если своевременно обращать внимание на незначительные (на взгляд многих пользователей) мелочи, например, кратковременные зависания системы, несвойственные обычной загрузки звуки, появления ошибочных записей в журнале Windows, то большую часть возможных проблем удастся избежать, решив их на профилактическом уровне, а не постфактум. Это утверждение относится и к рассматриваемой в настоящей статье ошибке с кодом 0xc0000034, которая достаточно часто терроризирует пользователей Windows 10, но встречается и в более ранних версиях. В чём причины её возникновения? А главное, какие существуют способы её решения? Обо всём об этом и пойдёт речь далее.
Исправление ошибки 0xc0000034 в Windows.
Причины и решения
Итак, код 0xc0000034 прямо указывает на то, что операционная система не может провести штатную загрузку, вследствие повреждения необходимых для этого файлов загрузочного сектора или их фактического отсутствие. В качестве возможных причин можно привести десятки различных сценариев, большинство из которых носят стандартизированный характер, например:
Как видно, большинство из приведённых сценариев характеризуется некорректными действиями самого пользователя, что в некоторой степени облегчает определение причинно-следственной связи, а именно это и есть ключ к решению любой проблемы. Вывод из сказанного один – первостепенная задача пользователя вернуть работоспособность загрузочного сектора, и уже после этого начать искать первопричину всего произошедшего.
Решение
В силу того обстоятельства, что ошибка с кодом 0xc0000034 (то есть повреждение загрузчика) нивелирует все попытки загрузиться на рабочий стол, в том числе это распространяется и на загрузку в безопасном режиме, для исправления потребуется загрузочный носитель с операционной системой Windows. Речь идёт не о переустановки Windows, а лишь в использовании среды восстановления. Да, кто-то может отметить, что попасть в данную среду можно и без загрузочного носителя, но, к сожалению, в рамках решения данного BSOD сделать это будет проблематично. Итак, вставьте загрузочный носитель в соответствующий порт и сделайте следующее:
Стоит отметить, что для решения проблемы необязательно использовать ту же версию операционной системы, что установлена на целевом компьютере, но соответствие версий всё же в приоритете.
В зависимости от степени повреждения загрузочного сектора, применение лишь этих средств может привести к полному решению возникших проблем. В случае если ситуация не нашла своего решения, следует перейти к более сложному варианту.
2 вариант. Для работы будет использовать средство Bootrec.exe с параметром «/RebuildBcd» и при необходимости с параметром «/FixMbr»:
В качестве альтернативного варианта просто нажмите на сочетание клавиш «Shift+F10» в первом установочном окне.
Выполнение данной команды инициирует поиск установленных на выбранном носителе совместимых операционных систем с последующим добавлением их конфигуратора загрузки в загрузочный сектор целевого образа Windows. После появления сообщения об успешной замене конфигуратора, закройте консоль командной строки и перезагрузите компьютер. Если проблема сохранилась, то попробуйте использовать средство «Bootrec.exe» с ранее анонсированным параметров «FixMbr» для перезаписи конфигуратора.
Устранение ошибки 0xc0000034 в Windows 10
Ошибка 0xc0000034 в Windows 10 при включении и загрузке возникает на порядок реже, чем в Windows XP, 7, 8, так как в ней встроен расширенный функционал для восстановления работоспособности системы. Если пользователь вручную не отключал «Восстановление системы» в ОС, то Виндовс по умолчанию будет периодически создавать резервные копии системных файлов, в том числе и загрузчика. А сама загрузочная запись при этом хранится на скрытом диске (в «Проводнике» он не виден). Именно поэтому при возникновении ошибки 0xc0000034 достаточно несколько раз перезагрузить ПК – система автоматически выполнит восстановление критически важных системных файлов.
Если же это не помогает, то есть, повреждены и загрузчик, и файлы, отвечающие за запуск системы в режиме восстановления, то без загрузочного накопителя и в этом случае не обойтись. И необходим DVD-диск или флешка именно с Windows 10, причём той же разрядности (32 или 64 бита), что и установленная на ПК система.
После загрузки с загрузочного накопителя потребуется выполнить следующее:
При этом может появиться запрос на добавление новой записи в загрузочный лист. Необходимо указать параметр «А» и нажать Enter.
Если и этот вариант не помог, то можно ещё выполнить сброс Windows. Перед тем как исправить ошибку 0xc0000034 таким способом в Windows 10, необходимо учесть, что все ранее установленные программы и их настройки удалятся. Пользовательские данные это не затрагивает. Сброс выполняется следующим образом:
Будет предложено два варианта восстановления: с очисткой диска и без неё. Если выбрать первое, то все данные, хранившиеся на диске с системой, будут безвозвратно удалены. Поэтому сначала рекомендуется использовать второй вариант. Если восстановить загрузку не удастся, то тогда остаётся только восстановление с полной очисткой диска.
Заключение
После успешного восстановления работоспособности операционной системы следует приступить к поиску причин, которые и привели к возникновению рассмотренных проблем. В первую очередь обратите внимание на всё программное обеспечение, манипуляции с которыми предшествовали возникновению ошибки с кодом «0xc0000034». Проверьте компьютер на наличие вирусной активности, а также вспомните проводились ли какие изменения записей реестра. Также будет не лишним создать точку восстановления.
Источник
Исправить код ошибки BCD 0xc0000034 в Windows (решено)
Обновление: Перестаньте получать сообщения об ошибках и замедляйте работу своей системы с помощью нашего инструмента оптимизации. Получите это сейчас на эту ссылку
Код ошибки 0xc0000034 (Файл конфигурации загрузки отсутствует) является одним из раздражающих синий экран для смертей, связанных с некоторыми операционными системами Windows. Пользователи склонны сталкиваться с этим кодом ошибки при запуске Windows. Система не загружается, и экран становится синим или черным. Обычно нет способа решить эту проблему и нет другого объяснения того, что на самом деле означает эта ошибка и почему она возникает.
Одной из наиболее распространенных причин этой ошибки являются загрузочные файлы, которые отсутствуют, повреждены или неправильно настроены. Это может произойти из-за ошибки записи на жесткий диск, сбои питания, вирусы загрузочного сектора или ошибки в ручной настройке этих файлов.
Этот код ошибки появляется на синем экране смерти, и Windows не может нормально запускаться, что достаточно страшно для большинства пользователей. К счастью, есть решения для его безопасного ремонта. Если у вас возникли проблемы с исправлением ошибки 0xc0000034, пожалуйста, прочитайте, чтобы найти решения.
Как исправить код ошибки 0xc0000034 в Windows?
Выполнить chkdsk
Чтобы запустить chkdsk на компьютере под управлением Windows Vista для исправления этой ошибки загрузки, выполните следующие действия.
Перезагрузите компьютер с оригинальным установочным диском Windows Vista и загрузитесь с диска.
Нажмите Восстановить компьютер. Установите экран Windows Vista.
Нажмите Командная строка
Введите эту команду: chkdsk c: / r
Замените c: на букву диска, на котором установлена Windows Vista.
нажмите Ввод
Ремонт Bootrec
Шаг 1. Загрузите компьютер с установочного носителя Windows.
Шаг 3. В окне командной строки введите следующие команды и нажмите клавишу ВВОД после каждой команды.
Bootrec / fixmbr
Bootrec / Fixboot
Bootrec / scanos
Bootrec / rebuildbcdcdcd
Шаг 4: После завершения вышеуказанных команд введите команду exit и нажмите Enter. Затем перезагрузите компьютер, чтобы проверить, была ли исправлена ошибка 0xc0000034.
Загрузитесь в среду восстановления с помощью установочного носителя Windows.
Чтобы решение работало, вам нужен установочный носитель Windows, который может быть CD, DVD или USB-накопителем. Начните с установочного носителя, и когда вы нажимаете любую клавишу для загрузки с CD или DVD, нажмите любую клавишу на клавиатуре.
Нажмите Далее, а затем нажмите Восстановить компьютер.
В дополнение к Устранению неполадок> Дополнительные параметры.
Теперь нажмите Auto Repair и выберите вашу операционную систему из списка.
Теперь Windows проверит вашу операционную систему на наличие проблем и попытается решить их автоматически. Весь этот процесс может занять некоторое время. Расслабьтесь и расслабьтесь. Если Windows не может решить ваши проблемы с загрузкой, попробуйте следующее решение.
CCNA, веб-разработчик, ПК для устранения неполадок
Я компьютерный энтузиаст и практикующий ИТ-специалист. У меня за плечами многолетний опыт работы в области компьютерного программирования, устранения неисправностей и ремонта оборудования. Я специализируюсь на веб-разработке и дизайне баз данных. У меня также есть сертификат CCNA для проектирования сетей и устранения неполадок.
Источник
Что делать при появлении ошибки «The boot configuration data file is missing some required information» или 0xc0000034 в Windows 8, 8.1, 10?
Возникновение ошибки «The boot configuration data file is missing some required information» часто встречается в операционных системах Windows 8 и выше. Если вы допустили появление этой ошибки, то я вам помогу ее решить. Кстати, вот предыдущая статья об ошибке 0xc0000034.
О загрузчике Windows мы уже немного знаем из предыдущих статей, если система не может найти нужные файлы, которые предназначены для запуска системы, то, в итоге система вообще не запуститься. Файл может либо отсутствовать, либо он повреждён.
Исправляем ошибку 0xc0000034
Итак, дело конечно же в файле BCDboot, повреждение или отсутствие которого недопустимо. Также вы можете наблюдать следующую ошибку, код которой 0xc0000034:
Многие пользователи идут на крайние жертвы сразу: переустановка Windows, теряя всякие надежды. Кто пытается использовать восстановление системы тоже спешу огорчить – ничего не выйдет.
Я не хочу, чтобы после каждой подобной ошибки пользователи бежали переустанавливать Windows. Не спорю, это поможет, но с удаление всех установленных программ и файлов, которые у вас были на системном диске, а потом все это придётся восстанавливать. Проблему можно решить и другим методом, а именно – использование диска восстановления системы (или флешки).
Вы должны найти диск восстановления именно операционной системы, начиная с Windows 8, подойдёт и версия 8.1 и даже 10. Потом с этого диска (или флешки) загружаетесь, а потом идёте в восстановление системы и там в «Дополнительные параметры». Находите там пункт «Командная строка».
Если у вас каким-то образом не получилось найти командную строку, то нажмите сочетание клавиш Shift+F10.
В открывшейся командной строке вводим команду:
С помощью данной команды мы восстанавливаем среду загрузки в полном объеме. Файл BCDboot должен быть на месте.
Но, на практике всё равно возникает множество неудач. Одна из них заключается в том, что команда выше могла не помочь.
Дополнительные способ #1
Снова запускаемся в режиме восстановления и открываем командную строку, в которую вводим три команды:
bootsect.exe /nt60 all /force
Эти команды восстанавливают MBR и данные загрузки в чистом виде. В итоге команда должна помочь, и система запуститься. При неудаче читаем далее.
Дополнительные способ #2
Снова запускаем командную строку из среды восстановления и пишет команды:
bootsect.exe /nt60 all /force
Теперь выполняем следующий ряд команд, будьте очень внимательны:
Так как BCD пока что нет, первые две команды могут выдавать ошибки или еще что, но в этом нет ничего страшного.
Делаем следующую команду:
bcdedit.exe /create /d “Microsoft Windows” /application osloader
В итоге вы должны получить сообщение The entry was successfully created, означающее, что вы все верно делаете.
Полученные данные, которые в фигурных скобках, используем для ввода следующих команд:
И наконец, последний штрих, новая запись в загрузчике:
Теперь вы можете спокойно перезагрузиться с работающей системой. И не надо ничего переустанавливать. И все же, если ничего из этой статьи не помогло, то поможет только переустановка.
Источник
Код ошибки 0xc0000034 файл BCD в Windows 10
Ваш компьютер с Windows 10 слишком часто зависает при запуске и выдает стоп-код 0x0000034 BCD? Некоторые пользователи Windows 10 сталкиваются с этой проблемой, когда операционная система не загружается. Когда возникает проблема «синего экрана смерти», вы видите сообщение:
Восстановление, ваш компьютер или устройство необходимо восстановить: «В файле данных конфигурации загрузки отсутствует некоторая необходимая информация, файл:BCD, код ошибки: 0xc0000034».
Во-первых, следует понимать, что BCD обозначает данные конфигурации загрузки. Наиболее распространенной причиной этой ошибки являются поврежденные, неправильно настроенные или отсутствующие файлы загрузчика. И это может произойти из-за перебоев в питании, ошибок записи, вирусов загрузочного сектора. Иногда файлы загрузчика также становятся поврежденными, когда вы настраиваете их вручную. Давайте разберем, как исправить простым решением проблему BCD с кодом ошибки 0xc0000034 для Windows 10.
Как исправить код ошибки 0xc0000034 BCD в Windows 10
Шаг 1. Вы не можете загрузиться на рабочий стол Windows 10 и не имеете доступа к файлам даже через безопасный режим. По-этому, для начало нужно записать установочную USB флешку с Windows 10. Далее начните установку Windows 10 и когда дойдете до пункта «Установить«, нажмите снизу на «Восстановление системы«. После этого вас перекинет в дополнительные параметры загрузки Windows.
Шаг 2. Далее перейдите по параметрам Устранение неполадок > Дополнительные параметры и первым делом попробуйте «Восстановление при загрузке«. Если это не помогло, то запустите «Командная строка» и следуйте шагу 3.
Шаг 3. В окно командной строки задайте следующие команды, одну за другой, чтобы восстановить загрузчик:
Шаг 4. Когда вы перезагружаете компьютер, максимальная вероятность того, что Windows 10 будет загружаться нормально, но если она не загружается и в этот раз, повторите описанные выше шаги, чтобы запустить командную строку и введите эту команду:
Источник
Ошибка в Windows 10 – 0xc0000034 и как от неё избавиться
Исследуем очередную серьёзную ошибку в операционной системе Windows 10. На этот раз ее код – 0xc0000034 и это связано с файлами конфигурации загрузки, которых нет в наличии. Эта проблема может случиться по разным причинам, нов основном это неудачное обновление системы, а также принудительное прерывание обновления в процессе загрузки или установки.
Это еще не все. Существует множество программ, которые вносят изменения и в реестр, и в другие программы, для этого не предназначенные (для внесения изменения), поэтому от них тоже стоит избавиться. Ну и конечно же, вредоносные файлы, которые тоже являются причиной появления ошибки 0xc0000034.
Многие пользователи не замечают выданных им подсказок. Часто, синие экраны выдают их. В данном случае нам предлагают воспользоваться восстановлением системы, поэтому не нужно сразу бежать переустанавливать Windows. Итак, давайте уберем эту проблему с глаз долой. Загрузимся в режиме восстановления и восстановим загрузчик.
Как войти в режим восстановления?
Если вы не можете попасть в систему, то при загрузке компьютера нужно нажать клавиши Shift+F8, тогда вы попадёте в безопасный режим, но, иногда загрузка может происходит так быстро, что можно не успеть нажать нужные клавиши, тогда можно воспользоваться установочным диском или диском восстановления (подойдёт и флешка).
Вот статьи по созданию загрузочных флешек, советую с ними ознакомиться:
Вообще, даже если у вас есть старый диск, начиная с Windows 7, то этого будет достаточно, потому что нам нужно попасть в командную строку, не более.
Итак, как только вы загрузились с диска у вас, появится окно установки и слева внизу должна быть кнопка «Восстановление системы». Когда вы попали в среду восстановления выберите пункт «Диагностика» или «Поиск и устранения неисправностей».
Далее перейдите в «Дополнительные параметры» и найдите там пункт «Командная строка».
Если возможно, то при нажатии клавиш Shift+F10 можно вызвать командную строку, это во много раз быстрее.
Как восстановить загрузчик и избавиться от ошибки 0xc0000034?
Теперь там нужно в командной строке переключиться на английский язык, для этого нажмите Shift+Alt и после этого вводите команду:
Начнется небольшой анализ, по окончанию которого нам предлагают добавить систему в список загрузок и варианты ответа – Да и Нет и Всё, выбираем да, введя в окне Y.
Другие статьи по восстановлению загрузчика:
Если не помогло, читайте вот эту статью.
Надеюсь данная статья вам помогла. Отпишитесь в комментариях об успехах.
Источник
В современных версиях Windows информация для запуска операционной системы храните в файле конфигурации загрузки BCD (Boot Configuration Data). В этом файле хранятся данные об установленной Windows и параметрах ее загрузки. Если файл BCD удален или поврежден, Windows перестает загружаться. Также вы не сможете загрузить Windows, если повреждена MBR запись на жестком диске. В этой статье мы покажем, как корректно пересоздать файл хранилища данных конфигурации загрузки BCD и Master Boot Record (MBR) на примере Windows 10 и 11.
Ошибка “The boot configuration data file is missing some required information”.
Если файл BCD поврежден, отсутствует, если вы удалили / отформатировали отдельный раздел диска с меткой System Reserved (и размером 500Мб), специальный OEM раздел, то скорее всего при попытке загрузить Windows появится такое сообщение:
Your PC needs to be repaired
The Boot Configuration Data file is missing some required information
File: BootBCD
Error code: 0xc0000034
Также ошибка может выглядеть так:
The Boot Configuration Data for your PC is missing or contain errors.
File: bootbcd
Error Code: 0xc000000f
При повреждении MBR может быть ошибка No operating system found.
При появлении такой ошибки, в первую очередь попробуйте исправить проблему с загрузкой ОС с помощью режима автоматического восстановления (Startup Repair), который можно запустить из среды восстановления Windows RE.
Совет. Желательно периодически проверять работоспособность среды WinRE, и если она не работает, воспользоваться для ее восстановления методикой из статьи Восстановление среды WinRE в Windows.
Если автоматическое восстановление с помощью Startup Repair не помогло решить проблему, вам нужно загрузиться с загрузочного или установочного диска с Windows или в среде WinRe (Repair your computer -> Troubleshoot -> Advanced options -> Command Prompt), запустить командную строку и попробовать полностью пересоздать файл конфигурации загрузчика BCD и обновить MBR запись.
В этом примере я буду использовать установочный диск с Windows 10. Выберите в настройках BIOS первичным загрузочным устройство DVD диск или USB флешку с дистрибутивом Windows (в зависимости от того, с какого устройства вы хотите загрузить компьютер). Загрузитесь с установочного диска и на экране выбора языка установки нажмите сочетание клавиш Shift+F10. Перед вами откроется консоль командной строки.
Попробуйте восстановить BCD файл автоматически, выполнив команду:
bootrec /RebuildBCD
Перезагрузите компьютер и проверьте, загружается ли Windows (не забудьте изменить приоритет загрузочных устройств в BIOS). Если Windows не загружается, еще раз загрузитесь с установочного диска и откройте окно командной строки.
Идентификация разметки дисков и букв томов.
Очень важно. Все инструкции, описанные ниже, подходят для обычных компьютеров с BIOS (или загружающихся в режиме UEFI legacy) и MBR таблицей разделов. На компьютерах с UEFI прошивками для пересоздания BCD нужно использовать следующе инструкци: восстановлению EFI загрузчика в Windows 10 или восстановление удаленного EFI раздела в Windows.
Как понять, используется ли у вас BIOS или UEFI система? Проще всего проверить тип таблицы разделов на диске, на котором установлена Windows: GPT или MBR. Для этого выполните команду:
diskpart
Затем выполните:
list disk
- Если у диска в столбце Gpt указана звездочка (*), значит на диске используется таблица разделов GPT. Это значит, что у вас компьютер с UEFI, и для восстановления загрузчика нужно использовать статью по ссылке выше.
- Если в столбце GPT звездочка отсутствует, значит у вас на диске таблица разделов MBR, и вы можете продолжить следовать данной инструкции.
Далее вам нужно идентифицировать локальные диски и разделы системы (скорее всего назначенные им буквы дисков будут отличаться от дисков, которые вы видели при работе в Windows). Проще всего это сделать с помощью утилиты diskpart. Выполните следующие команды:
diskpart
list vol
Перед вами появится список разделов в системе, назначенные им буквы дисков и их размер. В нашем случае к компьютеру подключен 1 жесткий диск, на котором имеются всего два раздела:
- Раздел System Reserved размером 500 Мб, которому назначена буква диска C:. На этом небольшом служебном разделе по-умолчанию хранится файл конфигурации загрузки BCD.
- NTFS раздел размером 39 Гб, которому назначена буква D:. На этом разделе находится установленная Windows, программы и данные пользователя.
Важно. Запомните буквы дисков, назначенные разделам. Данные буквы дисков будут использоваться в последующих командах.
Восстановление загрузочного сектора MBR в Windows 10/11.
С помощью утилиты bootrec.exe можно перезаписать данные в MBR и загрузочном секторе, поместим в них ссылки на загрузчик Windows (bootloader).
Попробуйте перезаписать основную загрузочную запись (MBR) системного раздела для совместимости с загрузчиком Windows (существующая таблица разделов не перезаписывается).
bootrec.exe /fixmbr
Добавьте в загрузочные секторы диска код для загрузки файла bootmgr ( диспетчера загрузки Windows):
bootsect.exe /nt60 all /force
Прежде, чем идти далее, попробуйте автоматически пересоздать конфигурацию загрузчика BCD командами (это самый простой способ для начинающих):
bootrec /FixBoot – команда создает новый загрузочный сектор на системном разделе (перезаписывает загрузочную запись раздела PBR).
bootrec /ScanOs – просканировать диски и найти установленные копии Window, которых нет в хранилище конфигурации загрузкиВ случае успешного сканирования появится запрос на добавление записей о найденный Windows в BCD:
Scanning all disks for Windows installations.
Please wait, since this may take a while…
Successfully scanned Windows installations.
Total identified Windows installations: 1 [1] D:Windows
Add installation to boot list? Yes/No/All:bootrec /RebuildBcd – пересоздать хранилище конфигурации загрузкика, добавить в BCD найденные на компьютере копии Windows.
После этого перезагрузите компьютер и проверьте загрузку Windows. Если ОС не загружается, следуйте инструкции.
Если команда bootsect.exe не найдена, попробуйте указать полный путь к ней:
X:bootbootsect.exe /nt60 all /force
Пересоздание BCD файла загрузчика Windows 10.
Далее с помощью команды BCDedit нужно создать новый файл с конфигурацией загрузчика (предполагается, что у вас нет резервной копии BCD).
Ваши дальнейшие действия зависят от того, есть ли на диске отдельный раздел System Reserved или нет. В командной строке выполните:
diskpart
list vol
Проверьте, есть ли на диске компьютера системный раздел System Reserved. Его можно идентифицировать по метке тома, либо более точнее по размеру (500 Мб для Windows 10+, 350 Мб для Windows 8.1 и 100 Мб для Windows 7).
- Если раздела нет (вы случайно удалили его), можно хранить конфигурацию загрузчика BCD на основном диске, где находится каталог Windows. Чтобы создать конфигурационные файл загрузчика BCD и Bootmgr на указанном диске, выполните команду:
bcdboot C:Windows /S C:
Должно появится сообщение Boot files successfully created .
- Если раздел System Reserved у вас имеется, удалите старый (поврежденный) файл BCD и создайте вместо него новый:
del c:bootbcd
Если разделу System Reserved не назначена буква диска (по-умолчанию), вы можете сами назначить ее с помощью diskpart.
Запустите: diskpart
Выберите диск (в моем случае в компьютере имеется всего один жесткий диск, а вы можете вывести список дисков командой list disk): select disk 0
На скриншота выше видно, что раздел с меткой System Reserverd называется Volume 1. Выберите его: select volume 1
Назначьте букву диска (я назначил букву C:, но вы можете использовать любую другую букву, в этом случае измените путь в следующих командах): assign letter C:
exit
Создайте временный пустой файл bcd.tmp:
bcdedit /createstore c:bootbcd.tmp
Создайте запись для диспетчера загрузки bootmgr:
bcdedit.exe /store c:bootbcd.tmp /create {bootmgr} /d «Windows Boot Manager»
Импортируйте в BCD настройки из файла bcd.tmp:
bcdedit.exe /import c:bootbcd.tmp
Если команда bcdedit возвращает ошибку ( Ошибка создания хранилища. Отказано в доступе, access denied ) при доступе к файлу BCD, попробуйте снять с него атрибуты скрытый, read-only и системный:
attrib C:BootBCD -s -h -r
Укажите, что загрузчик находится на служебном разделе System Reserved (ему назначена буква диска C:)
bcdedit.exe /set {bootmgr} device partition=c:
Настройте время ожидания при выборе ОС:
bcdedit.exe /timeout 10
Удалите временный файл:
del c:bootbcd.tmp
Итак, вы создали пустой BCD файл с параметрами загрузчика. Теперь в него нужно добавить записи об установленных на диске Windows.
Создайте в хранилище BCD новую запись для Windows 10:
bcdedit.exe /create /d «Windows 10» /application osloader
Команда должна вернуть уникальный идентификатор (GUID) данной записи загрузчика:
The entry {8a7f03d0-5338-11e7-b495-c7fffbb9ccfs} was successfully created.
Укажем, что bootmgr должен использовать данную запись по-умолчанию (после истечения времени ожидания при выборе ОС, для загрузки будет используется именно эта запись).
bcdedit /default {8a7f03d0-5338-11e7-b495-c7fffbb9ccfs}
Теперь в новой записи загрузчика осталось указать пути к имеющейся на диске установленной копии Windows 10. Ранее мы определили, что в среде WinPE диску с установленной Windows присвоена буква D:. Используйте эту букву диска в следующих командах:
bcdedit.exe /set {default}device partition=d:
bcdedit.exe /set {default} osdevice partition=d:
bcdedit.exe /set {default} path Windowssystem32winload.exe
bcdedit.exe /set {default} systemroot Windows
Осталось сделать данную загрузочную запись в BCD видимой (по умолчанию она скрыта):
bcdedit.exe /displayorder {default} /addlast
Итак, мы полностью пересоздали загрузчик Windows 10 (обновили файл BCD и перезаписали загрузочный сектор MBR).
Теперь нужно сделать раздел, на котором находится файл BCD с конфигурацией загрузчика активным (BIOS передает управлению загрузчику ОС с активным MBR раздел). Допустим, разделы на вашем диске распределены так.
- Volume 0 – загрузочная/установочная флешка (ISO образ) диск, с которого вы загрузили компьютер
- Volume 1 – раздел System Reserved с BCD загрузчиком (размер 500 Мб)
- Volume 2 – раздел с файлами Windows (здесь находятся каталог Windows, Program Files, Users и т.д.)
В этом примере нужно сделать активным раздел Volume 1 (в вашем случае определите номер раздела самостоятельно). Сделать раздел активным можно с помощью diskpart:
diskpart
list disk
sel disk 0
list vol
select volume 1 (файлы bootmgr и «BootBCD» находятся на этом разделе)
active
exit
Проверьте, что раздел volume 1 теперь активный:
select vol 1
detail partition
Все верно (Active: Yes).
Теперь вы можете перезагрузить компьютер и убедится, что Windows загружается в штатном режиме.
При редактировании параметров загрузки Windows 11, Windows 10 или других версии системы в командной строке с помощью bcdedit.exe вы можете столкнуться с ошибкой: «Не удается открыть данные конфигурации загрузки. Не удается найти указанный файл», в результате задать необходимые настройки не получается.
В этой инструкции подробно о том, как решить проблему для систем Windows с UEFI или Legacy загрузкой и отредактировать конфигурацию загрузки BCD с помощью bcdedit.exe в случае, если вы столкнулись с рассматриваемой ошибкой.
Указание данных конфигурации загрузки BCD при использовании bcdedit.exe
Ошибка «Не удается открыть данные конфигурации загрузки. Не удается найти указанный файл» возникает, когда bcdedit.exe не может автоматически определить, где хранятся данные конфигурации загрузки BCD, как правило, в Windows 11 или Windows 10 проблема возникает после использования некоторых сторонних программ, изменяющих параметры загрузки, например, добавляющих себя в меню.
Исправить ситуацию можно, вручную указывая путь к файлу BCD при выполнении команд bcdedit.exe. Сам файл находится в разных расположениях, в зависимости от того, какой тип загрузки используется: UEFI или Legacy.
Для Legacy-систем установленных на диск MBR:
- Файл конфигурации загрузки находится в C:BootBCD
- Для изменения параметров конфигурации загрузки потребуется использовать следующий вариант написания команды:
bcdedit /store C:BootBCD команда_изменения_параметров
- Также может иметь смысл указать, к какой загрузочной записи она применяется, обычно — к системе, загружаемой по умолчанию. Пример команды для данного случая выглядит следующим образом:
bcdedit /store C:BootBCD /set {default} safeboot minimal
В случае с UEFI-системами конфигурация загрузки находится на скрытом разделе FAT32 по пути EFIMicrosoftBootBCD и чтобы указать этот путь при выполнении команд предварительно потребуется назначить букву диска для этого раздела. Полностью путь будет состоять из следующих шагов:
- Запустите командную строку от имени администратора и введите команды
diskpart list volume
- В списке томов посмотрите номер тома FAT32 с EFI-загрузчиком системы. Далее — N.
- Используйте команды (букву X можно заменить на другую букву диска):
select volume N assign letter=X exit
- Теперь для раздела с загрузчиком указана буква диска (в моем случае — X). И мы можем выполнять команды bcdedit следующим образом:
bcdedit /store X:EFIMicrosoftBootBCD команда_изменения_параметров
- Как и в предыдущем случае может иметь смысл указать конкретный пункт загрузки, к которому требуется применить параметры, обычно — {default}. Итоговый пример команды:
bcdedit /store X:EFIMicrosoftBootBCD /set {default} loadoptions DISABLE_INTEGRITY_CHECKS
После выполнения необходимых изменения, вы можете снова скрыть раздел с загрузчиком. Используйте шаги 1-3, заменив предпоследнюю команду на remove letter=X
Файлы BCD или данных конфигурации загрузки содержат инструкции, необходимые Windows для правильной загрузки. Если у вас возникла проблема с загрузкой компьютера, скорее всего, это вызвано неправильной конфигурацией или даже повреждением файлов BCD. Если при выполнении какой-либо команды в bcedit.exe вы получаете сообщение «Не удалось открыть хранилище данных конфигурации загрузки», то вот как это исправить.
Это могло произойти, если:
- Система не может найти указанный файл
- Запрошенное системное устройство не может быть найдено.
Мы предлагаем вам попробовать несколько проверок. Если вы откроете конфигурацию системы (msconfig), вы можете обнаружить, что данные загрузки отсутствуют. Сообщается, что основная причина этого заключается в том, что когда пользователь пытается выполнить двойную загрузку компьютера, программа установки заменяет загрузчик по умолчанию.
Не удалось открыть хранилище данных конфигурации загрузки
Прежде чем мы начнем, знайте это. В более ранних версиях Windows он хранился в файле Boot.ini. В операционной системе на основе EFI вы найдете запись в диспетчере загрузки прошивки EFI, который находится по адресу EFI Microsoft Boot Bootmgfw.efi.
Возможные варианты решения проблемы:
- Установите значение параметра входа в BCD
- Включить меню дополнительных параметров
- Восстановить BCD
Эти шаги можно выполнить, загрузив компьютер в расширенный режим восстановления. Он предлагает командную строку, которая доступна в расширенных параметрах.
Кроме того, перед настройкой параметров BCDEdit вам может потребоваться отключить или приостановить BitLocker и безопасную загрузку на компьютере.
1]Установите значение параметра ввода в двоично-десятичном формате.
Откройте командную строку от имени администратора
Выполните следующую команду:
bcdedit / set {current} Описание «TheNameYouWant»
Параметр / set устанавливает точку входа и позволяет системе доверять версии Windows, которой по умолчанию не доверяют.
2]Укажите файл BCD
В командной строке с повышенными привилегиями выполните:
bcdedit / хранить c: Boot BCD
Это даст вам список вариантов.
Выберите запуск:
bcdedit / store c: Boot BCD / set bootmenupolicy legacy
Перезагрузите компьютер, выберите Windows и сразу нажмите F8.
Когда вы выбираете устаревшую опцию, меню дополнительных опций (F8) становится доступным во время загрузки компьютера. Затем вы можете выбрать, в какую ОС загружаться.
3]Восстановить BCD
Если это не сработает, возможно, вам придется восстановить BCD. Вы можете вручную перестроить хранилище данных конфигурации загрузки с помощью инструмента Bootrec.exe в среде восстановления Windows или использовать этот бесплатный инструмент BCD Editor для восстановления BCD.
Надеюсь, это поможет вам решить проблему.
.