MdeModulePkg/PartitionDxe: Add impl of Partition Information Protocol

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Bret Barkelew <brbarkel@microsoft.com>
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
This commit is contained in:
Hao Wu
2017-06-20 10:51:53 +08:00
parent bce72b5837
commit 3a3d62d2e6
6 changed files with 132 additions and 85 deletions

View File

@ -1,7 +1,7 @@
/** @file /** @file
Decode an El Torito formatted CD-ROM Decode an El Torito formatted CD-ROM
Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR> Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at which accompanies this distribution. The full text of the license may be found at
@ -44,22 +44,23 @@ PartitionInstallElToritoChildHandles (
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
UINT64 VolDescriptorOffset; UINT64 VolDescriptorOffset;
UINT32 Lba2KB; UINT32 Lba2KB;
EFI_BLOCK_IO_MEDIA *Media; EFI_BLOCK_IO_MEDIA *Media;
CDROM_VOLUME_DESCRIPTOR *VolDescriptor; CDROM_VOLUME_DESCRIPTOR *VolDescriptor;
ELTORITO_CATALOG *Catalog; ELTORITO_CATALOG *Catalog;
UINTN Check; UINTN Check;
UINTN Index; UINTN Index;
UINTN BootEntry; UINTN BootEntry;
UINTN MaxIndex; UINTN MaxIndex;
UINT16 *CheckBuffer; UINT16 *CheckBuffer;
CDROM_DEVICE_PATH CdDev; CDROM_DEVICE_PATH CdDev;
UINT32 SubBlockSize; UINT32 SubBlockSize;
UINT32 SectorCount; UINT32 SectorCount;
EFI_STATUS Found; EFI_STATUS Found;
UINT32 VolSpaceSize; UINT32 VolSpaceSize;
EFI_PARTITION_INFO_PROTOCOL PartitionInfo;
Found = EFI_NOT_FOUND; Found = EFI_NOT_FOUND;
Media = BlockIo->Media; Media = BlockIo->Media;
@ -248,6 +249,10 @@ PartitionInstallElToritoChildHandles (
); );
} }
ZeroMem (&PartitionInfo, sizeof (EFI_PARTITION_INFO_PROTOCOL));
PartitionInfo.Revision = EFI_PARTITION_INFO_PROTOCOL_REVISION;
PartitionInfo.Type = PARTITION_TYPE_OTHER;
Status = PartitionInstallChildHandle ( Status = PartitionInstallChildHandle (
This, This,
Handle, Handle,
@ -257,10 +262,10 @@ PartitionInstallElToritoChildHandles (
BlockIo2, BlockIo2,
DevicePath, DevicePath,
(EFI_DEVICE_PATH_PROTOCOL *) &CdDev, (EFI_DEVICE_PATH_PROTOCOL *) &CdDev,
&PartitionInfo,
Catalog->Boot.Lba * (SIZE_2KB / Media->BlockSize), Catalog->Boot.Lba * (SIZE_2KB / Media->BlockSize),
Catalog->Boot.Lba * (SIZE_2KB / Media->BlockSize) + CdDev.PartitionSize - 1, Catalog->Boot.Lba * (SIZE_2KB / Media->BlockSize) + CdDev.PartitionSize - 1,
SubBlockSize, SubBlockSize
FALSE
); );
if (!EFI_ERROR (Status)) { if (!EFI_ERROR (Status)) {
Found = EFI_SUCCESS; Found = EFI_SUCCESS;

View File

@ -13,7 +13,7 @@
PartitionValidGptTable(), PartitionCheckGptEntry() routine will accept disk PartitionValidGptTable(), PartitionCheckGptEntry() routine will accept disk
partition content and validate the GPT table and GPT entry. partition content and validate the GPT table and GPT entry.
Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR> Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at which accompanies this distribution. The full text of the license may be found at
@ -205,19 +205,20 @@ PartitionInstallGptChildHandles (
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
UINT32 BlockSize; UINT32 BlockSize;
EFI_LBA LastBlock; EFI_LBA LastBlock;
MASTER_BOOT_RECORD *ProtectiveMbr; MASTER_BOOT_RECORD *ProtectiveMbr;
EFI_PARTITION_TABLE_HEADER *PrimaryHeader; EFI_PARTITION_TABLE_HEADER *PrimaryHeader;
EFI_PARTITION_TABLE_HEADER *BackupHeader; EFI_PARTITION_TABLE_HEADER *BackupHeader;
EFI_PARTITION_ENTRY *PartEntry; EFI_PARTITION_ENTRY *PartEntry;
EFI_PARTITION_ENTRY *Entry; EFI_PARTITION_ENTRY *Entry;
EFI_PARTITION_ENTRY_STATUS *PEntryStatus; EFI_PARTITION_ENTRY_STATUS *PEntryStatus;
UINTN Index; UINTN Index;
EFI_STATUS GptValidStatus; EFI_STATUS GptValidStatus;
HARDDRIVE_DEVICE_PATH HdDev; HARDDRIVE_DEVICE_PATH HdDev;
UINT32 MediaId; UINT32 MediaId;
EFI_PARTITION_INFO_PROTOCOL PartitionInfo;
ProtectiveMbr = NULL; ProtectiveMbr = NULL;
PrimaryHeader = NULL; PrimaryHeader = NULL;
@ -380,17 +381,25 @@ PartitionInstallGptChildHandles (
} }
ZeroMem (&HdDev, sizeof (HdDev)); ZeroMem (&HdDev, sizeof (HdDev));
HdDev.Header.Type = MEDIA_DEVICE_PATH; HdDev.Header.Type = MEDIA_DEVICE_PATH;
HdDev.Header.SubType = MEDIA_HARDDRIVE_DP; HdDev.Header.SubType = MEDIA_HARDDRIVE_DP;
SetDevicePathNodeLength (&HdDev.Header, sizeof (HdDev)); SetDevicePathNodeLength (&HdDev.Header, sizeof (HdDev));
HdDev.PartitionNumber = (UINT32) Index + 1; HdDev.PartitionNumber = (UINT32) Index + 1;
HdDev.MBRType = MBR_TYPE_EFI_PARTITION_TABLE_HEADER; HdDev.MBRType = MBR_TYPE_EFI_PARTITION_TABLE_HEADER;
HdDev.SignatureType = SIGNATURE_TYPE_GUID; HdDev.SignatureType = SIGNATURE_TYPE_GUID;
HdDev.PartitionStart = Entry->StartingLBA; HdDev.PartitionStart = Entry->StartingLBA;
HdDev.PartitionSize = Entry->EndingLBA - Entry->StartingLBA + 1; HdDev.PartitionSize = Entry->EndingLBA - Entry->StartingLBA + 1;
CopyMem (HdDev.Signature, &Entry->UniquePartitionGUID, sizeof (EFI_GUID)); CopyMem (HdDev.Signature, &Entry->UniquePartitionGUID, sizeof (EFI_GUID));
ZeroMem (&PartitionInfo, sizeof (EFI_PARTITION_INFO_PROTOCOL));
PartitionInfo.Revision = EFI_PARTITION_INFO_PROTOCOL_REVISION;
PartitionInfo.Type = PARTITION_TYPE_GPT;
if (CompareGuid (&Entry->PartitionTypeGUID, &gEfiPartTypeSystemPartGuid)) {
PartitionInfo.System = 1;
}
CopyMem (&PartitionInfo.Info.Gpt, Entry, sizeof (EFI_PARTITION_ENTRY));
DEBUG ((EFI_D_INFO, " Index : %d\n", (UINT32) Index)); DEBUG ((EFI_D_INFO, " Index : %d\n", (UINT32) Index));
DEBUG ((EFI_D_INFO, " Start LBA : %lx\n", (UINT64) HdDev.PartitionStart)); DEBUG ((EFI_D_INFO, " Start LBA : %lx\n", (UINT64) HdDev.PartitionStart));
DEBUG ((EFI_D_INFO, " End LBA : %lx\n", (UINT64) Entry->EndingLBA)); DEBUG ((EFI_D_INFO, " End LBA : %lx\n", (UINT64) Entry->EndingLBA));
@ -407,10 +416,10 @@ PartitionInstallGptChildHandles (
BlockIo2, BlockIo2,
DevicePath, DevicePath,
(EFI_DEVICE_PATH_PROTOCOL *) &HdDev, (EFI_DEVICE_PATH_PROTOCOL *) &HdDev,
&PartitionInfo,
Entry->StartingLBA, Entry->StartingLBA,
Entry->EndingLBA, Entry->EndingLBA,
BlockSize, BlockSize
CompareGuid(&Entry->PartitionTypeGUID, &gEfiPartTypeSystemPartGuid)
); );
} }

View File

@ -12,7 +12,7 @@
the legacy boot strap code. the legacy boot strap code.
Copyright (c) 2014, Hewlett-Packard Development Company, L.P.<BR> Copyright (c) 2014, Hewlett-Packard Development Company, L.P.<BR>
Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR> Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at which accompanies this distribution. The full text of the license may be found at
@ -129,18 +129,19 @@ PartitionInstallMbrChildHandles (
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
MASTER_BOOT_RECORD *Mbr; MASTER_BOOT_RECORD *Mbr;
UINT32 ExtMbrStartingLba; UINT32 ExtMbrStartingLba;
UINT32 Index; UINT32 Index;
HARDDRIVE_DEVICE_PATH HdDev; HARDDRIVE_DEVICE_PATH HdDev;
HARDDRIVE_DEVICE_PATH ParentHdDev; HARDDRIVE_DEVICE_PATH ParentHdDev;
EFI_STATUS Found; EFI_STATUS Found;
EFI_DEVICE_PATH_PROTOCOL *DevicePathNode; EFI_DEVICE_PATH_PROTOCOL *DevicePathNode;
EFI_DEVICE_PATH_PROTOCOL *LastDevicePathNode; EFI_DEVICE_PATH_PROTOCOL *LastDevicePathNode;
UINT32 BlockSize; UINT32 BlockSize;
UINT32 MediaId; UINT32 MediaId;
EFI_LBA LastBlock; EFI_LBA LastBlock;
EFI_PARTITION_INFO_PROTOCOL PartitionInfo;
Found = EFI_NOT_FOUND; Found = EFI_NOT_FOUND;
@ -225,6 +226,14 @@ PartitionInstallMbrChildHandles (
HdDev.PartitionSize = UNPACK_UINT32 (Mbr->Partition[Index].SizeInLBA); HdDev.PartitionSize = UNPACK_UINT32 (Mbr->Partition[Index].SizeInLBA);
CopyMem (HdDev.Signature, &(Mbr->UniqueMbrSignature[0]), sizeof (Mbr->UniqueMbrSignature)); CopyMem (HdDev.Signature, &(Mbr->UniqueMbrSignature[0]), sizeof (Mbr->UniqueMbrSignature));
ZeroMem (&PartitionInfo, sizeof (EFI_PARTITION_INFO_PROTOCOL));
PartitionInfo.Revision = EFI_PARTITION_INFO_PROTOCOL_REVISION;
PartitionInfo.Type = PARTITION_TYPE_MBR;
if (Mbr->Partition[Index].OSIndicator == EFI_PARTITION) {
PartitionInfo.System = 1;
}
CopyMem (&PartitionInfo.Info.Mbr, &Mbr->Partition[Index], sizeof (MBR_PARTITION_RECORD));
Status = PartitionInstallChildHandle ( Status = PartitionInstallChildHandle (
This, This,
Handle, Handle,
@ -234,10 +243,10 @@ PartitionInstallMbrChildHandles (
BlockIo2, BlockIo2,
DevicePath, DevicePath,
(EFI_DEVICE_PATH_PROTOCOL *) &HdDev, (EFI_DEVICE_PATH_PROTOCOL *) &HdDev,
&PartitionInfo,
HdDev.PartitionStart, HdDev.PartitionStart,
HdDev.PartitionStart + HdDev.PartitionSize - 1, HdDev.PartitionStart + HdDev.PartitionSize - 1,
MBR_SIZE, MBR_SIZE
(BOOLEAN) (Mbr->Partition[Index].OSIndicator == EFI_PARTITION)
); );
if (!EFI_ERROR (Status)) { if (!EFI_ERROR (Status)) {
@ -288,6 +297,14 @@ PartitionInstallMbrChildHandles (
// //
*((UINT32 *) &HdDev.Signature[0]) = 0; *((UINT32 *) &HdDev.Signature[0]) = 0;
ZeroMem (&PartitionInfo, sizeof (EFI_PARTITION_INFO_PROTOCOL));
PartitionInfo.Revision = EFI_PARTITION_INFO_PROTOCOL_REVISION;
PartitionInfo.Type = PARTITION_TYPE_MBR;
if (Mbr->Partition[0].OSIndicator == EFI_PARTITION) {
PartitionInfo.System = 1;
}
CopyMem (&PartitionInfo.Info.Mbr, &Mbr->Partition[0], sizeof (MBR_PARTITION_RECORD));
Status = PartitionInstallChildHandle ( Status = PartitionInstallChildHandle (
This, This,
Handle, Handle,
@ -297,10 +314,10 @@ PartitionInstallMbrChildHandles (
BlockIo2, BlockIo2,
DevicePath, DevicePath,
(EFI_DEVICE_PATH_PROTOCOL *) &HdDev, (EFI_DEVICE_PATH_PROTOCOL *) &HdDev,
&PartitionInfo,
HdDev.PartitionStart - ParentHdDev.PartitionStart, HdDev.PartitionStart - ParentHdDev.PartitionStart,
HdDev.PartitionStart - ParentHdDev.PartitionStart + HdDev.PartitionSize - 1, HdDev.PartitionStart - ParentHdDev.PartitionStart + HdDev.PartitionSize - 1,
MBR_SIZE, MBR_SIZE
(BOOLEAN) (Mbr->Partition[0].OSIndicator == EFI_PARTITION)
); );
if (!EFI_ERROR (Status)) { if (!EFI_ERROR (Status)) {
Found = EFI_SUCCESS; Found = EFI_SUCCESS;

View File

@ -4,7 +4,7 @@
of the raw block devices media. Currently "El Torito CD-ROM", Legacy of the raw block devices media. Currently "El Torito CD-ROM", Legacy
MBR, and GPT partition schemes are supported. MBR, and GPT partition schemes are supported.
Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR> Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at which accompanies this distribution. The full text of the license may be found at
@ -514,6 +514,8 @@ PartitionDriverBindingStop (
&Private->BlockIo, &Private->BlockIo,
&gEfiBlockIo2ProtocolGuid, &gEfiBlockIo2ProtocolGuid,
&Private->BlockIo2, &Private->BlockIo2,
&gEfiPartitionInfoProtocolGuid,
&Private->PartitionInfo,
Private->EspGuid, Private->EspGuid,
NULL, NULL,
NULL NULL
@ -526,6 +528,8 @@ PartitionDriverBindingStop (
Private->DevicePath, Private->DevicePath,
&gEfiBlockIoProtocolGuid, &gEfiBlockIoProtocolGuid,
&Private->BlockIo, &Private->BlockIo,
&gEfiPartitionInfoProtocolGuid,
&Private->PartitionInfo,
Private->EspGuid, Private->EspGuid,
NULL, NULL,
NULL NULL
@ -1092,10 +1096,10 @@ PartitionFlushBlocksEx (
@param[in] ParentBlockIo2 Parent BlockIo2 interface. @param[in] ParentBlockIo2 Parent BlockIo2 interface.
@param[in] ParentDevicePath Parent Device Path. @param[in] ParentDevicePath Parent Device Path.
@param[in] DevicePathNode Child Device Path node. @param[in] DevicePathNode Child Device Path node.
@param[in] PartitionInfo Child Partition Information interface.
@param[in] Start Start Block. @param[in] Start Start Block.
@param[in] End End Block. @param[in] End End Block.
@param[in] BlockSize Child block size. @param[in] BlockSize Child block size.
@param[in] InstallEspGuid Flag to install EFI System Partition GUID on handle.
@retval EFI_SUCCESS A child handle was added. @retval EFI_SUCCESS A child handle was added.
@retval other A child handle was not added. @retval other A child handle was not added.
@ -1111,10 +1115,10 @@ PartitionInstallChildHandle (
IN EFI_BLOCK_IO2_PROTOCOL *ParentBlockIo2, IN EFI_BLOCK_IO2_PROTOCOL *ParentBlockIo2,
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath, IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode, IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,
IN EFI_PARTITION_INFO_PROTOCOL *PartitionInfo,
IN EFI_LBA Start, IN EFI_LBA Start,
IN EFI_LBA End, IN EFI_LBA End,
IN UINT32 BlockSize, IN UINT32 BlockSize
IN BOOLEAN InstallEspGuid
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
@ -1203,7 +1207,12 @@ PartitionInstallChildHandle (
return EFI_OUT_OF_RESOURCES; return EFI_OUT_OF_RESOURCES;
} }
if (InstallEspGuid) { //
// Set the PartitionInfo into Private Data.
//
CopyMem (&Private->PartitionInfo, PartitionInfo, sizeof (EFI_PARTITION_INFO_PROTOCOL));
if ((PartitionInfo->System == 1)) {
Private->EspGuid = &gEfiPartTypeSystemPartGuid; Private->EspGuid = &gEfiPartTypeSystemPartGuid;
} else { } else {
// //
@ -1225,6 +1234,8 @@ PartitionInstallChildHandle (
&Private->BlockIo, &Private->BlockIo,
&gEfiBlockIo2ProtocolGuid, &gEfiBlockIo2ProtocolGuid,
&Private->BlockIo2, &Private->BlockIo2,
&gEfiPartitionInfoProtocolGuid,
&Private->PartitionInfo,
Private->EspGuid, Private->EspGuid,
NULL, NULL,
NULL NULL
@ -1236,6 +1247,8 @@ PartitionInstallChildHandle (
Private->DevicePath, Private->DevicePath,
&gEfiBlockIoProtocolGuid, &gEfiBlockIoProtocolGuid,
&Private->BlockIo, &Private->BlockIo,
&gEfiPartitionInfoProtocolGuid,
&Private->PartitionInfo,
Private->EspGuid, Private->EspGuid,
NULL, NULL,
NULL NULL

View File

@ -4,7 +4,7 @@
of the raw block devices media. Currently "El Torito CD-ROM", Legacy of the raw block devices media. Currently "El Torito CD-ROM", Legacy
MBR, and GPT partition schemes are supported. MBR, and GPT partition schemes are supported.
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR> Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at which accompanies this distribution. The full text of the license may be found at
@ -27,6 +27,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Protocol/DriverBinding.h> #include <Protocol/DriverBinding.h>
#include <Protocol/DiskIo.h> #include <Protocol/DiskIo.h>
#include <Protocol/DiskIo2.h> #include <Protocol/DiskIo2.h>
#include <Protocol/PartitionInfo.h>
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
#include <Library/UefiDriverEntryPoint.h> #include <Library/UefiDriverEntryPoint.h>
#include <Library/BaseLib.h> #include <Library/BaseLib.h>
@ -45,25 +46,26 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
// //
#define PARTITION_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('P', 'a', 'r', 't') #define PARTITION_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('P', 'a', 'r', 't')
typedef struct { typedef struct {
UINT64 Signature; UINT64 Signature;
EFI_HANDLE Handle; EFI_HANDLE Handle;
EFI_DEVICE_PATH_PROTOCOL *DevicePath; EFI_DEVICE_PATH_PROTOCOL *DevicePath;
EFI_BLOCK_IO_PROTOCOL BlockIo; EFI_BLOCK_IO_PROTOCOL BlockIo;
EFI_BLOCK_IO2_PROTOCOL BlockIo2; EFI_BLOCK_IO2_PROTOCOL BlockIo2;
EFI_BLOCK_IO_MEDIA Media; EFI_BLOCK_IO_MEDIA Media;
EFI_BLOCK_IO_MEDIA Media2;//For BlockIO2 EFI_BLOCK_IO_MEDIA Media2;//For BlockIO2
EFI_PARTITION_INFO_PROTOCOL PartitionInfo;
EFI_DISK_IO_PROTOCOL *DiskIo; EFI_DISK_IO_PROTOCOL *DiskIo;
EFI_DISK_IO2_PROTOCOL *DiskIo2; EFI_DISK_IO2_PROTOCOL *DiskIo2;
EFI_BLOCK_IO_PROTOCOL *ParentBlockIo; EFI_BLOCK_IO_PROTOCOL *ParentBlockIo;
EFI_BLOCK_IO2_PROTOCOL *ParentBlockIo2; EFI_BLOCK_IO2_PROTOCOL *ParentBlockIo2;
UINT64 Start; UINT64 Start;
UINT64 End; UINT64 End;
UINT32 BlockSize; UINT32 BlockSize;
BOOLEAN InStop; BOOLEAN InStop;
EFI_GUID *EspGuid; EFI_GUID *EspGuid;
} PARTITION_PRIVATE_DATA; } PARTITION_PRIVATE_DATA;
@ -321,10 +323,10 @@ PartitionComponentNameGetControllerName (
@param[in] ParentBlockIo2 Parent BlockIo2 interface. @param[in] ParentBlockIo2 Parent BlockIo2 interface.
@param[in] ParentDevicePath Parent Device Path. @param[in] ParentDevicePath Parent Device Path.
@param[in] DevicePathNode Child Device Path node. @param[in] DevicePathNode Child Device Path node.
@param[in] PartitionInfo Child Partition Information interface.
@param[in] Start Start Block. @param[in] Start Start Block.
@param[in] End End Block. @param[in] End End Block.
@param[in] BlockSize Child block size. @param[in] BlockSize Child block size.
@param[in] InstallEspGuid Flag to install EFI System Partition GUID on handle.
@retval EFI_SUCCESS A child handle was added. @retval EFI_SUCCESS A child handle was added.
@retval other A child handle was not added. @retval other A child handle was not added.
@ -340,10 +342,10 @@ PartitionInstallChildHandle (
IN EFI_BLOCK_IO2_PROTOCOL *ParentBlockIo2, IN EFI_BLOCK_IO2_PROTOCOL *ParentBlockIo2,
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath, IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode, IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,
IN EFI_PARTITION_INFO_PROTOCOL *PartitionInfo,
IN EFI_LBA Start, IN EFI_LBA Start,
IN EFI_LBA End, IN EFI_LBA End,
IN UINT32 BlockSize, IN UINT32 BlockSize
IN BOOLEAN InstallEspGuid
); );
/** /**

View File

@ -11,7 +11,7 @@
# This external input must be validated carefully to avoid security issue like # This external input must be validated carefully to avoid security issue like
# buffer overflow, integer overflow. # buffer overflow, integer overflow.
# #
# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR> # Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
# This program and the accompanying materials # This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at # which accompanies this distribution. The full text of the license may be found at
@ -82,6 +82,7 @@
## BY_START ## BY_START
## TO_START ## TO_START
gEfiDevicePathProtocolGuid gEfiDevicePathProtocolGuid
gEfiPartitionInfoProtocolGuid ## BY_START
gEfiDiskIoProtocolGuid ## TO_START gEfiDiskIoProtocolGuid ## TO_START
gEfiDiskIo2ProtocolGuid ## TO_START gEfiDiskIo2ProtocolGuid ## TO_START