다음을 통해 공유


GDL 아키텍처

이 항목에서는 GDL(일반 설명자 언어)의 아키텍처에 대해 설명합니다.

각 GDL 데이터 집합에 대해 데이터 형식을 설명하는 GDL 스키마 를 정의해야 합니다. 데이터 집합이 포함된 각 파일은 GDL 스키마를 참조합니다. 이 스키마를 사용하면 GDL 파서가 데이터 집합이 스키마를 준수하는지 확인하고 스냅샷 생성될 때 지정된 변환을 수행할 수 있습니다. GPD에 정의된 모든 데이터에 대해 Microsoft는 표준 스키마를 제공했습니다. 또한 파서에서는 일부 데이터를 구성할 수 있는 것으로 정의할 수 있습니다. 다른 데이터는 사용되는 구성에 따라 달라지는 방식으로 설명할 수 있습니다.

사양을 GDL 스키마로 변환할 수 있습니다. 데이터 집합이 포함된 각 파일은 GDL 스키마를 참조합니다. 이 스키마를 사용하면 GDL 파서가 데이터 집합이 스키마를 준수하는지 확인하고 스냅샷 생성될 때 지정된 변환을 수행할 수 있습니다.

데이터 집합과 스키마가 정의되면 클라이언트는 다른 구성을 지정하여 단일 데이터 집합에서 여러 뷰 또는 스냅샷을 만들 수 있습니다. Unidrv 구성 및 렌더링 플러그 인의 경우 클라이언트는 IPrintCoreHelperUni 인터페이스의 메서드를 통해 스냅샷 액세스할 수 있습니다. GDL 파서는 데이터 집합에 지정된 스키마를 로드하고 데이터 집합이 해당 스키마를 준수하는지 확인합니다. 데이터 집합이 준수하지 않으면 파서는 파일을 구문 분석하지 못했음을 나타냅니다.

데이터 집합 및 스키마가 정의되면 클라이언트는 구성을 지정하여 데이터 집합의 스냅샷을 만들 수 있습니다.

  1. 플러그 인은 IPrintOemUI::P ublishDriverInterface 메서드를 통해 IPrintCoreHelperUni 인터페이스에 대한 포인터를 가져옵니다.

  2. 플러그 인은 IPrintCoreHelperUni::CreateGDLSnapshot 또는 IPrintCoreHelperUni::CreateDefaultGDLSnapshot에 대한 호출을 통해 스냅샷 대한 액세스를 요청합니다. 플러그 인이 CreateGDLSnapshot을 호출하는 경우 호출자는 파서가 스냅샷 보기를 확인하는 데 사용하는 구성을 포함하는 DEVMODE 구조를 제공합니다.

  3. GDL 파서는 데이터 집합에 지정된 스키마를 로드하고 데이터 집합이 해당 스키마를 준수하는지 확인합니다. 데이터 집합이 준수하지 않으면 오류 메시지가 발생합니다.

  4. GDL 파서는 GDL 원본 파일에서 내부 데이터 구조를 만들고 스키마에서 제공되는 구성 및 처리 지침에 따라 적절한 보기를 결정합니다.

  5. 파서는 처리된 데이터 항목의 XML 표현(스냅샷)을 만듭니다. 이 XML 스냅샷 스트림으로 플러그 인에 반환됩니다.

스키마를 생략하면 파서는 스키마 유효성 검사를 수행하기만 하고 스냅샷 값은 원래 GDL 원본 파일에 정의된 바이트 문자열로 스냅샷 표시됩니다.

참고PublishDriverInterface 메서드는 IPrintOemUni 인터페이스 및 기타 인터페이스의 일부입니다. 따라서 플러그 인이 IPrintOemUI::P ublishDriverInterface에서 도우미 인터페이스를 반드시 가져오는 것은 아닙니다. 플러그 인이 구현하는 인터페이스 유형에 따라 IPrintOemUni::P ublishDriverInterface 또는 다른 곳에서 도우미 인터페이스를 가져올 수 있습니다.