Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1999 Intel Corporation
Module Name: main.c
Abstract:
--*/
#include "hexedit.h"
typedef enum { NEW_FILE, OPEN_FILE, OPEN_DISK, OPEN_MEMORY } IMAGE_TYPE;
STATIC VOID PrintUsage ( VOID ) { Print(L"\n\n %Ehex Usage%N\n"); Print(L" %H[-f] Filename%N Open File For Editing\n"); Print(L" %H-d Offset Size%N Open Disk Area For Editing\n"); Print(L" %H-m Offset Size%N Open Memory Area For Editing\n"); Print(L" %H-h%N Print This Screen\n"); Print(L"\n\n"); }
EFI_STATUS InitializeEFIHexEditor ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) { EFI_STATUS Status; CHAR16 *Name; UINTN Offset = 0; UINTN Size = 0; IMAGE_TYPE WhatToDo = NEW_FILE;
InitializeLib (ImageHandle, SystemTable); InitializeShellApplication (ImageHandle, SystemTable);
Name = PoolPrint(L"New File");
if ( SI->Argc > 1 ) { if (StrCmp(SI->Argv[1],L"-h") == 0) { PrintUsage(); return EFI_SUCCESS; } else if (StrCmp(SI->Argv[1],L"-d") == 0) { if (SI->Argc < 5) { PrintUsage(); return EFI_SUCCESS; } Name = SI->Argv[2]; Offset = xtoi(SI->Argv[3]); Size = xtoi(SI->Argv[4]); WhatToDo = OPEN_DISK; } else if (StrCmp(SI->Argv[1],L"-m") == 0) { if (SI->Argc < 4) { PrintUsage(); return EFI_SUCCESS; }
Offset = xtoi(SI->Argv[2]); Size = xtoi(SI->Argv[3]); WhatToDo = OPEN_MEMORY; } else { if (StrCmp(SI->Argv[1],L"-f") == 0) { if (SI->Argc > 2) { Name = SI->Argv[2]; } else { PrintUsage(); return EFI_SUCCESS; } } else { Name = SI->Argv[1]; } WhatToDo = OPEN_FILE; }
}
Status = MainEditor.Init(&ImageHandle); if (EFI_ERROR(Status)) { EditorError(Status,L"Initialization Failed"); return EFI_SUCCESS; } Status = MainEditor.BufferImage->FileImage->Init (); if (EFI_ERROR(Status)) { EditorError(Status,L"File Handle Initialization Failed"); return EFI_SUCCESS; }
switch (WhatToDo) { case OPEN_FILE: MainEditor.BufferImage->FileImage->Init(); MainEditor.BufferImage->FileImage->SetFilename(Name); break; case OPEN_DISK: MainEditor.BufferImage->DiskImage->Init(); MainEditor.BufferImage->DiskImage->SetDevice(Name); MainEditor.BufferImage->DiskImage->SetOffset(Offset); MainEditor.BufferImage->DiskImage->SetSize(Size); break; case OPEN_MEMORY: MainEditor.BufferImage->MemImage->Init(); MainEditor.BufferImage->DiskImage->SetOffset(Offset); MainEditor.BufferImage->DiskImage->SetSize(Size); break; default: ; }
if (WhatToDo != NEW_FILE) { Status = MainEditor.BufferImage->Open(); if ( EFI_ERROR(Status) ) { EditorError(Status,L"Could Not Open File"); return EFI_SUCCESS; } MainEditor.TitleBar->SetTitleString (Name); MainEditor.BufferImage->Read(); }
MainEditor.Refresh (); MainEditor.MenuBar->Refresh();
MainEditor.KeyInput ();
MainEditor.Cleanup();
return EFI_SUCCESS; }
|