Negociação PDEV

Uma das principais responsabilidades de qualquer driver gráfico é habilitar um PDEV durante a inicialização do driver. Um PDEV é uma representação lógica do dispositivo físico. Essa representação é definida pelo driver e normalmente é uma estrutura de dados privados. Consulte DrvEnablePDEV para obter mais informações sobre como habilitar PDEVs.

Por meio da função DrvEnablePDEV , o driver deve fornecer informações à GDI que descreva o dispositivo solicitado e seus recursos. Uma parte das informações importantes que o driver fornece ao GDI é o conjunto de sinalizadores de funcionalidade de elementos gráficos (sinalizadores de GCAPS_Xxx e GCAPS2_Xxx) nos membros flGraphicsCaps e flGraphicsCaps2 da estrutura DEVINFO .

Os sinalizadores de funcionalidade permitem que o GDI determine quais operações o PDEV dá suporte. Por exemplo, a GDI testa os sinalizadores de funcionalidade que indicam se o PDEV pode lidar com curvas de Bézier e linhas largas geométricas antes que a GDI tente chamar a função DrvStrokePath para desenhar caminhos com esses tipos primitivos. Se os sinalizadores de funcionalidade indicarem que o PDEV não pode lidar com esses tipos primitivos, o GDI dividirá as linhas ou curvas para que possa fazer chamadas mais simples para o driver.

Do lado do driver, sempre que o driver receber uma chamada avançada relacionada ao caminho da GDI, ele poderá retornar FALSE se o caminho ou recorte for muito complexo para o dispositivo processar.

O driver não pode retornar FALSE de DrvStrokePath ao manipular uma linha cosmética porque o driver deve lidar com qualquer recorte complexo ou estilo para linhas cosméticas. No entanto, DrvStrokePath poderá retornar FALSE se o caminho tiver curvas de Bézier ou linhas geométricas. Quando isso ocorre, a GDI interrompe a chamada para chamadas mais simples, assim como acontece se os bits de funcionalidade não estiverem definidos. Por exemplo, se DrvStrokePath retornar FALSE quando for enviada uma linha geométrica, a GDI simplificará a linha e chamará a função DrvFillPath .

Se DrvStrokePath for relatar um erro, ele deverá retornar DDI_ERROR.

Esse tipo de negociação entre a GDI e o driver, para funções que dependem do PDEV, permite que a GDI e o driver produzam saída de alta qualidade sem comunicação excessiva.