RtlZeroMemory(NewBootSector, BootSector->BytesPerSector);
/* Copy FAT16 BPB to new bootsector */
- memcpy(&NewBootSector->OEMName[0],
- &BootSector->OEMName[0],
- FIELD_OFFSET(FAT16_BOOT_SECTOR, Res2) - FIELD_OFFSET(FAT16_BOOT_SECTOR, OEMName));
+ memcpy(&NewBootSector->Jump[0],
+ &BootSector->Jump[0],
+ FIELD_OFFSET(FAT16_BOOT_SECTOR, Res2) - FIELD_OFFSET(FAT16_BOOT_SECTOR, Jump));
/* FAT16 BPB length (up to (not including) Res2) */
/* Write the boot sector signature */
RtlZeroMemory(&BootSector, sizeof(FAT16_BOOT_SECTOR));
memcpy(&BootSector.OEMName[0], "MSWIN4.1", 8);
+ /* FIXME: Add dummy bootloader for real */
+ BootSector.Jump[0] = 0xeb;
+ BootSector.Jump[1] = 0x3c;
+ BootSector.Jump[2] = 0x90;
BootSector.BytesPerSector = DiskGeometry->BytesPerSector;
BootSector.SectorsPerCluster = ClusterSize / BootSector.BytesPerSector;
BootSector.ReservedSectors = 1;
RtlZeroMemory(NewBootSector, BootSector->BytesPerSector);
/* Copy FAT16 BPB to new bootsector */
- memcpy(&NewBootSector->OEMName[0],
- &BootSector->OEMName[0],
- FIELD_OFFSET(FAT16_BOOT_SECTOR, Res2) - FIELD_OFFSET(FAT16_BOOT_SECTOR, OEMName));
+ memcpy(&NewBootSector->Jump[0],
+ &BootSector->Jump[0],
+ FIELD_OFFSET(FAT16_BOOT_SECTOR, Res2) - FIELD_OFFSET(FAT16_BOOT_SECTOR, Jump));
/* FAT16 BPB length (up to (not including) Res2) */
/* Write the boot sector signature */
RtlZeroMemory(&BootSector, sizeof(FAT16_BOOT_SECTOR));
memcpy(&BootSector.OEMName[0], "MSWIN4.1", 8);
+ /* FIXME: Add dummy bootloader for real */
+ BootSector.Jump[0] = 0xeb;
+ BootSector.Jump[1] = 0x3c;
+ BootSector.Jump[2] = 0x90;
BootSector.BytesPerSector = DiskGeometry->BytesPerSector;
BootSector.SectorsPerCluster = ClusterSize / BootSector.BytesPerSector;
BootSector.ReservedSectors = 1;
RtlZeroMemory(NewBootSector, BootSector->BytesPerSector);
/* Copy FAT32 BPB to new bootsector */
- memcpy(&NewBootSector->OEMName[0],
- &BootSector->OEMName[0],
- FIELD_OFFSET(FAT32_BOOT_SECTOR, Res2) - FIELD_OFFSET(FAT32_BOOT_SECTOR, OEMName));
+ memcpy(&NewBootSector->Jump[0],
+ &BootSector->Jump[0],
+ FIELD_OFFSET(FAT32_BOOT_SECTOR, Res2) - FIELD_OFFSET(FAT32_BOOT_SECTOR, Jump));
/* FAT32 BPB length (up to (not including) Res2) */
/* Write the boot sector signature */
RtlZeroMemory(&BootSector, sizeof(FAT32_BOOT_SECTOR));
memcpy(&BootSector.OEMName[0], "MSWIN4.1", 8);
+ /* FIXME: Add dummy bootloader for real */
+ BootSector.Jump[0] = 0xeb;
+ BootSector.Jump[1] = 0x58;
+ BootSector.Jump[2] = 0x90;
BootSector.BytesPerSector = DiskGeometry->BytesPerSector;
BootSector.SectorsPerCluster = ClusterSize / BootSector.BytesPerSector;
BootSector.ReservedSectors = 32;
#include <pshpack1.h>
typedef struct _FAT16_BOOT_SECTOR
{
- unsigned char magic0; // 0
- unsigned char res0; // 1
- unsigned char magic1; // 2
+ unsigned char Jump[3]; // 0
unsigned char OEMName[8]; // 3
unsigned short BytesPerSector; // 11
unsigned char SectorsPerCluster; // 13
typedef struct _FAT32_BOOT_SECTOR
{
- unsigned char magic0; // 0
- unsigned char res0; // 1
- unsigned char magic1; // 2
+ unsigned char Jump[3]; // 0
unsigned char OEMName[8]; // 3
unsigned short BytesPerSector; // 11
unsigned char SectorsPerCluster; // 13