EFI_STATUS EFIAPI OvrGetMemoryMap( IN OUT UINTN *MemoryMapSize, IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap, OUT UINTN *MapKey, OUT UINTN *DescriptorSize, OUT UINT32 *DescriptorVersion ) { EFI_STATUS Status; // UINTN inMemoryMapSize = *MemoryMapSize; Status = gOrgBS.GetMemoryMap(MemoryMapSize, MemoryMap, MapKey, DescriptorSize, DescriptorVersion); // if print to console, then ExitBootServices will not work // PRINT("->GetMemoryMap(0x%x/0x%x, %p, 0x%x, 0x%x, 0x%x) = %r\n", inMemoryMapSize, *MemoryMapSize, MemoryMap, *MapKey, *DescriptorSize, *DescriptorVersion, Status); if (Status == EFI_SUCCESS) { #if PRINT_MEMORY_MAP == 1 PrintMemMap(*MemoryMapSize, MemoryMap, *DescriptorSize, *DescriptorVersion); #endif } //Print(L"OvrGetMemoryMap\n"); return Status; }
static void test_open_disc ( int argc, char ** argv ) { putchar('\n'); int i, dump_level = 0; bool print_mm = false, print_ptab = false; wd_pfst_t pfst = 0; for ( i = 1; i < argc; i++ ) { if (!strcmp(argv[i],"-l") ) dump_level++; if (!strcmp(argv[i],"-ll")) dump_level += 2; if (!strcmp(argv[i],"-lll")) dump_level += 3; if (!strcmp(argv[i],"-m")) print_mm = true; if (!strcmp(argv[i],"-p")) print_ptab = true; if (!strcmp(argv[i],"-f")) pfst |= WD_PFST__ALL; if (!strcmp(argv[i],"-u")) pfst |= WD_PFST_UNUSED|WD_PFST_HEADER; if (!strcmp(argv[i],"-o")) pfst |= WD_PFST_OFFSET|WD_PFST_HEADER; if (!strcmp(argv[i],"-h")) pfst |= WD_PFST_SIZE_HEX|WD_PFST_HEADER; if (!strcmp(argv[i],"-d")) pfst |= WD_PFST_SIZE_DEC|WD_PFST_HEADER; if (!strcmp(argv[i],"-L")) logging++; if ( *argv[i] == '-' ) continue; SuperFile_t sf; InitializeSF(&sf); if (!OpenSF(&sf,argv[i],false,false)) { printf("*** %s\n",sf.f.fname); enumError err; wd_disc_t * disc = wd_open_disc(WrapperReadDirectSF,&sf,sf.file_size, sf.f.fname,opt_force,&err); if (disc) { putchar('\n'); wd_print_disc(stdout,3,disc,dump_level); if (print_mm) { MemMap_t mm; InitializeMemMap(&mm); InsertDiscMemMap(&mm,disc); printf("\nMemory map:\n\n"); PrintMemMap(&mm,stdout,3,0); ResetMemMap(&mm); } if (print_ptab) { printf("\nPartition tables:\n\n"); char buf[WII_MAX_PTAB_SIZE]; ReadSF(&sf,WII_PTAB_REF_OFF,buf,WII_MAX_PTAB_SIZE); u64 * ptr = (u64*)(buf + WII_MAX_PTAB_SIZE) - 1; while ( ptr > (u64*)buf && !*ptr ) ptr--; ptr++; HexDump16(stdout,3,WII_PTAB_REF_OFF,buf,(ccp)ptr-buf); putchar('\n'); wd_patch_ptab(disc,buf,true); ptr = (u64*)(buf + WII_MAX_PTAB_SIZE) - 1; while ( ptr > (u64*)buf && !*ptr ) ptr--; ptr++; HexDump16(stdout,3,WII_PTAB_REF_OFF,buf,(ccp)ptr-buf); } if (pfst) { printf("\nFile list:\n\n"); wd_print_fst(stdout,3,disc,WD_IPM_AUTO,pfst,0,0); } wd_close_disc(disc); putchar('\n'); } else printf("\t==> FAILED, err=%x=%d!\n\n",err,err); CloseSF(&sf,0); } } }