{"version":1,"pages":[{"id":"OyeBlIHBQoSXjyBPYdoZ","title":"프로젝트 개요","pathname":"/uefi","siteSpaceId":"sitesp_jXM3f","emoji":"1f9d1-1f3eb","description":"BoB 11기 MCD Team"},{"id":"vDHoiWckowk6gojR0qHr","title":"1. BIOS의 과거","pathname":"/uefi/introduction-uefi/1.bios-history","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개념","emoji":"1f4d6"}]},{"id":"h51R4JS8sPhXRCQgfpC4","title":"2. UEFI 개념","pathname":"/uefi/introduction-uefi/2.uefi-introduction","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개념","emoji":"1f4d6"}]},{"id":"bDhC0EK2my5uujJVfa61","title":"3. BIOS vs UEFI","pathname":"/uefi/introduction-uefi/3.bios-vs-uefi","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개념","emoji":"1f4d6"}]},{"id":"LugmUcqKKkOYy7iK8Ejz","title":"4. UEFI 부팅 단계","pathname":"/uefi/introduction-uefi/4.uefi-boot-process","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개념","emoji":"1f4d6"}]},{"id":"yTF9Vv9uob4d6gUHgeYT","title":"UEFI 개발 시작하기","pathname":"/uefi/uefi-development/uefi-start","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"}]},{"id":"lcCjflStZGwnFY76wiCs","title":"0. EDK II 빌드 환경 구성","pathname":"/uefi/uefi-development/uefi-start/0.edkii-build","siteSpaceId":"sitesp_jXM3f","description":"EDK II 를 이용하여 EFI 만들기","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"UEFI 개발 시작하기"}]},{"id":"ADNNyMzqaOEOQYv2kC7s","title":"1. 간단한 EFI application 만들기","pathname":"/uefi/uefi-development/uefi-start/1.efi-application","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"UEFI 개발 시작하기"}]},{"id":"L0RmMAfkm5rLC4YjwbKK","title":"2. 간단한 Pkg 만들기","pathname":"/uefi/uefi-development/uefi-start/2.simple-pkg","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"UEFI 개발 시작하기"}]},{"id":"mtyl9HCY3NZ9eu3T2czw","title":"3. Hello World 출력하기","pathname":"/uefi/uefi-development/uefi-start/3.print-hello-world","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"UEFI 개발 시작하기"}]},{"id":"wileucX0AKj1wyCDvoCU","title":"4. 라이브러리와 Hello World","pathname":"/uefi/uefi-development/uefi-start/4.library-and-hello-world","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"UEFI 개발 시작하기"}]},{"id":"Kxn22nLf2wAGObvOCY0E","title":"5. Conf를 통한 Build 단순화","pathname":"/uefi/uefi-development/uefi-start/5.conf-build","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"UEFI 개발 시작하기"}]},{"id":"iId5NwiZwY0sFXtVzUHh","title":"핸들 및 프로토콜","pathname":"/uefi/uefi-development/handle-protocol","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"}]},{"id":"HQFDGAXpEGLho2Q15DXM","title":"6. 핸들/프로토콜 데이터 베이스 구조 - Part 1","pathname":"/uefi/uefi-development/handle-protocol/6.handle-protocol-part-1","siteSpaceId":"sitesp_jXM3f","description":"ImageHandle에 대한 이론 및 기본 사용","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"핸들 및 프로토콜"}]},{"id":"jSOQEFd2wo25hFQ0294T","title":"7. 핸들/프로토콜 데이터 베이스 구조 - Part 2","pathname":"/uefi/uefi-development/handle-protocol/7.handle-protocol-part-2","siteSpaceId":"sitesp_jXM3f","description":"애플리케이션 프로토콜에 대한 기본적인 사용","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"핸들 및 프로토콜"}]},{"id":"eVYVZ7A3SojFI9amwqeR","title":"8. HandleProtocol API 함수 & ImageHandle 프로토콜을 통한 정보","pathname":"/uefi/uefi-development/handle-protocol/8.handleprotocol-api","siteSpaceId":"sitesp_jXM3f","description":"HandleProtocol 함수에 대한 기본 사용 및 ImageHandle 프로토콜로부터의 정보 얻기","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"핸들 및 프로토콜"}]},{"id":"QZ25fz4wWH38ufjZ9dYR","title":"9. ProtocolsPerHandle API를 통한 ImageHandle 프로토콜 가져오기","pathname":"/uefi/uefi-development/handle-protocol/9.protocolsperhandle-api","siteSpaceId":"sitesp_jXM3f","description":"API를 통해서 간편하게 ImageHandle 프로토콜 가져오기","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"핸들 및 프로토콜"}]},{"id":"EhzEeFtiSQvtwacdUxUu","title":"10. EFI_STATUS 타입 과 EFI_ERROR 매크로","pathname":"/uefi/uefi-development/handle-protocol/10.efi_status","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"핸들 및 프로토콜"}]},{"id":"NZp4YzGZrex2bezfiJeY","title":"메모리 맵","pathname":"/uefi/uefi-development/memory-map","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"}]},{"id":"BS8difcu658FuIal66n0","title":"11. EFI 메모리 맵 정보 얻기","pathname":"/uefi/uefi-development/memory-map/11.efi-memory-map","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"메모리 맵"}]},{"id":"BmSSlHQrXJ2iIn7TNMBP","title":"12. EFI 메모리 맵을 리눅스 커널 스타일로 바꾸기","pathname":"/uefi/uefi-development/memory-map/12.efi-memory-map-kernel-style","siteSpaceId":"sitesp_jXM3f","description":"EFI_SHELL_PARAMETERS_PROTOCOL","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"메모리 맵"}]},{"id":"PdhWlOx0t1pkzvIC85MZ","title":"명령줄 인수를 받는 간단한 앱 만들기","pathname":"/uefi/uefi-development/shell-app","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"}]},{"id":"6sos655kGIgDYl7oZvBB","title":"13.ShellAppMain Entry point","pathname":"/uefi/uefi-development/shell-app/13.shellappmain-entry-point","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"명령줄 인수를 받는 간단한 앱 만들기"}]},{"id":"H9lsXAf9UJ2dgJH0HW2M","title":"14.gRT->GetNextVariableName API를 사용하여 모든 변수 이름 및 GUID 가져오기","pathname":"/uefi/uefi-development/shell-app/14.getnextvariablename-api","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"명령줄 인수를 받는 간단한 앱 만들기"}]},{"id":"PdlklzAGcXvTWfZcj1ce","title":"부팅 옵션","pathname":"/uefi/uefi-development/boot-option","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"}]},{"id":"eMQUWQ8FXxyMHYoQqwp3","title":"15. gRT->GetVariable API를 사용하여 부팅 변수 가져오기 및 구문 분석","pathname":"/uefi/uefi-development/boot-option/15.getvariable-api","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"부팅 옵션"}]},{"id":"eAaYkhNWXg223CrPhsct","title":"16. OVMF 이미지 내에 부팅 옵션 추가","pathname":"/uefi/uefi-development/boot-option/16.ovmf-image-boot-option","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"부팅 옵션"}]},{"id":"XcmI2vajjXCj6L38byv7","title":"17. 부팅 옵션에 WaitForEvent 함수 추가","pathname":"/uefi/uefi-development/boot-option/17.waitforevent","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"부팅 옵션"}]},{"id":"P04r23JeeAisr5Cz960z","title":"18. ReadKeyStroke 함수로 사용자 입력 처리","pathname":"/uefi/uefi-development/boot-option/18.readkeystroke","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"부팅 옵션"}]},{"id":"oBBareHO3kIxJ1F4CQkP","title":"19. bcfg 명령어를 사용한 부팅 옵션 수정","pathname":"/uefi/uefi-development/boot-option/19.use-bcfg","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"부팅 옵션"}]},{"id":"UDWmVItIMteBYketwbsq","title":"PCD","pathname":"/uefi/uefi-development/pcd","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"}]},{"id":"fFrgf4Tw0PHge1JmbeCN","title":"20. PCD 소개","pathname":"/uefi/uefi-development/pcd/20.intro-pcd","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"PCD"}]},{"id":"iwnO0fYqwOkbZI2neTbJ","title":"21. PCD 변수에 대한 Overriding","pathname":"/uefi/uefi-development/pcd/21.pcd-variable-overriding","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"PCD"}]},{"id":"Eh7Qul54JPHUiQsoQ6gP","title":"22. Feature Flag PCD와 BOOLEAN FixedAtBuild PCD의 비교","pathname":"/uefi/uefi-development/pcd/22.feature-flag-pcd","siteSpaceId":"sitesp_jXM3f","description":"Lesson 22에서는 다른 Feature Flag PCD라고 하는 PCD 유형을 소개할 예정이다. 이는 기본적으로 Boolean 값을 가진다.","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"PCD"}]},{"id":"nTcFXvsZqzSX872IXeR0","title":"23. PatchableInModule PCD 및 GenPatchPcdTable/PatchPcdValue 유틸리티를 통해 PCD를 변경하는 방법","pathname":"/uefi/uefi-development/pcd/23.patchableinmodule-pcd","siteSpaceId":"sitesp_jXM3f","description":"PatchableInModule PCD class에 대해서 알아보자.","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"PCD"}]},{"id":"TaSsAZDiDxOCGAJLQXJB","title":"24. Dynamic/DynamiEx PCDs","pathname":"/uefi/uefi-development/pcd/24.dynamic-dynamiex-pcds","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"PCD"}]},{"id":"oVcWWsikvy6WAQ5inZ74","title":"25. PCD 더 알아보기","pathname":"/uefi/uefi-development/pcd/25.more-pcd","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"PCD"}]},{"id":"bQce1E5VBtVUjOoR42pM","title":"테이블","pathname":"/uefi/uefi-development/table","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"}]},{"id":"5AcsbGx4qPL1X2a302BN","title":"26. EFI_CONFIGURATION_TABLE에서 참조되는 테이블","pathname":"/uefi/uefi-development/table/26.efi_configuration_table","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"테이블"}]},{"id":"4pHutGVBlpuNQUJE4sS8","title":"27. dmem/EFI_SMBIOS_PROTOCOL/smbiosview를 통해서 SMBIOS 정보 가져오기","pathname":"/uefi/uefi-development/table/27.-dmem-efi_smbios_protocol-smbiosview-smbios","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"테이블"}]},{"id":"7VDkh1OZnYv6vjcc6znV","title":"28. EFI_SHELL_PROTOCOL을 통하여 ACPI 테이블을 파일에 저장하기","pathname":"/uefi/uefi-development/table/28.efi_shell_protocol","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"테이블"}]},{"id":"E4PHZUeUL1a2GsGAzpXO","title":"29. EFI_ACPI_SDT_PROTOCOL 및 ShellLib를 사용하여 ACPI BGRT 테이블에서 BMP 이미지 저장하기","pathname":"/uefi/uefi-development/table/29.efi_acpi_sdt_protocol","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"테이블"}]},{"id":"eKlb3IJ2MU4l7ZfEqHPB","title":"PCI","pathname":"/uefi/uefi-development/pci","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"}]},{"id":"hkoOVTcfKoDLfguhCVA2","title":"30. PCI 루트 브리지 찾은 후 시스템의 모든 PCI 기능 가져오기","pathname":"/uefi/uefi-development/pci/30.pci","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"PCI"}]},{"id":"xlIJqYspoYjJElcfbxoF","title":"31. ShellLib/PrintLib 함수를 사용해 PCI Vendor/Device 정보 가져오기","pathname":"/uefi/uefi-development/pci/31.pci-vendor-device","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"PCI"}]},{"id":"Hnz52XW5I8LnnYJnFj6A","title":"32. EFI_PCI_IO_PROTOCOL을 사용해 PCI Option ROM 이미지 표시","pathname":"/uefi/uefi-development/pci/32.efi_pci_io_protocol","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"PCI"}]},{"id":"1ix0784I0xJ1zuAb8jF9","title":"33. EfiRom 유틸리티를 사용한 PCI Option ROM 이미지 파싱 및 생성","pathname":"/uefi/uefi-development/pci/33.efirom","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"PCI"}]},{"id":"uucjVY4gAmRJOb9mvHlD","title":"드라이버 및 라이브러리","pathname":"/uefi/uefi-development/driver-library","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"}]},{"id":"CaCOGC3MNz6kAg9Z08pu","title":"34. 간단한 UEFI 드라이버 생성","pathname":"/uefi/uefi-development/driver-library/34.simple-uefi-driver","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"드라이버 및 라이브러리"}]},{"id":"EYOWJgYpcs3xr2omIdFz","title":"35. 애플리케이션에서 사용할 간단한 라이브러리 생성","pathname":"/uefi/uefi-development/driver-library/35.simple-library","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"드라이버 및 라이브러리"}]},{"id":"GvFnyDifF2OtsXaRvrfV","title":"36. Library의 constructor와 destructor, NULL Library","pathname":"/uefi/uefi-development/driver-library/36.library-constructor-destructor","siteSpaceId":"sitesp_jXM3f","description":"이번 장에서는 Library의 constructor(생성자)와 destructor(소멸자)에 대해 배운다.","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"드라이버 및 라이브러리"}]},{"id":"bhUmI8KRxLTc5BoZYxxw","title":"37. Shell에 acpiview 명령을 추가하는 방법 조사","pathname":"/uefi/uefi-development/driver-library/37.shell-acpiview","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"드라이버 및 라이브러리"}]},{"id":"NUBIgOLtTk68vRjN16ec","title":"38. 사용자 지정 프로토콜을 만들고 사용하기","pathname":"/uefi/uefi-development/driver-library/38.installmultipleprotocolinterfaes","siteSpaceId":"sitesp_jXM3f","description":"InstallMultipleProtocolInterfaes와 UninstallMultipleProtocolInterfaces 사용","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"드라이버 및 라이브러리"}]},{"id":"APfRgwSj7G3OwuQjv9F5","title":"39. RegisterKeyNotify / UnrigisterKeyNotify 함수를 사용해 단축키 기능을 추가하는 드라이버 만들기","pathname":"/uefi/uefi-development/driver-library/39.registerkeynotify-unrigisterkeynotify","siteSpaceId":"sitesp_jXM3f","description":"39장에서는 단축키 조합에 대한 callback을 등록하는 드라이버를 만든다","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"드라이버 및 라이브러리"}]},{"id":"QAkipooSMQ4FsmMi1Kbu","title":"40. Key #### NVRAM 변수","pathname":"/uefi/uefi-development/driver-library/40.key-nvram-variable","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"드라이버 및 라이브러리"}]},{"id":"at2KCxKY72zAX8zYSWOA","title":"디버그","pathname":"/uefi/uefi-development/debug","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"}]},{"id":"82SWi1ws3GcP0w0zymYQ","title":"41. DEBUG 출력문 내부 구조와 DEBUG 문 제어를 위한 PCD 분석, 그리고 OVMF 부트 로그 가져오기","pathname":"/uefi/uefi-development/debug/41.debug","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"디버그"}]},{"id":"mBQvtONRU8otKvsaE3t0","title":"42. GDB를 이용한 Driver/Application 및 OVMF Debug","pathname":"/uefi/uefi-development/debug/42.gdb-ovmf-debug","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"디버그"}]},{"id":"xIk0P5BxgcSgigF6vNzd","title":"HII","pathname":"/uefi/uefi-development/hii","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"}]},{"id":"R1L2UtwYJ8rLu7SyzsA6","title":"43. HII 데이터베이스 개념 및 출력","pathname":"/uefi/uefi-development/hii/43.hii-database","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"HII"}]},{"id":"p6ZRi9nzzEi5rLEXxGZ3","title":"44. HII 데이터베이스 내부","pathname":"/uefi/uefi-development/hii/44.hii-database-inside","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"HII"}]},{"id":"M2bCewzz0zBj80KIP41X","title":"45. EFI_HII_DATABASE_PROTOCOL의 NewPackageList를 사용하여 문자열 패키지가 포함된 문자열 목록 게시","pathname":"/uefi/uefi-development/hii/45.efi_hii_database_protocol","siteSpaceId":"sitesp_jXM3f","description":"파트 1: 패키지 목록 데이터 생성의 일반적인 측면","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"HII"}]},{"id":"4hWV6xnDJvdyj0L0x250","title":"46. EFI_HII_DATABASE_PROTOCOL의 NewPackageList를 사용하여 문자열 패키지가 포함된 HII 패키지 목록 게시","pathname":"/uefi/uefi-development/hii/46.efi_hii_database_protocol-newpackagelist","siteSpaceId":"sitesp_jXM3f","description":"파트 2: 문자열 패키지 데이터 생성","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"HII"}]},{"id":"fxwHln8WekNni3M52nOd","title":"47. EFI_HII_DATABASE_PROTOCOL의 NewPackageList를 사용하여 문자열 패키지가 포함된 HII 패키지 목록 게시","pathname":"/uefi/uefi-development/hii/47.efi_hii_database_protocol-newpackagelist","siteSpaceId":"sitesp_jXM3f","description":"파트 3: NewPackageList 및 GetString 프로토콜 함수를 사용하여 모든 것을 결합하기","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"HII"}]},{"id":"f1gMgad0NP1HXqaw3PVj","title":"48. UNI 파일 및 HiiLib를 사용하여 HII String 패키지 게시 및 작업하기","pathname":"/uefi/uefi-development/hii/48.uni-hiilib","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"HII"}]},{"id":"fQiFKRs3jHOx6aw7WR6s","title":"49.MODULE_UNI_FILE/PACKAGE_UNI_FILE/[UserExtensions.TianoCore.\"ExtraFiles\"]의 도움으로 UNI 파일 선언하기","pathname":"/uefi/uefi-development/hii/49.uni-file","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"HII"}]},{"id":"KQg6Xv88jK82HxaiGktJ","title":"50.UEFI_HII_RESOURCE_SECTION을 사용하여 문자열 패키지와 함께 HII 패키지 목록 게시하기","pathname":"/uefi/uefi-development/hii/50.uefi_hii_resource_section","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"HII"}]},{"id":"0VGxbxrLQLsO514xjeIQ","title":"51. UEFI APP에 메뉴얼 추가하기(shell의 -?와 help 옵션)","pathname":"/uefi/uefi-development/hii/51.uefi-app-manual","siteSpaceId":"sitesp_jXM3f","description":"- EFI_SHELL_PROTOCOL의 EFI_SHELL_GET_HELP_TEXT 함수","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"HII"}]},{"id":"eo04wQHRPSAYRzpdTLlv","title":"52. Russian 글꼴 추가 - Part 1.","pathname":"/uefi/uefi-development/hii/52.russian-font-part-1","siteSpaceId":"sitesp_jXM3f","description":"EFI_NARROW_GLYPH/EFI_WIDE_GLYPH 형식 조사 및 *.woff 글꼴 파일에서 GLYPH 배열 구성","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"HII"}]},{"id":"TuKJui9t0s5Uab1X2B5g","title":"53. Russian 글꼴 추가 - Part 2.","pathname":"/uefi/uefi-development/hii/53.russian-font-part-2","siteSpaceId":"sitesp_jXM3f","description":"EFI_HII_SIMPLE_FONT_PACKAGE 구성 및 HII 데이터베이스에 채우기","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"HII"}]},{"id":"4Y1WXwYwy1vm7SumHwdG","title":"54. EFI_HII_STRING_PROTOCOL의 NewString 및 SetString 함수를 사용하여 다른 언어에 대한 문자열 패키지를 동적으로 추가","pathname":"/uefi/uefi-development/hii/54.efi_hii_string_protocol","siteSpaceId":"sitesp_jXM3f","description":"이 장에서는 UNI 변환을 시스템에 동적으로 추가하려 한다.","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"HII"}]},{"id":"eKd85Cnxvr269w5U2v4H","title":"55. PlatformLangCodes EFI 변수 수정 및 다른 언어를 동적 추가하기","pathname":"/uefi/uefi-development/hii/55.platformlangcodes","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"HII"}]},{"id":"Q4lzf606eYaRIowDcMDB","title":"56. 코드에서 FILE_GUID 및 BASE_NAME을 가져오기","pathname":"/uefi/uefi-development/hii/56.file_guid-base_name","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"HII"}]},{"id":"XIxaArjMPTpH7obfgPNi","title":"VFR","pathname":"/uefi/uefi-development/vfr","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"}]},{"id":"XQGgOAJQeTvw4NDz1zsk","title":"57. VFR을 사용해 간단한 폼 생성 및 EFI_FORM_BROWSER2_PROTOCOL.SendForm()를 통해 화면에 폼 표시하기","pathname":"/uefi/uefi-development/vfr/57.vfr-form","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"rf7IFsJqfqxk2O9rsSnF","title":"58. VFR 요소 : subtitle 및 text","pathname":"/uefi/uefi-development/vfr/58.subtitle-and-text","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"P61ZXsQ7NjRXYvQFWekZ","title":"59. 간단한 폼 애플리케이션을 UEFI 드라이버 Form으로 변환하기","pathname":"/uefi/uefi-development/vfr/59.form-application","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"QnW6VeFxGJVcOeXhUAEX","title":"60. gRT->SetVariable() 함수를 사용한 UEFI 변수 생성, 변경 및 삭제","pathname":"/uefi/uefi-development/vfr/60.setvariable","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"lQlYDbDwbsBx9GeKymAW","title":"61.dmpstore 명령을 사용하여 변수를 파일에 저장/로드하기","pathname":"/uefi/uefi-development/vfr/61.dmpstore","siteSpaceId":"sitesp_jXM3f","description":"dmpstore 변수 덤프에서 CRC32 체크섬을 재계산하는 애플리케이션 작성하기","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"JdJYVVgs62cuyWX3FJvA","title":"62. UEFI Device path의 구조","pathname":"/uefi/uefi-development/vfr/62.uefi-device-path","siteSpaceId":"sitesp_jXM3f","description":"동적 및 정적 Device path. Device path를 통한 상호 작용","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"Sptx6Lc7MFOOS7wLwLbl","title":"63. checkbox를 가진 HII 폼 만들기","pathname":"/uefi/uefi-development/vfr/63.checkbox-hii-form-part-1","siteSpaceId":"sitesp_jXM3f","description":"파트 1: checkbox 요소 및 efivarstore 요소에 대한 VFR 코드","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"V1lKdu3Idv8pc12ZI4Np","title":"64. checkbox를 가진 HII폼 만들기","pathname":"/uefi/uefi-development/vfr/64.checkbox-hii-form-part-2","siteSpaceId":"sitesp_jXM3f","description":"파트 2: efivarstore가 올바르게 작동하는 데 필요한 코드 작성하기","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"XduTAcfjpOu8bAtIOxQu","title":"65. VFR 추가 입력 요소 Part 1: number","pathname":"/uefi/uefi-development/vfr/65.vfr-number","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"y7hzEB4gAjMrKb9RRq2S","title":"66. VFR 추가 입력 요소 Part 2: string","pathname":"/uefi/uefi-development/vfr/66.vfr-string","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"qUaSl8dWTdtChc8QeE7U","title":"67. VFR 추가 입력 요소 Part 3: date & time","pathname":"/uefi/uefi-development/vfr/67.vfr-date-time","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"wQhzha27zotsQIPtS6GA","title":"68. VFR 추가 입력 요소 Part 3: oneof & orderedlist","pathname":"/uefi/uefi-development/vfr/68.vfr-oneof-orderedlist","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"25BHLpAxfY0ETgnHBYPD","title":"69. VFR의 조건부 키워드","pathname":"/uefi/uefi-development/vfr/69.vfr-if","siteSpaceId":"sitesp_jXM3f","description":"suppressif/grayoutif/disableif/warningif/nosubmitif/inconsistentif","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"rPCXmjCB7c4L6zdHkNlw","title":"70. VFR의 상수 및 연산자가 내장된 기본 조건문","pathname":"/uefi/uefi-development/vfr/70.vfr-if","siteSpaceId":"sitesp_jXM3f","description":"ideqval/ideqvalist/ideqid/questionref/pushthis","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"1MwUGCSfVkDgAI14TysJ","title":"71. 기본 VFR 내장 문자열용 함수","pathname":"/uefi/uefi-development/vfr/71.vfr-string-func","siteSpaceId":"sitesp_jXM3f","description":"stringref/toupper/tolower/length","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"gy9DQFiS6wPW1Ex9wjHc","title":"72. label 키워드를 이용하여 HII 양식에 동적 요소 추가하기","pathname":"/uefi/uefi-development/vfr/72.label-keyword","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"6sTEYaYhPFgF4cKoN7sL","title":"73. VFR question 기본값 설정","pathname":"/uefi/uefi-development/vfr/73.vfr-question","siteSpaceId":"sitesp_jXM3f","description":"default/defaultstore/resetbutton","breadcrumbs":[{"label":"UEFI 개발","emoji":"1f5a5"},{"label":"VFR"}]},{"id":"KndC90wrHNzEA2ElYXmW","title":"1. 개요","pathname":"/uefi/uefi-security/1.intro","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 보안","emoji":"1f510"}]},{"id":"hk6zLIwaDQB9zyHGyH8v","title":"2. 공격 벡터","pathname":"/uefi/uefi-security/2.attack-vector","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 보안","emoji":"1f510"}]},{"id":"42WxC79r1vRIEFQunu7D","title":"3. mitigation","pathname":"/uefi/uefi-security/3.mitigation","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 보안","emoji":"1f510"}]},{"id":"oK59vFjmVPi71Odj1lAn","title":"4. 정적 분석 방법","pathname":"/uefi/uefi-security/4.static-analysis","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 보안","emoji":"1f510"}]},{"id":"aksVNuz3PASLUzIpHwRL","title":"5. 동적 분석 방법","pathname":"/uefi/uefi-security/5.dinamyc-analysis","siteSpaceId":"sitesp_jXM3f","description":"","breadcrumbs":[{"label":"UEFI 보안","emoji":"1f510"}]}]}