Negoziazione PDEV

Una delle responsabilità principali di qualsiasi driver grafico consiste nell'abilitare un pdev durante l'inizializzazione del driver. Un PDEV è una rappresentazione logica del dispositivo fisico. Questa rappresentazione è definita dal driver ed è in genere una struttura di dati privati. Per altre informazioni sull'abilitazione di PDEV, vedere DrvEnablePDEV .

Tramite la funzione DrvEnablePDEV , il driver deve fornire informazioni a GDI che descrive il dispositivo richiesto e le relative funzionalità. Un'informazione importante che il driver fornisce a GDI è il set di flag di funzionalità grafiche (GCAPS_Xxx e GCAPS2_Xxx flag) nei membri flGraphicsCaps e flGraphicsCaps2 della struttura DEVINFO .

I flag di funzionalità consentono a GDI di determinare le operazioni supportate da PDEV. Ad esempio, GDI testa i flag di funzionalità che indicano se PDEV può gestire curve di Bezier e linee ampie geometriche prima che GDI tenti di chiamare la funzione DrvStrokePath per disegnare percorsi con questi tipi primitivi. Se i flag di funzionalità indicano che PDEV non può gestire questi tipi primitivi, GDI suddividerà le linee o le curve in modo da poter effettuare chiamate più semplici al driver.

Dal lato del driver, ogni volta che il driver riceve una chiamata avanzata correlata al percorso da GDI, può restituire FALSE se il percorso o il ritaglio è troppo complesso per l'elaborazione del dispositivo.

Il driver non può restituire FALSE da DrvStrokePath durante la gestione di una linea cosmetica perché il driver deve gestire qualsiasi ritaglio complesso o stile per linee cosmetiche. Tuttavia, DrvStrokePath può restituire FALSE se il percorso ha curve di Bezier o linee geometriche. In questo caso, GDI interrompe la chiamata a chiamate più semplici, esattamente come se i bit di funzionalità non sono impostati. Ad esempio, se DrvStrokePath restituisce FALSE quando viene inviata una linea geometrica, GDI semplifica la linea e chiama la funzione DrvFillPath .

Se DrvStrokePath segnala un errore, deve restituire DDI_ERROR.

Questo tipo di negoziazione tra GDI e il driver, per le funzioni che dipendono dal PDEV, consente GDI e il driver di produrre output di alta qualità senza comunicazioni in eccesso.