mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
Do not overwrite the disk signature, if we install the boot code into the mbr.
svn path=/trunk/; revision=17903
This commit is contained in:
parent
5f8481f284
commit
f8852fda40
2 changed files with 13 additions and 12 deletions
|
@ -1002,13 +1002,13 @@ InstallMbrBootCodeToDisk (PWSTR SrcPath,
|
|||
UNICODE_STRING Name;
|
||||
HANDLE FileHandle;
|
||||
NTSTATUS Status;
|
||||
PUCHAR OrigBootSector;
|
||||
PUCHAR NewBootSector;
|
||||
PPARTITION_SECTOR OrigBootSector;
|
||||
PPARTITION_SECTOR NewBootSector;
|
||||
|
||||
/* Allocate buffer for original bootsector */
|
||||
OrigBootSector = (PUCHAR)RtlAllocateHeap(ProcessHeap,
|
||||
0,
|
||||
SECTORSIZE);
|
||||
OrigBootSector = (PPARTITION_SECTOR)RtlAllocateHeap(ProcessHeap,
|
||||
0,
|
||||
sizeof(PARTITION_SECTOR));
|
||||
if (OrigBootSector == NULL)
|
||||
return(STATUS_INSUFFICIENT_RESOURCES);
|
||||
|
||||
|
@ -1052,9 +1052,9 @@ InstallMbrBootCodeToDisk (PWSTR SrcPath,
|
|||
|
||||
|
||||
/* Allocate buffer for new bootsector */
|
||||
NewBootSector = (PUCHAR)RtlAllocateHeap(ProcessHeap,
|
||||
0,
|
||||
SECTORSIZE);
|
||||
NewBootSector = (PPARTITION_SECTOR)RtlAllocateHeap(ProcessHeap,
|
||||
0,
|
||||
sizeof(PARTITION_SECTOR));
|
||||
if (NewBootSector == NULL)
|
||||
{
|
||||
RtlFreeHeap(ProcessHeap, 0, OrigBootSector);
|
||||
|
@ -1090,7 +1090,7 @@ InstallMbrBootCodeToDisk (PWSTR SrcPath,
|
|||
NULL,
|
||||
&IoStatusBlock,
|
||||
NewBootSector,
|
||||
SECTORSIZE,
|
||||
sizeof(PARTITION_SECTOR),
|
||||
NULL,
|
||||
NULL);
|
||||
NtClose(FileHandle);
|
||||
|
@ -1102,9 +1102,9 @@ InstallMbrBootCodeToDisk (PWSTR SrcPath,
|
|||
}
|
||||
|
||||
/* Copy partition table from old MBR to new */
|
||||
RtlCopyMemory ((NewBootSector + 446),
|
||||
(OrigBootSector + 446),
|
||||
4*16 /* Length of partition table */);
|
||||
RtlCopyMemory (&NewBootSector->Signature,
|
||||
&OrigBootSector->Signature,
|
||||
sizeof(PARTITION_SECTOR) - offsetof(PARTITION_SECTOR, Signature) /* Length of partition table */);
|
||||
|
||||
/* Free the original boot sector */
|
||||
RtlFreeHeap(ProcessHeap, 0, OrigBootSector);
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
/* C Headers */
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <stddef.h>
|
||||
|
||||
/* PSDK/NDK */
|
||||
#include <windows.h>
|
||||
|
|
Loading…
Reference in a new issue