[UEFI] GUID FAQ 번역

이번 번역글은 UEFI 의 GUID에 대한 FAQ 입니다. 

   번역 원문은 http://tianocore.sourceforge.net/wiki/GUID 입니다.

발로 번역한 거라 내용중 틀릴 수도 있는데 그런 부분은 꼭! 지적해 주세요.
번역된 내용을 나중에 한글 FAQ 를 해당 사이트에 올려 오픈 소스 하시는 분들에게 도움이 되고 싶습니다. 

번역을 도와 주신 미지님께 가슴 깊이 감사 드립니다. 
  
GUID FAQ

### GUID를 생성하는 방법은?
  
    GUID 란 전세계적으로 유일한 고유번호를 지정하기위한 128 비트 크기의 ID 규정으로 
    인텔 웹사이트에 있는 "Wired for Management WfM 2.0" 규격서에서 정의하고 있습니다.
    
    http://www.guidgen.com 란 웹사이트에서 GUID 를 생성할 수도 있고,
    마이크로소프트 비주얼 스튜디오로도 GUID 를 생성할수 있습니다. 
    
    이러한 툴로 생성된 GUID는 중복 가능성은 거의 없습니다. 
    
### 콘솔에 표시된 모든 GUID를 어떻게 디코드합니까?
    
    빌드 과정에서 GUID.xref 파일이 생성되며, 빌드 결과 디렉토리에 있습니다. 
    
    이렇게 생성된 GUID.xref 파일은 모든 GUID와 각 GUID와 관련된 모듈을 나열합니다.
    
    GUID를 디코드하는 다른 방법은 워크스페이스에서 검색 유틸리티를 사용하여
    DEC 와 INF 파일을 검색하는 것입니다.
    
    DEC 파일은 GUID 값들 간에 매핑된 모든 프로토콜 과 PPI,GUID
    그리고 C 소스에서 사용되는 글로벌 변수에 대한 C 네임 선언을 포함합니다.
    
    FILE GUID 를 포함한 INF 파일은 FV에 저장된 FFS 파일의 GUID 이름에 대해 정의합니다.
    
    DEC 예
    ----------------------------------------------------------------------------------     
    Guid specify the device is the console out device.
    Include/Guid/ConsoleOutDevice.
    hgEfiConsoleOutDeviceGuid = { 0xD3B36F2C, 0xD551, 0x11D4, 
    { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }
    
    [Protocols] 
    
    Load File protocol provides capability to load 
    and unload EFI image into memory and execute it.
    
    Include/Protocol/LoadPe32Image.h
    This protocol is deprecated. 
    
    Native EDKII module should NOT use this protocol to load/unload image.
    
    If developer need implement such functionality, 
    they should use BasePeCoffLib.
    gEfiLoadPeImageProtocolGuid    = { 0x5CB5C776, 0x60D5, 0x45EE, 
    { 0x88, 0x3C, 0x45, 0x27, 0x08, 0xCD, 0x74, 0x3F }
    ----------------------------------------------------------------------------------     
    
    INF 예
    ----------------------------------------------------------------------------------     
    [Defines]       
    
    INF_VERSION                = 0x00010005
    BASE_NAME                  = DiskIoDxe
    FILE_GUID                  = 6B38F7B4-AD98-40e9-9093-ACA2B5A253C4
    MODULE_TYPE                = UEFI_DRIVER
    VERSION_STRING             = 1.0
    ENTRY_POINT                = InitializeDiskIo
    ----------------------------------------------------------------------------------     
    
    
### 커스터머가 정의한 GUID 와 규격서에 정의된 GUID를 디코드하는 쉬운 방법이 있습니까?
    
    아직까지 질문하신 것을 관리할 수 있는 툴은 없습니다.
    이런 관리 툴을 요청해 보세요
    
    지금으로서는 Guid.xref 파일을 이용하여 스프레드 시트로 가져와서 
규격서에 있는 GUID와 비교하는 방법이 있습니다. 
    
    소스 코드에 있는 프로토콜, PPI 와 GUID 를 사용한 GUID는 
    DEC 파일에 반드시 명기되어 있어야 합니다.
    
    DEC 파일은 GUID 를 위해 코멘트(주석) 블록을 사용할 수 있고,
    프로토콜, PPI 와 GUID 를 위한 간단한 설명을 넣을 수 있습니다.
    
    산업 표준 규격에 근거한 모든 GUID 는 MdePkg 에 있고,
    MdePkg 에 대한 문서를 만들수 있는 Doxygen 에도 있습니다.
    
    각 Protocol/PPI/GUID 에 대한 전체 .h 파일은 
    Protocol/PPI/GUID 를 정의한 DEC 파일처럼 같은 패키지에 있어야 합니다.
    
    UDK 2010에 포함된 일부 패키지는 인클루드 파일 구성에 대한 권장 사항을 따르고 있기 때문에, 
    Protocol/PPI/GUID 과 관련된 .h 파일을 찾아 보는 것은 좋습니다. 
    
    <PackageName>\
       <PackageName>.dec
       Include\
         Protocol\
           <Protocol1.h>
           <Protocol2.h>
         Ppi\
           <Ppi1.h>
           <Ppi2.h>
         Guid\
           <Guid1.h>
           <Guid2.h>
    
### 프로토콜 드라이버에 대한 GUID 체인을 추적하는 툴이 있습니까?
    
    빌드 도구는 xref 파일을 생성하는데 생성된 xref 파일은 플랫폼에 필요한 guid name 과 관련된 
    모든 빌드 대상이 되는 GUID 를 정의합니다. 
    이 과정에서 각 name 에 대한 GUID 값을 매핑합니다. 
    
### 각 프로토콜에 대응하는 GUID 이름은 어디에서 사용되고 있습니까?
    
    BUILD –Y 명령을 사용하여 GUID 사용처의 리포트를 만들수 있습니다. 
    
### GUID 가 매핑하는 드라이버는 무엇이고 설치된 드라이버를 찾는 방법은 무엇입니까?
    
    빌드 과정 중에 Guid.xref 파일이 생성되는데 
      
    이렇게 생성된 Guid.xref 파일은 모든 GUID 와 플랫폼에 빌트되는 각 GUID 와 관련된 모듈을 나열합니다.
    
    쉘 프롬프트에서 "Drivers" 명령을 이용하면 설치된 드라이버를 리스트를 볼수 있습니다. 
    
### 플랫폼에 설치된 모든 GUID에 대한 데이터 베이스가 있습니까?
    
    예, 있습니다. EFI 쉘 프롬프트에서 "dh" 명령을 사용하면 GUID와 관련된 모든 핸들을 볼 수 있습니다. 
    
    빌드 과정에서 Guid.xref 파일이 빌드 결과 디렉토리에 생성됩니다.
    
    이 파일은 모든 GUID와 각 GUID 에 관련된 모듈을 나열합니다.
    
### 왜 GUID를 선언하는 섹션이 FDF 파일에 있습니까?
    
    GUID 섹션은 guid 와 관련된 부분을 정의하기 위해 사용됩니다.
    
    GUID keyword - used for signing- compression 
    - encryption (encapsulation section -list of sections] 
    as devided in the PI Spec.
    번역 : 뭐라는 거야? 

### 왜 GUID를 사용합니까?

    맵핑 때문인데, 압축과는 상관이 없습니다. 
    
    툴들이 실행될 때 상호 참조가 되는 GUID 는 conf 디렉토리에 있는 tools_def.txt 를 사용합니다.