Архитектура GDL
В этом разделе описывается архитектура универсального языка дескриптора (GDL).
Для каждого набора данных GDL следует определить схему GDL для описания формата данных. Каждый файл, содержащий набор данных, ссылается на схему GDL. Эта схема позволяет синтаксическому анализатору GDL проверять соответствие набора данных схеме и выполнять любые указанные преобразования при создании snapshot. Для всех данных, определенных в GPD, корпорация Майкрософт предоставила стандартную схему. Кроме того, средство синтаксического анализа позволяет определить некоторые данные как настраиваемые. Другие данные можно описать таким образом, чтобы они зависели от используемой конфигурации.
Спецификацию можно преобразовать в схему GDL. Каждый файл, содержащий набор данных, ссылается на схему GDL. Эта схема позволяет синтаксическому анализатору GDL проверять соответствие набора данных схеме и выполнять любые указанные преобразования при создании snapshot.
После определения наборов данных и схемы клиент может создать несколько представлений или моментальных снимков из одного набора данных, указав различные конфигурации. Для подключаемых модулей конфигурации и отрисовки Unidrv клиент может получить доступ к snapshot с помощью методов в интерфейсе IPrintCoreHelperUni. Средство синтаксического анализа GDL загрузит схему, указанную в наборе данных, и убедится, что набор данных соответствует его схеме. Если набор данных не соответствует требованиям, средство синтаксического анализа будет указывать на сбой при анализе файла.
После определения наборов данных и схемы клиент может создавать моментальные снимки набора данных, указав конфигурацию:
Подключаемый модуль получает указатель на интерфейс IPrintCoreHelperUni с помощью метода IPrintOemUI::P ublishDriverInterface .
Подключаемый модуль запрашивает доступ к snapshot через вызов IPrintCoreHelperUni::CreateGDLSnapshot или IPrintCoreHelperUni::CreateDefaultGDLSnapshot. Если подключаемый модуль вызывает CreateGDLSnapshot, вызывающий объект предоставляет структуру DEVMODE, которая включает конфигурацию, используемую синтаксический анализатор для определения представления snapshot.
Средство синтаксического анализа GDL загружает схему, указанную в наборе данных, и проверяет соответствие набора данных его схеме. Если набор данных не соответствует требованиям, будут выдаваться сообщения об ошибках.
Средство синтаксического анализа GDL создает внутреннюю структуру данных из исходного файла GDL и определяет соответствующее представление на основе предоставленной конфигурации и инструкций по обработке в схеме.
Средство синтаксического анализа создает XML-представление (snapshot) обработанных записей данных. Этот XML-snapshot возвращается в подключаемый модуль в виде потока.
Если схема опущена, средство синтаксического анализа просто выполнит проверку схемы, а snapshot значения будут представлены в snapshot в виде строки байтов, которые изначально были определены в исходном файле GDL.
Примечание Метод PublishDriverInterface также является частью интерфейса IPrintOemUni и других интерфейсов. Поэтому подключаемый модуль не обязательно получает вспомогательный интерфейс из IPrintOemUI::P ublishDriverInterface. Он может получить вспомогательный интерфейс из IPrintOemUni::P ublishDriverInterface или в другом месте в зависимости от типа интерфейса, реализуемого подключаемым модулем.