Share via


Gestione delle superfici Device-Managed

Importante

È consigliabile usare il driver della classe posta in arrivo IPP di Microsoft, insieme a Print Support Apps (PSA), per personalizzare l'esperienza di stampa in Windows 10 e 11 per lo sviluppo di dispositivi della stampante.

Per altre informazioni, vedere la guida alla progettazione dell'app di supporto per la stampa.

Quando Unidrv esegue il rendering delle immagini di pagina di stampa, usa superfici di disegno gestite da GDI. Il rendering di tutte le immagini viene eseguito come bitmap. Per i dispositivi con funzionalità che non possono essere sfruttate da questo scenario, ad esempio la possibilità di disegnare vettori, è possibile fornire supporto per driver personalizzati per una superficie di disegno gestita dal dispositivo. Per supportare una superficie gestita dal dispositivo, è necessario fornire un plug-in di rendering che implementa quanto segue:

Le funzioni di hook non possono eseguire il callback ai servizi di supporto con prefisso Eng di GDI quando si disegna su una superficie gestita dal dispositivo. Tuttavia, possono creare una superficie bitmap temporanea e quindi passare l'handle della superficie alle funzioni di disegno con prefisso Eng (vedere Rendering di un processo di stampa).

Il metodo IPrintOemUni::D riverDMS viene chiamato ogni volta che viene eseguito il rendering di un processo di stampa, quindi il plug-in di rendering può specificare il tipo di superficie di rendering (gestita da GDI o gestita dal dispositivo) per ogni processo. Basando la scelta della superficie su un'opzione selezionabile nell'interfaccia utente, è necessario fornire anche un plug-in dell'interfaccia utente.

Disegno di testo in una superficie di Device-Managed

Il plug-in di rendering deve associare la funzione DrvTextOut di Unidrv (insieme a tutte le altre funzioni di disegno DDI grafiche). La creazione di testo per una superficie gestita dal dispositivo comporta l'interazione tra le quattro funzioni seguenti:

I passaggi necessari per visualizzare il testo in una superficie gestita dal dispositivo sono i seguenti:

  1. GDI chiama la funzione DrvTextOut di Unidrv.

  2. Unidrv chiama la funzione di hooking DrvTextOut del plug-in di rendering.

  3. La funzione di collegamento invia comandi al dispositivo per specificare il pennello, la rotazione e l'area di ritaglio del testo.

  4. La funzione di hook chiama il metodo IPrintOemDriverUni::D rvUniTextOut di Unidrv, che usa i tipi di carattere scaricati per restituire il testo. Questo metodo gestisce anche il ritaglio basato su glifi.

  5. Se IPrintOemDriverUni::D rvUniTextOut non può usare un tipo di carattere scaricabile (perché il tipo di carattere non è disponibile o è ruotato), chiama il metodo IPrintOemUni::TextOutAsBitmap del plug-in di rendering, che disegna il testo come bitmap.

  6. Dopo la restituzione di IPrintOemDriverUni::D rvUniTextOut, la funzione di hook DrvTextOut deve disegnare sottolineature e barrati, in base ai rettangoli specificati dal parametro prclExtra della funzione DrvTextOut, usando i comandi vector (se supportati).