2011年1月4日 星期二

請做好EFI的指標動態記憶體配置...

新年第一帖:
最近使用了某家的Application,但每次執行到EFI_LEGACY_BIOS_PROTOCOL內的FarCall86時必當...
結果原來是該Application中的指標記憶體配置沒做好,以致它的起始位置在1MB以下,覆蓋掉原先的資料造成錯誤。

佔版面時間:
#define EFI_LEGACY_BIOS_PROTOCOL_GUID \
{ 0xdb9a1e3d, 0x45cb, 0x4abb, 0x85, 0x3b, 0xe5, 0x38, 0x7f, 0xdb, 0x2e, 0x2d}

typedef struct _EFI_LEGACY_BIOS_PROTOCOL {
 EFI_LEGACY_BIOS_INT86 Int86;
 EFI_LEGACY_BIOS_FARCALL86 FarCall86;
 EFI_LEGACY_BIOS_CHECK_ROM CheckPciRom;
 EFI_LEGACY_BIOS_INSTALL_ROM InstallPciRom;
 EFI_LEGACY_BIOS_BOOT LegacyBoot;
 EFI_LEGACY_BIOS_UPDATE_KEYBOARD_LED_STATUS UpdateKeyboardLedStatus;
 EFI_LEGACY_BIOS_GET_BBS_INFO GetBbsInfo;
 EFI_LEGACY_BIOS_SHADOW_ALL_LEGACY_OPROMS ShadowAllLegacyOproms;
 EFI_LEGACY_BIOS_PREPARE_TO_BOOT_EFI PrepareToBootEFI;
 EFI_LEGACY_BIOS_GET_LEGACY_REGION GetLegacyRegion;
 EFI_LEGACY_BIOS_COPY_LEGACY_REGION CopyLegacyRegion;
 EFI_LEGACY_BIOS_BOOT_UNCONVENTIONAL_DEVICE BootUnconventionalDevice;
} EFI_LEGACY_BIOS_PROTOCOL;

可用此Protocol執行傳統的Legacy Code或OS。

沒有留言:

張貼留言