※ 引述《lordking (卡多)》之銘言:
: 剛剛進入EFI領域 有些許語法都與C參考書寫法不同
: 想請問一下 下列片段程式碼意義
: if (pST->FirmwareRevision)
: InitString(
: HiiHandle,STRING_TOKEN(ABC),
: L"%d.%d.%d.%d",
: ((UINT16*)&pST->FirmwareRevision)[1],
: ^^^^^^^^^^^^^^^^ 應該如何解讀??
: *(UINT16*)&pST->FirmwareRevision / 100,
: ^^^^^^^^^^^^^^^^應該如何解讀??
: *(UINT16*)&pST->FirmwareRevision % 100 / 10,
: *(UINT16*)&pST->FirmwareRevision % 10
: 謝謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.235.8
F/W 版本 本來是 4byte, 但他取2byte 所以要轉型
原因可能是 前2byte是一個意思, 後2byte是另一個意思
譬如說 major number 與 minor number 之類的
這個要查一下 SPEC
typedef struct _EFI_SYSTEM_TABLE {
EFI_TABLE_HEADER Hdr;
CHAR16 *FirmwareVendor;
UINT32 FirmwareRevision;
EFI_HANDLE ConsoleInHandle;
SIMPLE_INPUT_INTERFACE *ConIn;
EFI_HANDLE ConsoleOutHandle;
SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut;
EFI_HANDLE StandardErrorHandle;
SIMPLE_TEXT_OUTPUT_INTERFACE *StdErr;
EFI_RUNTIME_SERVICES *RuntimeServices;
EFI_BOOT_SERVICES *BootServices;
UINTN NumberOfTableEntries;
EFI_CONFIGURATION_TABLE *ConfigurationTable;
} EFI_SYSTEM_TABLE;