15#define MEM_WRITE_REALLOC_OVERHEAD 1024
38 return (EFI_NOT_FOUND);
72 return (EFI_UNSUPPORTED);
90 return (EFI_UNSUPPORTED);
112 return (EFI_UNSUPPORTED);
134 return (EFI_UNSUPPORTED);
157 if (ShellInfoObject.ShellInitSettings.BitUnion.Bits.
NoConsoleOut) {
158 return (EFI_UNSUPPORTED);
185 return (EFI_UNSUPPORTED);
227 return (EFI_UNSUPPORTED);
247 return (EFI_UNSUPPORTED);
323 if (TabStr ==
NULL) {
324 return EFI_OUT_OF_RESOURCES;
337 for (Index = 0; Index < StringLen; Index++) {
338 switch (InputString[Index]) {
340 InQuotation = (BOOLEAN)(!InQuotation);
346 *TabUpdatePos = TabPos;
357 *TabUpdatePos = Index + 1;
365 if (
StrStr (InputString + TabPos, L
":") ==
NULL) {
369 Cwd = ShellInfoObject.NewEfiShellProtocol->GetCurDir (
NULL);
371 if (InputString[TabPos] != L
'\\') {
376 StrnCpyS (TabStr, BufferSize /
sizeof (CHAR16), Cwd, (BufferSize) /
sizeof (CHAR16) - 1);
377 StrCatS (TabStr, (BufferSize) /
sizeof (CHAR16), L
"\\");
383 Index =
StrStr (Cwd, L
":") - Cwd + 1;
384 StrnCpyS (TabStr, BufferSize /
sizeof (CHAR16), Cwd, Index);
389 StrnCatS (TabStr, (BufferSize) /
sizeof (CHAR16), InputString + TabPos, StringLen - TabPos);
390 StrnCatS (TabStr, (BufferSize) /
sizeof (CHAR16), L
"*", (BufferSize) /
sizeof (CHAR16) - 1 -
StrLen (TabStr));
391 Status = ShellInfoObject.NewEfiShellProtocol->FindFiles (TabStr, &FileList);
397 if (!EFI_ERROR (Status) && (FileList !=
NULL)) {
401 while (*InputString == L
' ') {
407 ((((InputString[0] == L
'c') || (InputString[0] == L
'C')) && ((InputString[1] == L
'd') || (InputString[1] == L
'D'))) &&
422 ShellInfoObject.NewEfiShellProtocol->FreeFileList (&FileList);
423 Status = EFI_NOT_FOUND;
428 *TabCompletionList = FileList;
464 CHAR16 *CurrentString;
487 BOOLEAN InTabScrolling;
491 CHAR16 *TabOutputStr;
496 if (*BufferSize <
sizeof (CHAR16) * 2) {
497 *BufferSize =
sizeof (CHAR16) * 2;
498 return (EFI_BUFFER_TOO_SMALL);
502 CurrentString = Buffer;
508 LinePos = NewPos = (
BUFFER_LIST *)(&ShellInfoObject.ViewingSettings.CommandHistory);
510 InTabScrolling =
FALSE;
514 TabCompleteList =
NULL;
528 MaxStr = TotalColumn * (TotalRow - 1) - StartColumn;
529 if (MaxStr > *BufferSize /
sizeof (CHAR16)) {
530 MaxStr = *BufferSize /
sizeof (CHAR16);
533 ZeroMem (CurrentString, MaxStr *
sizeof (CHAR16));
540 if (EFI_ERROR (Status)) {
541 if (Status == EFI_NOT_READY) {
545 ZeroMem (CurrentString, MaxStr *
sizeof (CHAR16));
554 if ((Key.UnicodeChar == 0) && ((Key.ScanCode == SCAN_PAGE_UP) || (Key.ScanCode == SCAN_PAGE_DOWN))) {
555 if (Key.ScanCode == SCAN_PAGE_UP) {
557 }
else if (Key.ScanCode == SCAN_PAGE_DOWN) {
572 if (InTabScrolling && (Key.UnicodeChar != CHAR_TAB)) {
573 if (TabCompleteList !=
NULL) {
574 ShellInfoObject.NewEfiShellProtocol->FreeFileList (&TabCompleteList);
576 TabCompleteList =
NULL;
580 InTabScrolling =
FALSE;
583 switch (Key.UnicodeChar) {
584 case CHAR_CARRIAGE_RETURN:
588 TailRow = Row + (StringLen - StringCurPos + Column) / TotalColumn;
589 TailColumn = (StringLen - StringCurPos + Column) % TotalColumn;
590 ShellPrintEx ((INT32)TailColumn, (INT32)TailRow, L
"%N\n");
595 if (StringCurPos != 0) {
601 Update = StringCurPos;
603 CopyMem (CurrentString + StringCurPos, CurrentString + StringCurPos + 1,
sizeof (CHAR16) * (StringLen - StringCurPos));
614 if (!InTabScrolling) {
620 if (!EFI_ERROR (Status)) {
621 InTabScrolling =
TRUE;
630 if (InTabScrolling) {
635 ASSERT (TabCompleteList !=
NULL);
636 if (TabCurrent ==
NULL) {
653 if (Key.UnicodeChar >=
' ') {
657 if ((StringLen == MaxStr - 1) && (ShellInfoObject.ViewingSettings.
InsertMode || (StringCurPos == StringLen))) {
665 if (ShellInfoObject.ViewingSettings.
InsertMode) {
666 CopyMem (CurrentString + StringCurPos + 1, CurrentString + StringCurPos, (StringLen - StringCurPos)*
sizeof (CurrentString[0]));
669 CurrentString[StringCurPos] = Key.UnicodeChar;
670 Update = StringCurPos;
679 switch (Key.ScanCode) {
684 if (StringLen != 0) {
685 Update = StringCurPos;
687 CopyMem (CurrentString + StringCurPos, CurrentString + StringCurPos + 1,
sizeof (CHAR16) * (StringLen - StringCurPos));
697 if (
IsNull (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &LinePos->Link)) {
707 NewPos = (
BUFFER_LIST *)
GetNextNode (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &LinePos->Link);
708 if (NewPos == (
BUFFER_LIST *)(&ShellInfoObject.ViewingSettings.CommandHistory)) {
709 NewPos = (
BUFFER_LIST *)
GetNextNode (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &LinePos->Link);
718 if (StringCurPos != 0) {
729 if (StringCurPos < StringLen) {
740 Row -= (StringCurPos + StartColumn) / TotalColumn;
741 Column = StartColumn;
749 TailRow = Row + (StringLen - StringCurPos + Column) / TotalColumn;
750 TailColumn = (StringLen - StringCurPos + Column) % TotalColumn;
753 StringCurPos = StringLen;
760 CurrentString[0] = 0;
763 Row -= (StringCurPos + StartColumn) / TotalColumn;
764 Column = StartColumn;
772 ShellInfoObject.ViewingSettings.
InsertMode = (BOOLEAN) !ShellInfoObject.ViewingSettings.
InsertMode;
780 *CurrentString = CHAR_NULL;
794 if (InTabScrolling) {
796 if (TabOutputStr ==
NULL) {
797 Status = EFI_OUT_OF_RESOURCES;
801 if (InTabScrolling && (TabOutputStr !=
NULL)) {
805 Column = (StartColumn + TabUpdatePos) % TotalColumn;
806 Row -= (StartColumn + StringCurPos) / TotalColumn - (StartColumn + TabUpdatePos) / TotalColumn;
813 TabOutputStr[0] = L
'\"';
814 CopyMem (TabOutputStr + 1, TabCurrent->
FileName, OutputLength * sizeof (CHAR16));
815 TabOutputStr[OutputLength + 1] = L
'\"';
816 TabOutputStr[OutputLength + 2] = CHAR_NULL;
818 CopyMem (TabOutputStr, TabCurrent->
FileName, OutputLength * sizeof (CHAR16));
819 TabOutputStr[OutputLength] = CHAR_NULL;
822 OutputLength =
StrLen (TabOutputStr) < MaxStr - 1 ?
StrLen (TabOutputStr) : MaxStr - 1;
823 CopyMem (CurrentString + TabUpdatePos, TabOutputStr, OutputLength *
sizeof (CHAR16));
824 CurrentString[TabUpdatePos + OutputLength] = CHAR_NULL;
825 StringCurPos = TabUpdatePos + OutputLength;
826 Update = TabUpdatePos;
827 if (StringLen > TabUpdatePos + OutputLength) {
828 Delete = StringLen - TabUpdatePos - OutputLength;
838 if (NewPos != (
BUFFER_LIST *)(&ShellInfoObject.ViewingSettings.CommandHistory)) {
839 Column = StartColumn;
840 Row -= (StringCurPos + StartColumn) / TotalColumn;
843 NewPos = (
BUFFER_LIST *)(&ShellInfoObject.ViewingSettings.CommandHistory);
845 OutputLength =
StrLen (LinePos->Buffer) < MaxStr - 1 ?
StrLen (LinePos->Buffer) : MaxStr - 1;
846 CopyMem (CurrentString, LinePos->Buffer, OutputLength * sizeof (CHAR16));
847 CurrentString[OutputLength] = CHAR_NULL;
849 StringCurPos = OutputLength;
855 if (StringLen > OutputLength) {
859 Delete = StringLen - OutputLength;
866 if (Update != (
UINTN)-1) {
867 ShellPrintEx ((INT32)Column, (INT32)Row, L
"%s%.*s", CurrentString + Update, Delete, L
"");
868 StringLen =
StrLen (CurrentString);
871 SetMem (CurrentString + StringLen, Delete *
sizeof (CHAR16), CHAR_NULL);
874 if (StringCurPos > StringLen) {
875 StringCurPos = StringLen;
885 if ((Key.UnicodeChar != CHAR_BACKSPACE) && !((Key.UnicodeChar == 0) && (Key.ScanCode == SCAN_DELETE))) {
889 TailRow = Row + (StringLen - StringCurPos + Column + OutputLength) / TotalColumn;
890 TailColumn = (StringLen - StringCurPos + Column + OutputLength) % TotalColumn;
899 if ((TailColumn == 0) && (TailRow >= TotalRow) && (Row != TailRow)) {
908 if (Column + OutputLength >= TotalColumn) {
909 SkipLength = OutputLength - (TotalColumn - Column);
911 Row += SkipLength / TotalColumn + 1;
912 if (Row > TotalRow - 1) {
916 Column = SkipLength % TotalColumn;
918 Column += OutputLength;
931 if ((CurrentString !=
NULL) && (
StrLen (CurrentString) > 0)) {
941 *BufferSize = StringLen *
sizeof (CHAR16);
947 if (TabCompleteList !=
NULL) {
948 ShellInfoObject.NewEfiShellProtocol->FreeFileList (&TabCompleteList);
951 ASSERT (TabCompleteList ==
NULL);
1035#define SIZE_OF_EFI_FILE_PROTOCOL_ENVIRONMENT EFI_FIELD_OFFSET (EFI_FILE_PROTOCOL_ENVIRONMENT, Name)
1069 if (EFI_ERROR (Status)) {
1074 if (Status == EFI_BUFFER_TOO_SMALL) {
1075 TotalSize = NewSize +
sizeof (CHAR16);
1077 if (NewBuffer ==
NULL) {
1078 return EFI_OUT_OF_RESOURCES;
1084 if (!EFI_ERROR (Status) && (NewBuffer !=
NULL)) {
1085 if (TotalSize /
sizeof (CHAR16) >= 3) {
1086 if ((((CHAR16 *)NewBuffer)[TotalSize /
sizeof (CHAR16) - 2] == CHAR_LINEFEED) &&
1087 (((CHAR16 *)NewBuffer)[TotalSize /
sizeof (CHAR16) - 3] == CHAR_CARRIAGE_RETURN)
1090 ((CHAR16 *)NewBuffer)[TotalSize /
sizeof (CHAR16) - 3] = CHAR_NULL;
1094 TotalSize -=
sizeof (CHAR16) * 2;
1100 TotalSize -
sizeof (CHAR16),
1104 if (!EFI_ERROR (Status)) {
1109 EFI_VARIABLE_BOOTSERVICE_ACCESS
1115 TotalSize -
sizeof (CHAR16),
1119 if (!EFI_ERROR (Status)) {
1131 SHELL_FREE_NON_NULL (NewBuffer);
1172 *BufferSize = *BufferSize /
sizeof (CHAR16) *
sizeof (CHAR16);
1173 if (*BufferSize != 0) {
1178 Buffer = (CHAR16 *)Buffer + 1;
1187 if (!EFI_ERROR (Status) || (Status == EFI_BUFFER_TOO_SMALL)) {
1226 if (Status == EFI_BUFFER_TOO_SMALL) {
1227 TotalSize = NewSize + *BufferSize +
sizeof (CHAR16);
1228 }
else if (Status == EFI_NOT_FOUND) {
1229 TotalSize = *BufferSize +
sizeof (CHAR16);
1235 if (NewBuffer ==
NULL) {
1236 return EFI_OUT_OF_RESOURCES;
1239 if (Status == EFI_BUFFER_TOO_SMALL) {
1243 if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {
1248 CopyMem ((UINT8 *)NewBuffer + NewSize, Buffer, *BufferSize);
1253 EFI_VARIABLE_BOOTSERVICE_ACCESS
1255 if (EFI_ERROR (Status)) {
1262 TotalSize -
sizeof (CHAR16),
1265 if (EFI_ERROR (Status)) {
1302 if (Status == EFI_BUFFER_TOO_SMALL) {
1303 TotalSize = NewSize + *BufferSize +
sizeof (CHAR16);
1304 }
else if (Status == EFI_NOT_FOUND) {
1305 TotalSize = *BufferSize +
sizeof (CHAR16);
1311 if (NewBuffer ==
NULL) {
1312 return EFI_OUT_OF_RESOURCES;
1315 if (Status == EFI_BUFFER_TOO_SMALL) {
1319 if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {
1324 CopyMem ((UINT8 *)NewBuffer + NewSize, Buffer, *BufferSize);
1331 if (EFI_ERROR (Status)) {
1338 TotalSize -
sizeof (CHAR16),
1341 if (EFI_ERROR (Status)) {
1368 if (EnvName ==
NULL) {
1373 if (EFI_ERROR (Status)) {
1380 EnvNameSize =
StrSize (EnvName);
1382 if (EnvFileInterface ==
NULL) {
1389 EnvFileInterface->Revision = EFI_FILE_REVISION;
1400 CopyMem (EnvFileInterface->Name, EnvName, EnvNameSize);
1433 *Column = LineLength - 1;
1466 if (*Column >= LineLength) {
1468 if ((*Row) < TotalRow - 1) {
1502 ; !
IsNull (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &Node->Link)
1507 LineCount = ((
StrLen (Node->Buffer) + StartColumn + 1) / TotalCols) + 1;
1509 if (LineNumber + LineCount >= TotalRows) {
1511 ShellPromptResponseTypeEnterContinue,
1519 ShellPrintEx (-1, -1, L
"%2d. %s\n", Index, Node->Buffer);
1520 LineNumber += LineCount;
1568 return (EFI_INVALID_PARAMETER);
1584 OUT UINT64 *Position
1620 if (
CompareGuid (InformationType, &gEfiFileInfoGuid)) {
1623 return EFI_BUFFER_TOO_SMALL;
1626 if (Buffer ==
NULL) {
1627 return EFI_INVALID_PARAMETER;
1638 return EFI_UNSUPPORTED;
1663 if (MemFile->Unicode) {
1667 if ((
UINTN)(MemFile->Position + (*BufferSize)) > (
UINTN)(MemFile->BufferSize)) {
1668 MemFile->Buffer =
ReallocatePool ((
UINTN)(MemFile->BufferSize), (
UINTN)(MemFile->BufferSize) + (*BufferSize) + MEM_WRITE_REALLOC_OVERHEAD, MemFile->Buffer);
1669 if (MemFile->Buffer ==
NULL) {
1670 return EFI_OUT_OF_RESOURCES;
1673 MemFile->BufferSize += (*BufferSize) + MEM_WRITE_REALLOC_OVERHEAD;
1676 CopyMem (((UINT8 *)MemFile->Buffer) + MemFile->Position, Buffer, *BufferSize);
1677 MemFile->Position += (*BufferSize);
1678 MemFile->FileSize = MemFile->Position;
1685 if (AsciiBuffer ==
NULL) {
1686 return (EFI_OUT_OF_RESOURCES);
1689 AsciiSPrint (AsciiBuffer, *BufferSize,
"%S", Buffer);
1692 if (MemFile->Buffer ==
NULL) {
1694 return EFI_OUT_OF_RESOURCES;
1697 MemFile->BufferSize +=
AsciiStrSize (AsciiBuffer) + MEM_WRITE_REALLOC_OVERHEAD;
1700 CopyMem (((UINT8 *)MemFile->Buffer) + MemFile->Position, AsciiBuffer,
AsciiStrSize (AsciiBuffer));
1701 MemFile->Position += (*BufferSize /
sizeof (CHAR16));
1702 MemFile->FileSize = MemFile->Position;
1728 if (*BufferSize > (
UINTN)((MemFile->FileSize) - (
UINTN)(MemFile->Position))) {
1729 (*BufferSize) = (
UINTN)((MemFile->FileSize) - (
UINTN)(MemFile->Position));
1732 CopyMem (Buffer, ((UINT8 *)MemFile->Buffer) + MemFile->Position, (*BufferSize));
1733 MemFile->Position = MemFile->Position + (*BufferSize);
1753 SHELL_FREE_NON_NULL (This);
1777 if (FileInterface ==
NULL) {
1784 FileInterface->Revision = EFI_FILE_REVISION;
1795 FileInterface->Unicode = Unicode;
1797 ASSERT (FileInterface->Buffer ==
NULL);
1798 ASSERT (FileInterface->BufferSize == 0);
1799 ASSERT (FileInterface->Position == 0);
1803 if (FileInterface->Buffer ==
NULL) {
1809 FileInterface->BufferSize = 2;
1810 FileInterface->Position = 2;
1866 OUT UINT64 *Position
1979 CHAR8 *AsciiStrBuffer;
1980 CHAR16 *UscStrBuffer;
1994 *BufferSize = *BufferSize /
sizeof (CHAR16) *
sizeof (CHAR16);
1995 if (*BufferSize == 0) {
2000 if (EFI_ERROR (Status)) {
2004 if (Position == 0) {
2009 Buffer = (CHAR16 *)Buffer + 1;
2010 Size = *BufferSize /
sizeof (CHAR16) - 1;
2012 Size = *BufferSize /
sizeof (CHAR16);
2016 if (AsciiStrBuffer ==
NULL) {
2017 return EFI_OUT_OF_RESOURCES;
2021 if (UscStrBuffer ==
NULL) {
2022 SHELL_FREE_NON_NULL (AsciiStrBuffer);
2023 return EFI_OUT_OF_RESOURCES;
2027 if (!EFI_ERROR (Status)) {
2029 *BufferSize = Size *
sizeof (CHAR16);
2030 CopyMem (Buffer, UscStrBuffer, *BufferSize);
2033 SHELL_FREE_NON_NULL (AsciiStrBuffer);
2034 SHELL_FREE_NON_NULL (UscStrBuffer);
2063 IN CHAR16 *FileName,
2065 IN UINT64 Attributes
2147 if (AsciiBuffer ==
NULL) {
2148 return EFI_OUT_OF_RESOURCES;
2151 AsciiSPrint (AsciiBuffer, *BufferSize,
"%S", Buffer);
2179 if (NewOne ==
NULL) {
2185 NewOne->Unicode = Unicode;
EFI_STATUS EFIAPI Open(IN VOID *Buffer, OUT EFI_ACPI_HANDLE *Handle)
EFI_STATUS EFIAPI Close(IN EFI_ACPI_HANDLE Handle)
BOOLEAN EFIAPI IsNull(IN CONST LIST_ENTRY *List, IN CONST LIST_ENTRY *Node)
LIST_ENTRY *EFIAPI GetPreviousNode(IN CONST LIST_ENTRY *List, IN CONST LIST_ENTRY *Node)
UINTN EFIAPI StrSize(IN CONST CHAR16 *String)
BOOLEAN EFIAPI IsListEmpty(IN CONST LIST_ENTRY *ListHead)
LIST_ENTRY *EFIAPI GetNextNode(IN CONST LIST_ENTRY *List, IN CONST LIST_ENTRY *Node)
INTN EFIAPI StrCmp(IN CONST CHAR16 *FirstString, IN CONST CHAR16 *SecondString)
LIST_ENTRY *EFIAPI GetFirstNode(IN CONST LIST_ENTRY *List)
RETURN_STATUS EFIAPI StrCatS(IN OUT CHAR16 *Destination, IN UINTN DestMax, IN CONST CHAR16 *Source)
LIST_ENTRY *EFIAPI RemoveEntryList(IN CONST LIST_ENTRY *Entry)
RETURN_STATUS EFIAPI StrnCatS(IN OUT CHAR16 *Destination, IN UINTN DestMax, IN CONST CHAR16 *Source, IN UINTN Length)
RETURN_STATUS EFIAPI AsciiStrToUnicodeStrS(IN CONST CHAR8 *Source, OUT CHAR16 *Destination, IN UINTN DestMax)
UINTN EFIAPI AsciiStrSize(IN CONST CHAR8 *String)
RETURN_STATUS EFIAPI StrnCpyS(OUT CHAR16 *Destination, IN UINTN DestMax, IN CONST CHAR16 *Source, IN UINTN Length)
UINTN EFIAPI StrLen(IN CONST CHAR16 *String)
CHAR16 *EFIAPI StrStr(IN CONST CHAR16 *String, IN CONST CHAR16 *SearchString)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI SetMem(OUT VOID *Buffer, IN UINTN Length, IN UINT8 Value)
BOOLEAN EFIAPI CompareGuid(IN CONST GUID *Guid1, IN CONST GUID *Guid2)
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
EFI_STATUS ConsoleLoggerDisplayHistory(IN CONST BOOLEAN Forward, IN CONST UINTN Rows, IN CONSOLE_LOGGER_PRIVATE_DATA *ConsoleInfo)
EFI_STATUS ConsoleLoggerStopHistory(IN CONSOLE_LOGGER_PRIVATE_DATA *ConsoleInfo)
VOID *EFIAPI ReallocatePool(IN UINTN OldSize, IN UINTN NewSize, IN VOID *OldBuffer OPTIONAL)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
CONST UINT16 gUnicodeFileTag
EFI_FILE_PROTOCOL FileInterfaceStdIn
EFI_STATUS EFIAPI FileInterfaceFileFlush(IN EFI_FILE_PROTOCOL *This)
EFI_STATUS EFIAPI FileInterfaceEnvDelete(IN EFI_FILE_PROTOCOL *This)
EFI_STATUS EFIAPI FileInterfaceFileSetInfo(IN EFI_FILE_PROTOCOL *This, IN EFI_GUID *InformationType, IN UINTN BufferSize, IN VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceOpenNotFound(IN EFI_FILE_PROTOCOL *This, OUT EFI_FILE_PROTOCOL **NewHandle, IN CHAR16 *FileName, IN UINT64 OpenMode, IN UINT64 Attributes)
EFI_STATUS EFIAPI FileInterfaceStdOutRead(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceFileGetPosition(IN EFI_FILE_PROTOCOL *This, OUT UINT64 *Position)
VOID MoveCursorBackward(IN UINTN LineLength, IN OUT UINTN *Column, IN OUT UINTN *Row)
EFI_STATUS EFIAPI FileInterfaceMemClose(IN EFI_FILE_PROTOCOL *This)
EFI_STATUS EFIAPI FileInterfaceNopSetInfo(IN EFI_FILE_PROTOCOL *This, IN EFI_GUID *InformationType, IN UINTN BufferSize, IN VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceFileWrite(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, IN VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceMemSetPosition(IN EFI_FILE_PROTOCOL *This, OUT UINT64 Position)
EFI_STATUS EFIAPI FileInterfaceMemGetInfo(IN EFI_FILE_PROTOCOL *This, IN EFI_GUID *InformationType, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceNulWrite(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, IN VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceFileSetPosition(IN EFI_FILE_PROTOCOL *This, IN UINT64 Position)
EFI_FILE_PROTOCOL * CreateFileInterfaceMem(IN CONST BOOLEAN Unicode)
EFI_FILE_PROTOCOL FileInterfaceNulFile
EFI_STATUS EFIAPI FileInterfaceStdErrRead(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceStdInWrite(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, IN VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceEnvVolWrite(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, IN VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceFileClose(IN EFI_FILE_PROTOCOL *This)
EFI_STATUS EFIAPI FileInterfaceNulRead(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceMemGetPosition(IN EFI_FILE_PROTOCOL *This, OUT UINT64 *Position)
EFI_STATUS EFIAPI FileInterfaceMemWrite(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, IN VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceNopGetInfo(IN EFI_FILE_PROTOCOL *This, IN EFI_GUID *InformationType, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceFileDelete(IN EFI_FILE_PROTOCOL *This)
EFI_STATUS EFIAPI FileInterfaceStdInRead(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceFileOpen(IN EFI_FILE_PROTOCOL *This, OUT EFI_FILE_PROTOCOL **NewHandle, IN CHAR16 *FileName, IN UINT64 OpenMode, IN UINT64 Attributes)
EFI_STATUS EFIAPI FileInterfaceNopGeneric(IN EFI_FILE_PROTOCOL *This)
EFI_STATUS EFIAPI FileInterfaceStdErrWrite(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, IN VOID *Buffer)
VOID MoveCursorForward(IN UINTN LineLength, IN UINTN TotalRow, IN OUT UINTN *Column, IN OUT UINTN *Row)
EFI_STATUS EFIAPI FileInterfaceFileRead(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
EFI_FILE_PROTOCOL * CreateFileInterfaceEnv(IN CONST CHAR16 *EnvName)
EFI_STATUS EFIAPI FileInterfaceEnvClose(IN EFI_FILE_PROTOCOL *This)
EFI_FILE_PROTOCOL FileInterfaceStdErr
EFI_STATUS EFIAPI FileInterfaceEnvRead(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
EFI_FILE_PROTOCOL FileInterfaceStdOut
EFI_STATUS EFIAPI FileInterfaceEnvNonVolWrite(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, IN VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceNopGetPosition(IN EFI_FILE_PROTOCOL *This, OUT UINT64 *Position)
EFI_STATUS EFIAPI FileInterfaceMemRead(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, IN VOID *Buffer)
EFI_STATUS EFIAPI FileInterfaceNopSetPosition(IN EFI_FILE_PROTOCOL *This, IN UINT64 Position)
VOID PrintCommandHistory(IN CONST UINTN TotalCols, IN CONST UINTN TotalRows, IN CONST UINTN StartColumn)
EFI_FILE_PROTOCOL * CreateFileInterfaceFile(IN CONST EFI_FILE_PROTOCOL *Template, IN CONST BOOLEAN Unicode)
EFI_STATUS EFIAPI FileInterfaceFileGetInfo(IN EFI_FILE_PROTOCOL *This, IN EFI_GUID *InformationType, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
EFI_STATUS CreateTabCompletionList(IN CONST CHAR16 *InputString, IN CONST UINTN StringLen, IN CONST UINTN BufferSize, IN OUT EFI_SHELL_FILE_INFO **TabCompletionList, IN OUT UINTN *TabUpdatePos)
EFI_STATUS EFIAPI FileInterfaceStdOutWrite(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, IN VOID *Buffer)
UINTN EFIAPI AsciiSPrint(OUT CHAR8 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR8 *FormatString,...)
#define DEBUG_CODE(Expression)
EFI_FILE_INFO * FileInfo(IN EFI_FILE_HANDLE FHand)
VOID AddLineToCommandHistory(IN CONST CHAR16 *Buffer)
EFI_STATUS IsVolatileEnv(IN CONST CHAR16 *EnvVarName, OUT BOOLEAN *Volatile)
EFI_STATUS ShellAddEnvVarToList(IN CONST CHAR16 *Key, IN CONST CHAR16 *Value, IN UINTN ValueSize, IN UINT32 Atts)
EFI_STATUS ShellRemvoeEnvVarFromList(IN CONST CHAR16 *Key)
#define SHELL_SET_ENVIRONMENT_VARIABLE_NV(EnvVarName, BufferSize, Buffer)
#define SHELL_DELETE_ENVIRONMENT_VARIABLE(EnvVarName)
#define SHELL_SET_ENVIRONMENT_VARIABLE_V(EnvVarName, BufferSize, Buffer)
#define SHELL_GET_ENVIRONMENT_VARIABLE(EnvVarName, BufferSize, Buffer)
EFI_STATUS EFIAPI ShellPromptForResponseHii(IN SHELL_PROMPT_REQUEST_TYPE Type, IN CONST EFI_STRING_ID HiiFormatStringId, IN CONST EFI_HII_HANDLE HiiFormatHandle, IN OUT VOID **Response)
EFI_STATUS EFIAPI ShellIsDirectory(IN CONST CHAR16 *DirName)
EFI_STATUS EFIAPI ShellPrintEx(IN INT32 Col OPTIONAL, IN INT32 Row OPTIONAL, IN CONST CHAR16 *Format,...)
VOID InternalFreeShellFileInfoNode(IN EFI_SHELL_FILE_INFO *FileListNode)
EFI_STATUS(EFIAPI * EFI_FILE_FLUSH)(IN EFI_FILE_PROTOCOL *This)
EFI_STATUS(EFIAPI * EFI_FILE_WRITE)(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, IN VOID *Buffer)
EFI_STATUS(EFIAPI * EFI_FILE_DELETE)(IN EFI_FILE_PROTOCOL *This)
EFI_STATUS(EFIAPI * EFI_FILE_SET_INFO)(IN EFI_FILE_PROTOCOL *This, IN EFI_GUID *InformationType, IN UINTN BufferSize, IN VOID *Buffer)
EFI_STATUS(EFIAPI * EFI_FILE_OPEN)(IN EFI_FILE_PROTOCOL *This, OUT EFI_FILE_PROTOCOL **NewHandle, IN CHAR16 *FileName, IN UINT64 OpenMode, IN UINT64 Attributes)
EFI_STATUS(EFIAPI * EFI_FILE_GET_INFO)(IN EFI_FILE_PROTOCOL *This, IN EFI_GUID *InformationType, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
EFI_STATUS(EFIAPI * EFI_FILE_GET_POSITION)(IN EFI_FILE_PROTOCOL *This, OUT UINT64 *Position)
EFI_STATUS(EFIAPI * EFI_FILE_CLOSE)(IN EFI_FILE_PROTOCOL *This)
EFI_STATUS(EFIAPI * EFI_FILE_READ)(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
EFI_STATUS(EFIAPI * EFI_FILE_SET_POSITION)(IN EFI_FILE_PROTOCOL *This, IN UINT64 Position)
#define EFI_VARIABLE_NON_VOLATILE
#define EFI_UNICODE_BYTE_ORDER_MARK
EFI_SIMPLE_TEXT_OUTPUT_MODE * Mode
LIST_ENTRY Link
Linked list members.
CONST CHAR16 * FileName
name of this file.
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL * StdErr
EFI_SIMPLE_TEXT_INPUT_PROTOCOL * ConIn
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL * ConOut
UINT32 NoConsoleOut
Was "-noconsoleout" found on command line.
EFI_HII_HANDLE HiiHandle
Handle from HiiLib.
CONSOLE_LOGGER_PRIVATE_DATA * ConsoleInfo
Pointer for ConsoleInformation.
BOOLEAN InsertMode
Is the current typing mode insert (FALSE = overwrite).