summaryrefslogtreecommitdiffstats
path: root/ShellPkg/Library/UefiHandleParsingLib
diff options
context:
space:
mode:
authorChen A Chen <chen.a.chen@intel.com>2016-12-29 14:52:45 +0800
committerRuiyu Ni <ruiyu.ni@intel.com>2017-01-11 10:07:07 +0800
commit0976f90821e2677a85d72e93de9dc140c2c99742 (patch)
tree7cd3cc52908afdfc602125adc1ecfb647a89e0d5 /ShellPkg/Library/UefiHandleParsingLib
parent0e88348e4b252cd68b88e1d87085208be2293651 (diff)
downloadedk2-0976f90821e2677a85d72e93de9dc140c2c99742.tar.gz
edk2-0976f90821e2677a85d72e93de9dc140c2c99742.tar.bz2
edk2-0976f90821e2677a85d72e93de9dc140c2c99742.zip
ShellPkg/HandleParsingLib: Add new API GetAllMappingGuids
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Signed-off-by: Chen A Chen <chen.a.chen@intel.com> Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
Diffstat (limited to 'ShellPkg/Library/UefiHandleParsingLib')
-rw-r--r--ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c b/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
index 780c4587b8..b4cd1b3bee 100644
--- a/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
+++ b/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
@@ -3079,3 +3079,55 @@ GetHandleListByProtocolList (
return (HandleList);
}
+
+/**
+ Return all supported GUIDs.
+
+ @param[out] Guids The buffer to return all supported GUIDs.
+ @param[in, out] Count On input, the count of GUIDs the buffer can hold,
+ On output, the count of GUIDs to return.
+
+ @retval EFI_INVALID_PARAMETER Count is NULL.
+ @retval EFI_BUFFER_TOO_SMALL Buffer is not enough to hold all GUIDs.
+ @retval EFI_SUCCESS GUIDs are returned successfully.
+**/
+EFI_STATUS
+EFIAPI
+GetAllMappingGuids (
+ OUT EFI_GUID *Guids,
+ IN OUT UINTN *Count
+ )
+{
+ UINTN GuidCount;
+ UINTN NtGuidCount
+ UINTN Index;
+
+ if (Count == NULL) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ NtGuidCount = 0;
+ if (PcdGetBool (PcdShellIncludeNtGuids)) {
+ NtGuidCount = ARRAY_SIZE (mGuidStringListNT) - 1;
+ }
+ GuidCount = ARRAY_SIZE (mGuidStringList) - 1;
+
+ if (*Count < NtGuidCount + GuidCount + mGuidListCount) {
+ *Count = NtGuidCount + GuidCount + mGuidListCount;
+ return EFI_BUFFER_TOO_SMALL;
+ }
+
+ for (Index = 0; Index < NtGuidCount; Index++) {
+ CopyGuid (&Guids[Index], mGuidStringListNT[Index].GuidId);
+ }
+
+ for (Index = 0; Index < GuidCount; Index++) {
+ CopyGuid (&Guids[NtGuidCount + Index], mGuidStringList[Index].GuidId);
+ }
+
+ for (Index = 0; Index < mGuidListCount; Index++) {
+ CopyGuid (&Guids[NtGuidCount + GuidCount + Index], mGuidList[Index].GuidId);
+ }
+
+ return EFI_SUCCESS;
+}