11EFI_GUID FileExplorerGuid = EFI_FILE_EXPLORE_FORMSET_GUID;
17 MENU_OPTION_SIGNATURE,
24 FILE_EXPLORER_CALLBACK_DATA_SIGNATURE,
52 { 0x0, 0x0, 0x0, { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }
57 END_ENTIRE_DEVICE_PATH_SUBTYPE,
59 (UINT8)(END_DEVICE_PATH_LENGTH),
60 (UINT8)((END_DEVICE_PATH_LENGTH) >> 8)
65VOID *mLibStartOpCodeHandle =
NULL;
66VOID *mLibEndOpCodeHandle =
NULL;
69UINT16 mQuestionIdUpdate;
70CHAR16 mNewFileName[MAX_FILE_NAME_LEN];
71CHAR16 mNewFolderName[MAX_FOLDER_NAME_LEN];
72UINTN mNewFileQuestionId = NEW_FILE_QUESTION_ID_BASE;
73UINTN mNewFolderQuestionId = NEW_FOLDER_QUESTION_ID_BASE;
114 OUT EFI_STRING *Progress,
115 OUT EFI_STRING *Results
118 if ((Progress ==
NULL) || (Results ==
NULL)) {
119 return EFI_INVALID_PARAMETER;
123 return EFI_NOT_FOUND;
145 IN CONST EFI_STRING Configuration,
146 OUT EFI_STRING *Progress
149 if ((Configuration ==
NULL) || (Progress ==
NULL)) {
150 return EFI_INVALID_PARAMETER;
153 *Progress = Configuration;
154 return EFI_NOT_FOUND;
181 IN EFI_BROWSER_ACTION Action,
182 IN EFI_QUESTION_ID QuestionId,
185 OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
191 CHAR16 *NewFolderName;
195 NewFolderName =
NULL;
197 if ((Action != EFI_BROWSER_ACTION_CHANGING) && (Action != EFI_BROWSER_ACTION_CHANGED)) {
201 return EFI_UNSUPPORTED;
204 if (Action == EFI_BROWSER_ACTION_CHANGED) {
205 if ((Value ==
NULL) || (ActionRequest ==
NULL)) {
206 return EFI_INVALID_PARAMETER;
209 if (QuestionId == KEY_VALUE_CREATE_FILE_AND_EXIT) {
210 *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;
211 if (!
IsZeroBuffer (mNewFileName,
sizeof (mNewFileName))) {
213 ZeroMem (mNewFileName,
sizeof (mNewFileName));
217 if (QuestionId == KEY_VALUE_NO_CREATE_FILE_AND_EXIT) {
218 ZeroMem (mNewFileName,
sizeof (mNewFileName));
219 *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;
222 if (QuestionId == KEY_VALUE_CREATE_FOLDER_AND_EXIT) {
223 *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;
224 if (!
IsZeroBuffer (mNewFolderName,
sizeof (mNewFolderName))) {
226 ZeroMem (mNewFolderName,
sizeof (mNewFolderName));
230 if (QuestionId == KEY_VALUE_NO_CREATE_FOLDER_AND_EXIT) {
231 ZeroMem (mNewFolderName,
sizeof (mNewFolderName));
232 *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;
235 if (QuestionId == NEW_FILE_NAME_ID) {
236 NewFileName =
HiiGetString (gFileExplorerPrivate.FeHiiHandle, Value->string,
NULL);
237 if (NewFileName !=
NULL) {
238 StrCpyS (mNewFileName, MAX_FILE_NAME_LEN, NewFileName);
242 return EFI_INVALID_PARAMETER;
246 if (QuestionId == NEW_FOLDER_NAME_ID) {
247 NewFolderName =
HiiGetString (gFileExplorerPrivate.FeHiiHandle, Value->string,
NULL);
248 if (NewFolderName !=
NULL) {
249 StrCpyS (mNewFolderName, MAX_FOLDER_NAME_LEN, NewFolderName);
251 NewFolderName =
NULL;
253 return EFI_INVALID_PARAMETER;
257 if (QuestionId >= FILE_OPTION_OFFSET) {
263 if (gFileExplorerPrivate.ChooseHandler !=
NULL) {
264 NeedExit = gFileExplorerPrivate.ChooseHandler (gFileExplorerPrivate.RetDevicePath);
268 *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;
271 }
else if (Action == EFI_BROWSER_ACTION_CHANGING) {
273 return EFI_INVALID_PARAMETER;
276 if (QuestionId >= FILE_OPTION_OFFSET) {
279 if (EFI_ERROR (Status)) {
306 if (MenuEntry ==
NULL) {
311 if (MenuEntry->VariableContext ==
NULL) {
316 MenuEntry->Signature = MENU_ENTRY_SIGNATURE;
342 ASSERT (MenuNumber < MenuOption->MenuNumber);
344 List = MenuOption->Head.ForwardLink;
345 for (Index = 0; Index < MenuNumber; Index++) {
346 List = List->ForwardLink;
349 NewMenuEntry =
CR (List,
MENU_ENTRY, Link, MENU_ENTRY_SIGNATURE);
367 FileContext = (
FILE_CONTEXT *)MenuEntry->VariableContext;
369 if (!FileContext->IsRoot) {
370 if (FileContext->DevicePath !=
NULL) {
374 if (FileContext->FileHandle !=
NULL) {
375 FileContext->FileHandle->Close (FileContext->FileHandle);
379 if (FileContext->FileName !=
NULL) {
385 if (MenuEntry->DisplayString !=
NULL) {
386 FreePool (MenuEntry->DisplayString);
389 if (MenuEntry->HelpString !=
NULL) {
410 FreeMenu->Head.ForwardLink,
419 FreeMenu->MenuNumber = 0;
445 Status =
gBS->HandleProtocol (
447 &gEfiSimpleFileSystemProtocolGuid,
454 if (!EFI_ERROR (Status)) {
455 Status = Volume->OpenVolume (
464 return EFI_ERROR (Status) ?
NULL : File;
484 if (DevPath ==
NULL) {
488 Status =
gBS->LocateProtocol (
489 &gEfiDevicePathToTextProtocolGuid,
491 (VOID **)&DevPathToText
494 ToText = DevPathToText->ConvertDevicePathToText (
499 ASSERT (ToText !=
NULL);
523 ASSERT (Dest !=
NULL);
555 Status = FHand->GetInfo (
561 if (Status == EFI_BUFFER_TOO_SMALL) {
563 ASSERT (Buffer !=
NULL);
566 Status = FHand->GetInfo (
593 Index =
StrLen (FileName) - 1;
594 while ((FileName[Index] != L
'.') && (Index != 0)) {
598 return Index == 0 ?
NULL : &FileName[Index];
615 for (TmpStr = String; *TmpStr != L
'\0'; TmpStr++) {
616 if ((*TmpStr >= L
'A') && (*TmpStr <= L
'Z')) {
617 *TmpStr = (CHAR16)(*TmpStr - L
'A' + L
'a');
638 CHAR16 *InputFileType;
642 if (gFileExplorerPrivate.FileType ==
NULL) {
650 if (InputFileType ==
NULL) {
655 ASSERT (TmpStr !=
NULL);
695 if (((MAX_UINTN - Size1) < Size2) || ((MAX_UINTN - Size1 - Size2) <
sizeof (CHAR16))) {
699 MaxLen = (Size1 + Size2 +
sizeof (CHAR16))/
sizeof (CHAR16);
701 ASSERT (Str !=
NULL);
704 ASSERT (TmpStr !=
NULL);
707 if (!((*Str ==
'\\') && (*(Str + 1) == 0))) {
716 if ((*Ptr ==
'\\') && (*(Ptr + 1) ==
'.') && (*(Ptr + 2) ==
'.') && (*(Ptr + 3) == L
'\\')) {
727 StrCpyS (TmpStr, MaxLen, Ptr + 3);
728 StrCpyS (LastSlash, MaxLen - ((
UINTN)LastSlash - (
UINTN)Str) /
sizeof (CHAR16), TmpStr);
730 }
else if ((*Ptr ==
'\\') && (*(Ptr + 1) ==
'.') && (*(Ptr + 2) ==
'\\')) {
739 StrCpyS (TmpStr, MaxLen, Ptr + 2);
742 }
else if (*Ptr ==
'\\') {
769 UINTN NoSimpleFsHandles;
779 NoSimpleFsHandles = 0;
785 Status =
gBS->LocateHandleBuffer (
787 &gEfiSimpleFileSystemProtocolGuid,
792 if (!EFI_ERROR (Status)) {
796 for (Index = 0; Index < NoSimpleFsHandles; Index++) {
801 if (
NULL == MenuEntry) {
803 return EFI_OUT_OF_RESOURCES;
806 FileContext = (
FILE_CONTEXT *)MenuEntry->VariableContext;
807 FileContext->DeviceHandle = SimpleFsHandle[Index];
808 FileContext->FileHandle =
LibOpenRoot (FileContext->DeviceHandle);
809 if (FileContext->FileHandle ==
NULL) {
816 FileContext->DevicePath =
FileDevicePath (FileContext->DeviceHandle, FileContext->FileName);
817 FileContext->IsDir =
TRUE;
818 FileContext->IsRoot =
TRUE;
825 VolumeLabel = L
"NO FILE SYSTEM INFO";
828 if (*VolumeLabel == 0x0000) {
829 VolumeLabel = L
"NO VOLUME LABEL";
834 ASSERT (MenuEntry->DisplayString !=
NULL);
836 MenuEntry->DisplayString,
840 MenuEntry->HelpString
843 gFileExplorerPrivate.FeHiiHandle,
845 MenuEntry->DisplayString,
854 InsertTailList (&gFileExplorerPrivate.FsOptionMenu->Head, &MenuEntry->Link);
858 if (NoSimpleFsHandles != 0) {
862 gFileExplorerPrivate.FsOptionMenu->MenuNumber = OptionNumber;
887 FileContext = (
FILE_CONTEXT *)MenuEntry->VariableContext;
888 Dir = FileContext->FileHandle;
896 FileContext->FileName,
900 if (EFI_ERROR (Status)) {
904 if (!FileContext->IsRoot) {
908 *RetFileHandle = NewDir;
928 OUT UINT16 **ParentFileName,
941 *ParentFileName =
NULL;
946 DevicePathNode = RootDirectory;
947 Status =
gBS->LocateDevicePath (&gEfiSimpleFileSystemProtocolGuid, &DevicePathNode, &Handle);
948 if (EFI_ERROR (Status)) {
952 Status =
gBS->HandleProtocol (Handle, &gEfiSimpleFileSystemProtocolGuid, (VOID **)&Volume);
953 if (EFI_ERROR (Status)) {
960 Status = Volume->OpenVolume (Volume, &FileHandle);
961 if (EFI_ERROR (Status)) {
965 *DeviceHandle = Handle;
969 *RetFileHandle = FileHandle;
979 if (TempDevicePathNode ==
NULL) {
984 Status = EFI_OUT_OF_RESOURCES;
993 DevicePathNode = TempDevicePathNode;
998 Status = EFI_UNSUPPORTED;
1002 LastHandle = FileHandle;
1005 Status = LastHandle->Open (
1012 if (*ParentFileName ==
NULL) {
1016 if (TempPath ==
NULL) {
1017 LastHandle->Close (LastHandle);
1018 Status = EFI_OUT_OF_RESOURCES;
1023 *ParentFileName = TempPath;
1029 LastHandle->Close (LastHandle);
1034 if (EFI_ERROR (Status)) {
1038 *RetFileHandle = FileHandle;
1043 if (TempDevicePathNode !=
NULL) {
1047 if ((FileHandle !=
NULL) && (EFI_ERROR (Status))) {
1048 FileHandle->Close (FileHandle);
1064 IN CHAR16 *FileName,
1065 IN BOOLEAN CreateFile
1073 CHAR16 *FullFileName;
1076 FullFileName =
NULL;
1079 return EFI_DEVICE_ERROR;
1083 if (FullFileName ==
NULL) {
1084 return EFI_OUT_OF_RESOURCES;
1088 Status = FileHandle->Open (
1092 EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE| EFI_FILE_MODE_CREATE,
1095 if (EFI_ERROR (Status)) {
1096 FileHandle->Close (FileHandle);
1100 Status = FileHandle->Open (
1104 EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE| EFI_FILE_MODE_CREATE,
1107 if (EFI_ERROR (Status)) {
1108 FileHandle->Close (FileHandle);
1113 FileHandle->Close (FileHandle);
1118 gFileExplorerPrivate.RetDevicePath =
FileDevicePath (DeviceHandle, FullFileName);
1140 IN UINT16 *FileName,
1146 UINTN DirBufferSize;
1157 if (DirInfo ==
NULL) {
1158 return EFI_OUT_OF_RESOURCES;
1167 for (Pass = 1; Pass <= 2; Pass++) {
1168 FileHandle->SetPosition (FileHandle, 0);
1170 BufferSize = DirBufferSize;
1171 Status = FileHandle->Read (FileHandle, &BufferSize, DirInfo);
1172 if (EFI_ERROR (Status) || (BufferSize == 0)) {
1177 if ((((DirInfo->
Attribute & EFI_FILE_DIRECTORY) != 0) && (Pass == 2)) ||
1178 (((DirInfo->
Attribute & EFI_FILE_DIRECTORY) == 0) && (Pass == 1))
1196 if (
NULL == NewMenuEntry) {
1197 Status = EFI_OUT_OF_RESOURCES;
1201 NewFileContext = (
FILE_CONTEXT *)NewMenuEntry->VariableContext;
1202 NewFileContext->DeviceHandle = DeviceHandle;
1204 if (NewFileContext->FileName ==
NULL) {
1206 Status = EFI_OUT_OF_RESOURCES;
1210 NewFileContext->FileHandle = FileHandle;
1211 NewFileContext->DevicePath =
FileDevicePath (NewFileContext->DeviceHandle, NewFileContext->FileName);
1212 NewMenuEntry->HelpString =
NULL;
1213 NewFileContext->IsDir = (BOOLEAN)((DirInfo->
Attribute & EFI_FILE_DIRECTORY) == EFI_FILE_DIRECTORY);
1215 if (NewFileContext->IsDir) {
1219 NewMenuEntry->DisplayString,
1229 gFileExplorerPrivate.FeHiiHandle,
1231 NewMenuEntry->DisplayString,
1235 NewFileContext->IsRoot =
FALSE;
1238 InsertTailList (&gFileExplorerPrivate.FsOptionMenu->Head, &NewMenuEntry->Link);
1242 gFileExplorerPrivate.FsOptionMenu->MenuNumber = OptionNumber;
1263 if (mLibStartOpCodeHandle !=
NULL) {
1267 if (mLibEndOpCodeHandle !=
NULL) {
1281 mLibStartOpCodeHandle,
1288 mLibStartLabel->
Number = FORM_FILE_EXPLORER_ID;
1294 mLibEndOpCodeHandle,
1301 mLibEndLabel->
Number = LABEL_END;
1318 BOOLEAN CreateNewFile;
1320 NewMenuEntry =
NULL;
1321 NewFileContext =
NULL;
1322 CreateNewFile =
FALSE;
1325 MenuOption = gFileExplorerPrivate.FsOptionMenu;
1327 mQuestionIdUpdate += QUESTION_ID_UPDATE_STEP;
1329 for (Index = 0; Index < MenuOption->MenuNumber; Index++) {
1331 NewFileContext = (
FILE_CONTEXT *)NewMenuEntry->VariableContext;
1333 if (!NewFileContext->IsRoot && !CreateNewFile) {
1335 mLibStartOpCodeHandle,
1336 FORM_ADD_NEW_FILE_ID,
1339 EFI_IFR_FLAG_CALLBACK,
1340 (UINT16)(mNewFileQuestionId++)
1343 mLibStartOpCodeHandle,
1344 FORM_ADD_NEW_FOLDER_ID,
1347 EFI_IFR_FLAG_CALLBACK,
1348 (UINT16)(mNewFolderQuestionId++)
1351 mLibStartOpCodeHandle,
1356 CreateNewFile =
TRUE;
1359 if (!NewFileContext->IsDir) {
1364 mLibStartOpCodeHandle,
1365 (UINT16)(FILE_OPTION_OFFSET + Index + mQuestionIdUpdate),
1366 NewMenuEntry->DisplayStringToken,
1368 EFI_IFR_FLAG_CALLBACK,
1376 mLibStartOpCodeHandle,
1377 FORM_FILE_EXPLORER_ID,
1378 NewMenuEntry->DisplayStringToken,
1380 EFI_IFR_FLAG_CALLBACK,
1381 (UINT16)(FILE_OPTION_OFFSET + Index + mQuestionIdUpdate)
1387 gFileExplorerPrivate.FeHiiHandle,
1389 FORM_FILE_EXPLORER_ID,
1390 mLibStartOpCodeHandle,
1409 UINT16 FileOptionMask;
1416 FileOptionMask = (UINT16)(FILE_OPTION_MASK & KeyValue) - mQuestionIdUpdate;
1417 NewMenuEntry =
LibGetMenuEntry (gFileExplorerPrivate.FsOptionMenu, FileOptionMask);
1418 NewFileContext = (
FILE_CONTEXT *)NewMenuEntry->VariableContext;
1420 if (NewFileContext->IsDir) {
1424 if (!EFI_ERROR (Status)) {
1425 Status =
LibFindFiles (FileHandle, NewFileContext->FileName, NewFileContext->DeviceHandle);
1426 if (!EFI_ERROR (Status)) {
1450 UINT16 FileOptionMask;
1454 FileOptionMask = (UINT16)(FILE_OPTION_MASK & KeyValue) - mQuestionIdUpdate;
1456 NewMenuEntry =
LibGetMenuEntry (gFileExplorerPrivate.FsOptionMenu, FileOptionMask);
1458 NewFileContext = (
FILE_CONTEXT *)NewMenuEntry->VariableContext;
1460 if (gFileExplorerPrivate.RetDevicePath !=
NULL) {
1461 FreePool (gFileExplorerPrivate.RetDevicePath);
1490 IN CHAR16 *FileType OPTIONAL,
1500 if ((ChooseHandler ==
NULL) && (File ==
NULL)) {
1501 return EFI_INVALID_PARAMETER;
1504 mQuestionIdUpdate = 0;
1507 gFileExplorerPrivate.RetDevicePath =
NULL;
1508 gFileExplorerPrivate.ChooseHandler = ChooseHandler;
1509 if (FileType !=
NULL) {
1511 ASSERT (gFileExplorerPrivate.FileType !=
NULL);
1514 gFileExplorerPrivate.FileType =
NULL;
1517 if (RootDirectory ==
NULL) {
1521 if (EFI_ERROR (Status)) {
1525 Status =
LibFindFiles (FileHandle, FileName, DeviceHandle);
1528 if (EFI_ERROR (Status)) {
1534 gFileExplorerPrivate.FormBrowser2->SendForm (
1535 gFileExplorerPrivate.FormBrowser2,
1536 &gFileExplorerPrivate.FeHiiHandle,
1546 *File = gFileExplorerPrivate.RetDevicePath;
1547 }
else if (gFileExplorerPrivate.RetDevicePath !=
NULL) {
1548 FreePool (gFileExplorerPrivate.RetDevicePath);
1551 if (gFileExplorerPrivate.FileType !=
NULL) {
1552 FreePool (gFileExplorerPrivate.FileType);
1557 if (FileName !=
NULL) {
1584 ASSERT (gHiiVendorDevicePath !=
NULL);
1585 CopyGuid (&gHiiVendorDevicePath->VendorDevicePath.
Guid, &gEfiCallerIdGuid);
1590 Status =
gBS->InstallMultipleProtocolInterfaces (
1591 &gFileExplorerPrivate.FeDriverHandle,
1592 &gEfiDevicePathProtocolGuid,
1593 gHiiVendorDevicePath,
1594 &gEfiHiiConfigAccessProtocolGuid,
1595 &gFileExplorerPrivate.FeConfigAccess,
1598 if (Status == EFI_ALREADY_STARTED) {
1602 if (EFI_ERROR (Status)) {
1611 gFileExplorerPrivate.FeDriverHandle,
1613 FileExplorerLibStrings,
1616 ASSERT (gFileExplorerPrivate.FeHiiHandle !=
NULL);
1621 Status =
gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid,
NULL, (VOID **)&gFileExplorerPrivate.FormBrowser2);
1646 ASSERT (gHiiVendorDevicePath !=
NULL);
1648 if (gFileExplorerPrivate.FeDriverHandle !=
NULL) {
1649 Status =
gBS->UninstallMultipleProtocolInterfaces (
1650 gFileExplorerPrivate.FeDriverHandle,
1651 &gEfiDevicePathProtocolGuid,
1652 gHiiVendorDevicePath,
1653 &gEfiHiiConfigAccessProtocolGuid,
1654 &gFileExplorerPrivate.FeConfigAccess,
1660 gFileExplorerPrivate.FeDriverHandle =
NULL;
UINTN EFIAPI StrSize(IN CONST CHAR16 *String)
BOOLEAN EFIAPI IsListEmpty(IN CONST LIST_ENTRY *ListHead)
RETURN_STATUS EFIAPI StrCpyS(OUT CHAR16 *Destination, IN UINTN DestMax, IN CONST CHAR16 *Source)
RETURN_STATUS EFIAPI StrCatS(IN OUT CHAR16 *Destination, IN UINTN DestMax, IN CONST CHAR16 *Source)
LIST_ENTRY *EFIAPI RemoveEntryList(IN CONST LIST_ENTRY *Entry)
LIST_ENTRY *EFIAPI InitializeListHead(IN OUT LIST_ENTRY *ListHead)
UINTN EFIAPI StrLen(IN CONST CHAR16 *String)
CHAR16 *EFIAPI StrStr(IN CONST CHAR16 *String, IN CONST CHAR16 *SearchString)
LIST_ENTRY *EFIAPI InsertTailList(IN OUT LIST_ENTRY *ListHead, IN OUT LIST_ENTRY *Entry)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
GUID *EFIAPI CopyGuid(OUT GUID *DestinationGuid, IN CONST GUID *SourceGuid)
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
BOOLEAN EFIAPI IsZeroBuffer(IN CONST VOID *Buffer, IN UINTN Length)
#define MEDIA_FILEPATH_DP
#define HARDWARE_DEVICE_PATH
UINT8 EFIAPI DevicePathType(IN CONST VOID *Node)
UINT8 EFIAPI DevicePathSubType(IN CONST VOID *Node)
EFI_DEVICE_PATH_PROTOCOL *EFIAPI FileDevicePath(IN EFI_HANDLE Device OPTIONAL, IN CONST CHAR16 *FileName)
BOOLEAN EFIAPI IsDevicePathEnd(IN CONST VOID *Node)
EFI_DEVICE_PATH_PROTOCOL *EFIAPI NextDevicePathNode(IN CONST VOID *Node)
EFI_DEVICE_PATH_PROTOCOL *EFIAPI DevicePathFromHandle(IN EFI_HANDLE Handle)
EFI_DEVICE_PATH_PROTOCOL *EFIAPI DuplicateDevicePath(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
VOID *EFIAPI AllocateCopyPool(IN UINTN AllocationSize, IN CONST VOID *Buffer)
EFI_FILE_HANDLE LibOpenRoot(IN EFI_HANDLE DeviceHandle)
VOID LibToLowerString(IN CHAR16 *String)
EFI_STATUS EFIAPI LibExtractConfig(IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, IN CONST EFI_STRING Request, OUT EFI_STRING *Progress, OUT EFI_STRING *Results)
EFI_STATUS EFIAPI FileExplorerLibConstructor(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
MENU_ENTRY * LibCreateMenuEntry(VOID)
CHAR16 * LibGetTypeFromName(IN CHAR16 *FileName)
VOID LibRefreshUpdateData(VOID)
EFI_STATUS LibFindFileSystem(VOID)
CHAR16 * LibStrDuplicate(IN CHAR16 *Src)
VOID LibGetDevicePath(IN UINT16 KeyValue)
EFI_STATUS LibUpdateFileExplorer(IN UINT16 KeyValue)
MENU_OPTION mFsOptionMenu
VOID LibUpdateFileExplorePage(VOID)
EFI_STATUS EFIAPI LibCallback(IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, IN EFI_BROWSER_ACTION Action, IN EFI_QUESTION_ID QuestionId, IN UINT8 Type, IN EFI_IFR_TYPE_VALUE *Value, OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest)
VOID LibDestroyMenuEntry(MENU_ENTRY *MenuEntry)
EFI_STATUS EFIAPI LibRouteConfig(IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, IN CONST EFI_STRING Configuration, OUT EFI_STRING *Progress)
BOOLEAN LibIsSupportedFileType(IN UINT16 *FileName)
EFI_STATUS LibFindFiles(IN EFI_FILE_HANDLE FileHandle, IN UINT16 *FileName, IN EFI_HANDLE DeviceHandle)
EFI_STATUS LibGetFileHandleFromMenu(IN MENU_ENTRY *MenuEntry, OUT EFI_FILE_HANDLE *RetFileHandle)
CHAR16 * LibAppendFileName(IN CHAR16 *Str1, IN CHAR16 *Str2)
EFI_STATUS LibGetFileHandleFromDevicePath(IN EFI_DEVICE_PATH_PROTOCOL *RootDirectory, OUT EFI_FILE_HANDLE *RetFileHandle, OUT UINT16 **ParentFileName, OUT EFI_HANDLE *DeviceHandle)
VOID * LibFileInfo(IN EFI_FILE_HANDLE FHand, IN EFI_GUID *InfoType)
EFI_STATUS EFIAPI ChooseFile(IN EFI_DEVICE_PATH_PROTOCOL *RootDirectory, IN CHAR16 *FileType OPTIONAL, IN CHOOSE_HANDLER ChooseHandler OPTIONAL, OUT EFI_DEVICE_PATH_PROTOCOL **File OPTIONAL)
MENU_ENTRY * LibGetMenuEntry(MENU_OPTION *MenuOption, UINTN MenuNumber)
VOID LibFreeMenu(MENU_OPTION *FreeMenu)
EFI_STATUS EFIAPI FileExplorerLibDestructor(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
EFI_STATUS LibCreateNewFile(IN CHAR16 *FileName, IN BOOLEAN CreateFile)
CHAR16 * LibDevicePathToStr(IN EFI_DEVICE_PATH_PROTOCOL *DevPath)
UINT8 *EFIAPI HiiCreateGotoOpCode(IN VOID *OpCodeHandle, IN EFI_FORM_ID FormId, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN EFI_QUESTION_ID QuestionId)
VOID *EFIAPI HiiAllocateOpCodeHandle(VOID)
VOID EFIAPI HiiFreeOpCodeHandle(VOID *OpCodeHandle)
EFI_HII_HANDLE EFIAPI HiiAddPackages(IN CONST EFI_GUID *PackageListGuid, IN EFI_HANDLE DeviceHandle OPTIONAL,...)
UINT8 *EFIAPI HiiCreateGuidOpCode(IN VOID *OpCodeHandle, IN CONST EFI_GUID *Guid, IN CONST VOID *GuidOpCode OPTIONAL, IN UINTN OpCodeSize)
EFI_STRING EFIAPI HiiGetString(IN EFI_HII_HANDLE HiiHandle, IN EFI_STRING_ID StringId, IN CONST CHAR8 *Language OPTIONAL)
EFI_STATUS EFIAPI HiiUpdateForm(IN EFI_HII_HANDLE HiiHandle, IN EFI_GUID *FormSetGuid OPTIONAL, IN EFI_FORM_ID FormId, IN VOID *StartOpCodeHandle, IN VOID *EndOpCodeHandle OPTIONAL)
EFI_STRING_ID EFIAPI HiiSetString(IN EFI_HII_HANDLE HiiHandle, IN EFI_STRING_ID StringId OPTIONAL, IN CONST EFI_STRING String, IN CONST CHAR8 *SupportedLanguages OPTIONAL)
UINT8 *EFIAPI HiiCreateActionOpCode(IN VOID *OpCodeHandle, IN EFI_QUESTION_ID QuestionId, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN EFI_STRING_ID QuestionConfig)
UINT8 *EFIAPI HiiCreateTextOpCode(IN VOID *OpCodeHandle, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN EFI_STRING_ID TextTwo)
VOID EFIAPI HiiRemovePackages(IN EFI_HII_HANDLE HiiHandle)
BOOLEAN(EFIAPI * CHOOSE_HANDLER)(IN EFI_DEVICE_PATH_PROTOCOL *FilePath)
#define EFI_IFR_EXTEND_OP_LABEL
UINTN EFIAPI UnicodeSPrint(OUT CHAR16 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR16 *FormatString,...)
#define ASSERT_EFI_ERROR(StatusParameter)
#define CR(Record, TYPE, Field, TestSignature)
VOID *EFIAPI AllocatePool(IN UINTN AllocationSize)