Allocate a drive layout buffer that is large enough to keep a primary partition table (4 partition entries) plus 26 logical drives (2 partition entries each). Total 56 partition entries. This should be enough for everybody until we support GPT partition tables. ;-)
See issue #5270 for more details.

svn path=/trunk/; revision=48722
This commit is contained in:
Eric Kohl 2010-09-07 15:21:06 +00:00
parent 340a34cec4
commit 3100fc8995

View file

@ -701,6 +701,7 @@ AddDiskToList (HANDLE FileHandle,
ULONG i;
PLIST_ENTRY ListEntry;
PBIOSDISKENTRY BiosDiskEntry;
ULONG LayoutBufferSize;
Status = NtDeviceIoControlFile (FileHandle,
NULL,
@ -870,9 +871,15 @@ AddDiskToList (HANDLE FileHandle,
InsertAscendingList(&List->DiskListHead, DiskEntry, DISKENTRY, ListEntry, BiosDiskNumber);
/*
* Allocate a buffer for 26 logical drives (2 entries each == 52)
* plus the main partiton table (4 entries). Total 56 entries.
*/
LayoutBufferSize = sizeof(DRIVE_LAYOUT_INFORMATION) +
((56 - ANYSIZE_ARRAY) * sizeof(PARTITION_INFORMATION));
LayoutBuffer = (DRIVE_LAYOUT_INFORMATION*)RtlAllocateHeap (ProcessHeap,
0,
8192);
LayoutBufferSize);
if (LayoutBuffer == NULL)
{
return;
@ -887,7 +894,7 @@ AddDiskToList (HANDLE FileHandle,
NULL,
0,
LayoutBuffer,
8192);
LayoutBufferSize);
if (NT_SUCCESS (Status))
{
if (LayoutBuffer->PartitionCount == 0)