\r
DevicePath = Multi;\r
DevicePathInst = GetNextDevicePathInstance (&DevicePath, &Size);\r
- Size -= sizeof (EFI_DEVICE_PATH_PROTOCOL);\r
\r
//\r
// Search for the match of 'Single' in 'Multi'\r
// If the single device path is found in multiple device paths,\r
// return success\r
//\r
- if (Size == 0) {\r
- return FALSE;\r
- }\r
-\r
if (CompareMem (Single, DevicePathInst, Size) == 0) {\r
+ gBS->FreePool (DevicePathInst);\r
return TRUE;\r
}\r
\r
gBS->FreePool (DevicePathInst);\r
DevicePathInst = GetNextDevicePathInstance (&DevicePath, &Size);\r
- Size -= sizeof (EFI_DEVICE_PATH_PROTOCOL);\r
}\r
\r
return FALSE;\r
} \r
} \r
} \r
+\r
+EFI_STATUS\r
+BdsLibGetHiiHandles (\r
+ IN EFI_HII_PROTOCOL *Hii,\r
+ IN OUT UINT16 *HandleBufferLength,\r
+ OUT EFI_HII_HANDLE **HiiHandleBuffer\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Determines the handles that are currently active in the database.\r
+ It's the caller's responsibility to free handle buffer.\r
+\r
+Arguments:\r
+\r
+ This - A pointer to the EFI_HII_PROTOCOL instance.\r
+ HandleBufferLength - On input, a pointer to the length of the handle buffer. On output, \r
+ the length of the handle buffer that is required for the handles found.\r
+ HiiHandleBuffer - Pointer to an array of EFI_HII_PROTOCOL instances returned.\r
+\r
+Returns:\r
+\r
+ EFI_SUCCESS - Get an array of EFI_HII_PROTOCOL instances successfully.\r
+ EFI_INVALID_PARAMETER - Hii is NULL.\r
+ EFI_NOT_FOUND - Database not found.\r
+ \r
+--*/\r
+{\r
+ UINT16 TempBufferLength;\r
+ EFI_STATUS Status;\r
+ \r
+ TempBufferLength = 0;\r
+ \r
+ //\r
+ // Try to find the actual buffer size for HiiHandle Buffer.\r
+ //\r
+ Status = Hii->FindHandles (Hii, &TempBufferLength, *HiiHandleBuffer);\r
+ \r
+ if (Status == EFI_BUFFER_TOO_SMALL) {\r
+ *HiiHandleBuffer = AllocateZeroPool (TempBufferLength);\r
+ Status = Hii->FindHandles (Hii, &TempBufferLength, *HiiHandleBuffer);\r
+ //\r
+ // we should not fail here.\r
+ //\r
+ ASSERT_EFI_ERROR (Status);\r
+ }\r
+ \r
+ *HandleBufferLength = TempBufferLength;\r
+ \r
+ return Status;\r
+ \r
+}\r