Question trong VFR là gì?

Question là đơn vị tương tác trong VFR, nối UI với QuestionId, VarStore và callback.

2 phút đọc
Đọc bằng Tiếng Việt English 日本語
HII / BIOS Setup Terms cover

Trong HII/VFR, question là một item người dùng có thể tương tác hoặc Browser có thể xử lý như một đơn vị cấu hình. oneof, checkbox, numeric, string, date, time, orderedlist đều là các dạng question.

Question quan trọng vì nó là điểm nối giữa UI và dữ liệu.

Mục Giá trị Ghi chú
QuestionId ID logic của question Callback thường dùng ID này để phân nhánh xử lý.
Prompt String token hiển thị chính Lấy từ String Package/.UNI.
Help String token mô tả Nên viết rõ vì người dùng BIOS rất hay dựa vào help text.
VarStoreId + Offset Vị trí dữ liệu Cho biết question đọc/ghi field nào.
Flags DEFAULT, RESET_REQUIRED, INTERACTIVE... Ảnh hưởng default, callback, reset message.

Ví dụ question với callback

checkbox varid = Setup.FastBoot,
  prompt     = STRING_TOKEN(STR_FAST_BOOT),
  help       = STRING_TOKEN(STR_FAST_BOOT_HELP),
  questionid = QUESTION_ID_FAST_BOOT,
  flags      = INTERACTIVE | RESET_REQUIRED;
endcheckbox;

Khi user đổi Fast Boot, Browser có thể gọi callback của driver nếu question có cờ phù hợp hoặc được Browser xử lý tương tác. Callback sẽ biết question nào đổi thông qua QuestionId.

EFI_STATUS
EFIAPI
SetupCallback (
  IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
  IN EFI_BROWSER_ACTION                    Action,
  IN EFI_QUESTION_ID                       QuestionId,
  IN UINT8                                 Type,
  IN EFI_IFR_TYPE_VALUE                   *Value,
  OUT EFI_BROWSER_ACTION_REQUEST          *ActionRequest
  )
{
  if (QuestionId == QUESTION_ID_FAST_BOOT && Action == EFI_BROWSER_ACTION_CHANGED) {
    DEBUG ((DEBUG_INFO, "FastBoot changed to %d\n", Value->u8));
  }
  return EFI_SUCCESS;
}

Common Pitfall

Question hiển thị đúng nhưng không callback vì thiếu INTERACTIVE, callback protocol chưa install, hoặc FormSet không dùng đúng driver handle.

Khi question không hoạt động như mong đợi

Bài liên quan

Thấy nội dung này hữu ích?

Lưu lại hoặc chia sẻ cho người cũng đang học firmware, BIOS/UEFI và embedded systems.

Nội dung liên quan

Một số bài viết, ghi chú hoặc project có liên quan đến nội dung bạn vừa đọc.

Biến note thành bài viết hoàn chỉnh

Notes là nơi ghi nhanh khái niệm.