COM-Based rendering Plug-Ins

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.

Per fornire funzioni di hook personalizzate, il plug-in per il rendering basato su COM deve implementare il metodo IPrintOemUni::EnableDriver o IPrintOemPS::EnableDriver , che compila una struttura DRVENABLEDATA con l'indirizzo di ogni funzione di hooking.

Un plug-in di rendering basato su COM può associare una funzione DDI grafica solo se il driver Unidrv o Pscript5 definisce la funzione. Per un elenco di tali funzioni, vedere IPrintOemUni::EnableDriver o IPrintOemPS::EnableDriver.

Se si specifica una particolare funzione di hook personalizzata, tale funzione annulla la funzione DDI grafica equivalente del driver. Quando si progetta una funzione di hook personalizzata, sono disponibili le opzioni seguenti:

  • La funzione di collegamento può gestire completamente l'operazione DDI grafica internamente.

  • La funzione di collegamento può richiamare alla funzione DDI grafica equivalente del driver della stampante.

Richiamando la funzione DDI grafica del driver, la funzione di hooking può eseguire la pre-elaborazione o la post-elaborazione degli argomenti di funzione, ma consente comunque al driver di eseguire effettivamente l'operazione DDI grafica. Uno degli argomenti di input per un metodo IPrintOemUni::EnablePDEV o IPrintOemPS::EnablePDEV è una struttura DRVENABLEDATA che contiene puntatori alle funzioni DDI grafiche del driver. Se si desidera eseguire il richiamo a queste funzioni, è necessario salvare il contenuto di questa struttura.

Potrebbe essere necessario fornire una struttura PDEV personalizzata. È possibile fare riferimento a questa struttura dall'interno di una funzione di hook DDI grafica, tramite il puntatore struttura SURFOBJ che ogni funzione di hook riceve come input. In particolare, il membro dhpdev della struttura SURFOBJ punta a una struttura DEVOBJ e il membro pdevOEM della struttura DEVOBJ punta alla struttura PDEV personalizzata.