ESRT 테이블 정의

ESRT 테이블에 대한 포인터는 EFI_CONFIGURATION_TABLE 해당 GUID를 통해 식별됩니다.

#define EFI_SYSTEM_RESOURCE_TABLE_GUID   \
{ 0xb122a263, 0x3661, 0x4f68,  0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80  }

다음 표에서는 ESRT 테이블의 형식과 테이블에 포함된 펌웨어 리소스 항목에 대해 설명합니다.

필드 배열 값 바이트 길이 바이트 오프셋 설명
펌웨어 리소스 수 4 0 ESRT의 펌웨어 리소스 항목 수입니다. 0이 아니어야 합니다.
펌웨어 리소스 최대값 4 4 테이블을 다시 할당하지 않고 추가할 수 있는 리소스 배열 항목의 최대 수입니다. 펌웨어 리소스 수보다 크거나 같아야 합니다.
펌웨어 리소스 버전 8 8 펌웨어 리소스 항목 버전입니다. 이 값은 1로 설정해야 합니다.
펌웨어 리소스 항목 배열 펌웨어 리소스 항목 0
펌웨어 클래스 16 16 업데이트 캡슐을 통해 업데이트할 수 있는 펌웨어 구성 요소를 식별하는 GUID입니다. 이 GUID는 업데이트 중에 업데이트 캡슐 헤더의 CapsuleGuid 매개 변수로 UEFI 업데이트 캡슐 런타임 서비스로 전달됩니다.
펌웨어 유형 4 32 펌웨어 리소스의 유형을 식별하는 다음 값 중 하나입니다.

0: 알 수 없음

1: 시스템 펌웨어

2: 디바이스 펌웨어

3: UEFI 드라이버
펌웨어 버전 4 36 현재 펌웨어 버전입니다. 여기서 숫자가 클수록 최신 릴리스를 나타냅니다. 이 값의 형식은 정의되지 않았지만 버전 주 숫자와 부 번호를 통합해야 합니다. 권장되는 형식은 첫 번째 단어가 주 단어이고 두 번째 단어는 부 버전 번호입니다.
지원되는 가장 낮은 펌웨어 버전 4 40 지정된 시스템/디바이스에 대해 펌웨어 리소스를 롤백할 수 있는 가장 낮은 펌웨어 리소스 버전입니다. 이 펌웨어 버전에서 보안 관련 수정을 사용할 수 있는 경우 호환성이 가장 낮은 버전은 현재 펌웨어 버전과 동일해야 합니다.
캡슐 플래그 4 44 업데이트 캡슐 헤더의 Flags 필드의 비트 0 – 15에서 UEFI 업데이트 캡슐 런타임 서비스로 전달되는 플래그(OS는 UEFI 사양의 섹션 7.5.3에 정의된 대로 Flags의 비트 16 – 31을 구성해야 합니다).
마지막 시도 버전 4 48 업데이트를 시도한 마지막 펌웨어 버전입니다. 이 값은 펌웨어 버전과 동일한 형식을 사용합니다.
마지막 시도 상태 4 52 마지막 펌웨어 업데이트 시도의 상태를 설명하는 다음 값 중 하나입니다.

0: 성공

1: 실패

2: 리소스 부족

3: 잘못된 버전

4: 잘못된 이미지 형식

5: 인증 오류

6: 전원 이벤트 - AC가 연결되지 않음

7: 전원 이벤트 - 배터리 부족
... 펌웨어 리소스 항목 1

핵심 UEFI 펌웨어는 자체에 대한 하나의 시스템 리소스 항목(시스템 펌웨어)이 포함된 ESRT 구성 테이블을 할당하고 채워야 합니다. 설명을 위해 이 가이드의 핵심 펌웨어는 펌웨어 업데이트 패키지 메커니즘을 사용하여 디바이스 펌웨어 업데이트를 지원하는 디바이스를 나타내는 하나의 추가 항목도 만듭니다.

시스템 펌웨어를 설명하는 항목은 항상 하나만 있어야 합니다. 이 항목은 시스템 펌웨어 업데이트를 대상으로 하는 데 사용됩니다. 구현에서 시스템 및 디바이스 펌웨어 업데이트를 단일 모놀리식 작업으로 수행하는 경우 시스템 펌웨어 항목을 사용하여 업데이트를 대상으로 지정해야 합니다. 다른 모든 경우에서 디바이스 펌웨어 업데이트는 디바이스 펌웨어를 설명하는 ESRT 항목의 대상이 됩니다.

그런 다음 첫 번째 단계는 이러한 두 펌웨어 리소스(예: {SYSTEM_FIRMWARE} 및 {DEVICE_FIRMWARE})를 나타내는 GUID를 생성하는 것입니다. 표 2에는 테이블 정의의 예가 표시됩니다. 이 예제에서는 두 펌웨어 버전이 현재 버전 1이라고 가정합니다(펌웨어 버전 == 1).

필드 배열 값 의견
펌웨어 리소스 수 2 이 테이블에는 두 개의 펌웨어 리소스 항목이 포함되어 있습니다.
펌웨어 리소스 최대값 2 이 테이블 할당에는 최대 2개의 리소스를 설명할 수 있는 충분한 공간이 포함되어 있습니다.
펌웨어 리소스 버전 1 이 테이블에서 사용하는 펌웨어 리소스 항목 형식 버전은 1입니다.
펌웨어 리소스 항목 배열 펌웨어 리소스 항목 0
펌웨어 클래스 (SYSTEM_FIRMWARE) 이 GUID는 PnP를 통해 업데이트할 시스템 펌웨어를 식별합니다.
펌웨어 유형 1 시스템 펌웨어 유형은 1입니다.
펌웨어 버전 1 현재 시스템 펌웨어 버전은 1입니다.
지원되는 가장 낮은 펌웨어 버전 1 지원되는 가장 낮은 펌웨어 버전은 1이므로 펌웨어를 버전 1 이전 버전으로 롤백할 수 없습니다.
캡슐 플래그 0 시스템 펌웨어는 프라이빗 캡슐 업데이트 플래그를 정의하지 않습니다.
마지막 시도 버전 1 업데이트를 시도한 마지막 시스템 펌웨어 버전은 버전 1이었습니다.
마지막 시도 상태 0 마지막 시스템 펌웨어 업데이트 시도가 성공했습니다.
펌웨어 리소스 항목 1
펌웨어 클래스 (DEVICE_FIRMWARE) 이 GUID는 PnP를 통해 업데이트할 디바이스 펌웨어를 식별합니다.
펌웨어 유형 2 디바이스 펌웨어 유형은 2입니다.
펌웨어 버전 1 현재 디바이스 펌웨어 버전은 1입니다.
지원되는 가장 낮은 펌웨어 버전 1 지원되는 가장 낮은 펌웨어 버전은 1이므로 펌웨어를 버전 1 이전 버전으로 롤백할 수 없습니다.
캡슐 플래그 0x8010 디바이스 펌웨어는 프라이빗 캡슐 업데이트 플래그(0x8010)를 정의합니다.
마지막 시도 버전 1 업데이트를 시도한 마지막 디바이스 펌웨어 버전은 버전 1입니다.
마지막 시도 상태 0 마지막 디바이스 펌웨어 업데이트 시도가 성공했습니다.

위의 ESRT 예제는 이 설명서의 다른 곳에서 펌웨어 업데이트 프로세스를 살펴보고 업데이트 프로세스에 대한 Windows 지원과 지원 펌웨어 구현을 설명하는 데 사용됩니다.

플러그 앤 플레이 디바이스

업데이트 드라이버 패키지 작성

업데이트 처리

UEFI 환경의 디바이스 I/O

원활한 위기 방지 및 복구

펌웨어 업데이트 상태