Compartilhar via


Arquitetura GDL

Este tópico descreve a arquitetura da GDL (Linguagem de Descritor Genérico).

Para cada conjunto de dados GDL, você deve definir um esquema GDL para descrever o formato dos dados. Cada arquivo que contém um conjunto de dados faz referência ao esquema GDL. Esse esquema permite que o analisador GDL verifique se o conjunto de dados está em conformidade com o esquema e execute quaisquer transformações especificadas quando o instantâneo for construído. Para todos os dados definidos no GPD, a Microsoft forneceu um esquema padrão. Além disso, o analisador permite que você defina alguns dados como configuráveis. Outros dados podem ser descritos de uma maneira que os faça depender da configuração usada.

A especificação pode ser convertida em um esquema GDL. Cada arquivo que contém um conjunto de dados faz referência ao esquema GDL. Esse esquema permite que o analisador GDL verifique se o conjunto de dados está em conformidade com o esquema e execute quaisquer transformações especificadas quando o instantâneo for construído.

Depois que os conjuntos de dados e o esquema forem definidos, o cliente poderá criar várias exibições ou instantâneos de um único conjunto de dados especificando configurações diferentes. Para plug-ins de configuração e renderização unidrv, o cliente pode acessar o instantâneo por meio dos métodos na interface IPrintCoreHelperUni.. O analisador GDL carregará o esquema especificado no conjunto de dados e verificará se o conjunto de dados está em conformidade com seu esquema. Se o conjunto de dados não estiver em conformidade, o analisador indicará uma falha ao analisar o arquivo.

Depois que os conjuntos de dados e o esquema tiverem sido definidos, o cliente poderá criar instantâneos de um conjunto de dados especificando uma configuração:

  1. O plug-in obtém um ponteiro para a interface IPrintCoreHelperUni por meio do método IPrintOemUI::P ublishDriverInterface .

  2. O plug-in solicita acesso ao instantâneo por meio de uma chamada para IPrintCoreHelperUni::CreateGDLSnapshot ou IPrintCoreHelperUni::CreateDefaultGDLSnapshot. Se o plug-in chamar CreateGDLSnapshot, o chamador fornecerá uma estrutura DEVMODE que inclui a configuração que o analisador usa para determinar a exibição do instantâneo.

  3. O analisador GDL carrega o esquema especificado no conjunto de dados e verifica se o conjunto de dados está em conformidade com seu esquema. Se o conjunto de dados não estiver em conformidade, as mensagens de erro serão emitidas.

  4. O analisador GDL cria uma estrutura de dados interna do arquivo de origem GDL e determina a exibição apropriada com base na configuração fornecida e nas instruções de processamento no esquema.

  5. O analisador cria uma representação XML (o instantâneo) das entradas de dados processadas. Esse instantâneo XML é retornado para o plug-in como um fluxo..

Se um esquema for omitido, o analisador simplesmente executará a validação do esquema e os valores de instantâneo serão representados no instantâneo como a cadeia de caracteres de bytes que foram originalmente definidas no arquivo de origem GDL.

Nota O método PublishDriverInterface também faz parte da interface IPrintOemUni e de outras interfaces. Portanto, um plug-in não obtém necessariamente a interface auxiliar de IPrintOemUI::P ublishDriverInterface. Ele pode obter a interface auxiliar de IPrintOemUni::P ublishDriverInterface ou em outro lugar, dependendo do tipo de interface implementada pelo plug-in.