/** @file\r
Implementation for EFI_HII_DATABASE_PROTOCOL.\r
\r
-\r
-Copyright (c) 2007 - 2008, Intel Corporation\r
+Copyright (c) 2007 - 2010, Intel Corporation\r
All rights reserved. This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
for (Link = PackageList->FormPkgHdr.ForwardLink; Link != &PackageList->FormPkgHdr; Link = Link->ForwardLink) {\r
FormPackage = CR (Link, HII_IFR_PACKAGE_INSTANCE, IfrEntry, HII_IFR_PACKAGE_SIGNATURE);\r
PackageLength += FormPackage->FormPkgHdr.Length;\r
- if (PackageLength + *ResultSize + UsedSize <= BufferSize) {\r
+ if ((Buffer != NULL) && (PackageLength + *ResultSize + UsedSize <= BufferSize)) {\r
//\r
// Invoke registered notification if exists\r
//\r
@param PackageList A pointer to an EFI_HII_PACKAGE_LIST_HEADER\r
structure.\r
@param DriverHandle Associate the package list with this EFI handle.\r
+ If a NULL is specified, this data will not be associate\r
+ with any drivers and cannot have a callback induced.\r
@param Handle A pointer to the EFI_HII_HANDLE instance.\r
\r
@retval EFI_SUCCESS The package list associated with the Handle was\r
HiiNewPackageList (\r
IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
IN CONST EFI_HII_PACKAGE_LIST_HEADER *PackageList,\r
- IN CONST EFI_HANDLE DriverHandle,\r
+ IN CONST EFI_HANDLE DriverHandle, OPTIONAL\r
OUT EFI_HII_HANDLE *Handle\r
)\r
{\r
DatabaseRecord = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);\r
if (CompareGuid (\r
&(DatabaseRecord->PackageList->PackageListHdr.PackageListGuid),\r
- &PackageListGuid\r
- )\r
- ) {\r
+ &PackageListGuid) && \r
+ DatabaseRecord->DriverHandle == DriverHandle) {\r
return EFI_INVALID_PARAMETER;\r
}\r
}\r