Eu apenas tentei isso sozinho. Convenientemente, verifica-se que executar o bcdboot gera uma nova entrada de inicialização no BCD, para que possamos comparar facilmente a entrada antiga com a nova para ver o que mudou.
Usando o bcdedit, podemos ver que as opções device e osdevice são diferentes:
C:\Windows\system32>bcdedit /enum /v
Windows Boot Manager
--------------------
identifier {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device partition=\Device\HarddiskVolume1
description Windows Boot Manager
locale en-us
inherit {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
default {fde483f1-1482-11e2-90a1-00505698002c}
resumeobject {fde483f0-1482-11e2-90a1-00505698002c}
displayorder {fde483f1-1482-11e2-90a1-00505698002c}
{7409376c-f38e-11e1-bc89-00505698002c}
toolsdisplayorder {b2721d73-1db4-4c62-bf78-c548a880142d}
timeout 30
Windows Boot Loader
-------------------
identifier {fde483f1-1482-11e2-90a1-00505698002c}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7
locale en-us
inherit {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
osdevice partition=C:
systemroot \Windows
resumeobject {fde483f0-1482-11e2-90a1-00505698002c}
nx OptIn
detecthal Yes
Windows Boot Loader
-------------------
identifier {7409376c-f38e-11e1-bc89-00505698002c}
device unknown
path \Windows\system32\winload.exe
description Windows 7
locale en-US
inherit {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
recoverysequence {7409376d-f38e-11e1-bc89-00505698002c}
recoveryenabled Yes
osdevice unknown
systemroot \Windows
resumeobject {7409376b-f38e-11e1-bc89-00505698002c}
nx OptIn
Infelizmente, o bcdedit não nos diz como as informações são armazenadas, então vamos ter que olhar para o arquivo BCD em si. Como você já deve saber, o arquivo BCD é, na verdade, uma seção de registro, e normalmente é carregado em HKLM\BCD00000000
, para que possamos examiná-lo com regedit ou usando a exportação de registro.
O identificador de cada entrada é o nome da chave do registro que contém as configurações. As configurações em si são subchaves, organizadas na mesma ordem em que aparecem na saída do bcdedit. Acontece (sem surpresa) que em cada entrada, dispositivo e dispositivo os contém os mesmos dados, e esses dados são diferentes para a entrada de funcionamento do que para o antigo.
No meu sistema, isso aparece na entrada em funcionamento:
"Element"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,06,00,00,00,00,\
00,00,00,48,00,00,00,00,00,00,00,00,00,80,06,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,01,00,00,00,b0,5d,de,33,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
e isso aparece na entrada antiga:
"Element"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,06,00,00,00,00,\
00,00,00,48,00,00,00,00,00,00,00,00,00,50,06,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,01,00,00,00,b0,5d,de,33,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
Há apenas uma diferença. Vamos formatar a entrada antiga um pouco mais bem:
0000 00,00,00,00,00,00,00,00,
0008 00,00,00,00,00,00,00,00,
0010 06,00,00,00,00,00,00,00,
0018 48,00,00,00,00,00,00,00,
0020 00,00,50,06,00,00,00,00,
0028 00,00,00,00,00,00,00,00,
0030 00,00,00,00,01,00,00,00,
0038 b0,5d,de,33,00,00,00,00,
0040 00,00,00,00,00,00,00,00,
0048 00,00,00,00,00,00,00,00,
0050 00,00,00,00,00,00,00,00
Na nova entrada, o byte 0x0022 é 0x80 em vez de 0x50. Acontece que eu mudei a partição por 3MB, então eu suspeito que isso seja parte de um offset. Vamos ver o que acontece se eu mover outros 4MB (para um total de 7MB) e criar uma nova entrada BCD, vamos? OK ... o 0x80 se torna 0xC0, então isso é consistente.
Um palpite sensato seria que os oito bytes (ou talvez dezesseis?) iniciados em 0x0020 são o deslocamento de byte do início da partição. O valor de 0x06C00000 é 113246208 ou exatamente 108 MB; Examinando a tabela de partição, acho que é realmente o início da partição. QED. : -)