67. VFR 추가 입력 요소 Part 3: date & time
date
요소
date
요소이번 챕터는 날짜를 저장하는데 사용하는 date
입력 요소를 살펴보겠다.
(https://edk2-docs.gitbook.io/edk-ii-vfr-specification/2_vfr_description_in_bnf/211_vfr_form_definition#2.11.6.9-vfr-date-statement-definition)
아래의 코드를 Form.vfr
에 추가해야 한다.
date
varid = FormData.DateValue,
prompt = STRING_TOKEN(DATE_PROMPT),
help = STRING_TOKEN(DATE_HELP),
enddate;
추가로 Strings.uni
에도 아래의 문자열을 추가해야 한다.
#string DATE_PROMPT #language en-US "Date prompt"
#string DATE_HELP #language en-US "Date help"
날짜는 특수 EFI_HII_DATE 유형으로 인코딩 된다. (https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Uefi/UefiInternalFormRepresentation.h)
typedef struct {
UINT16 Year;
UINT8 Month;
UINT8 Day;
} EFI_HII_DATE;
따라서 이를 이전과 동일하게 Data.h의 구조에 추가해주겠다.
typedef struct {
...
EFI_HII_DATE DateValue;
} UEFI_VARIABLE_STRUCTURE;
결과적으로 아래와 같은 화면이 나온다.

값은 MM/DD/YYYY
형식으로 표시된다. 따라서 날짜의 조건에 맞게 값을 넣어줘야 한다. 이외에도 윤년도 검사하기 때문에 02/29/2020
는 입력할 수 있지만 02/29/2021
은 입력이 안된다.
time
요소
time
요소time
VFR 입력 요소는 시간을 저장하는 데 사용된다
(https://edk2-docs.gitbook.io/edk-ii-vfr-specification/2_vfr_description_in_bnf/211_vfr_form_definition#2.11.6.10-vfr-time-statement-definition).
아래의 코드를 Form.vfr
에 추가 해야한다.
time
varid = FormData.TimeValue,
prompt = STRING_TOKEN(TIME_PROMPT),
help = STRING_TOKEN(TIME_HELP),
endtime;
Strings.uni
에 문자열 또한 추가해주자.
typedef struct {
UINT8 Hour;
UINT8 Minute;
UINT8 Second;
} EFI_HII_TIME;
추가로 Data.h
의 구조에 아래의 코드도 추가해주자.
typedef struct {
...
EFI_HII_TIME TimeValue;
} UEFI_VARIABLE_STRUCTURE;
결과는 결론적으로 아래와 같이 나오며 date
와 동일하게 HII Form Browser
에 유효하지 않은 시간 값은 설정이 불가능하다.
Last updated