Condividi tramite


Plug-in di rendering basati su COM

Importante

La piattaforma di stampa moderna è il mezzo preferito di Windows per comunicare con le stampanti. Ti consigliamo di usare il driver di classe 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 per stampanti.

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

Per fornire funzioni di hook personalizzate, il plug-in di 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 hook.

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 queste funzioni, vedere IPrintOemUni::EnableDriver o IPrintOemPS::EnableDriver.

Se si specifica una particolare funzione di hooking 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 hook può gestire completamente l'operazione DDI grafica internamente.

  • La funzione di hook può richiamare la funzione DDI grafica equivalente del driver della stampante.

Richiamando la funzione DDI grafica del driver, la funzione di hook può eseguire la pre-elaborazione o post-elaborazione degli argomenti della 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 richiamare 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.