Introduzione ai provider di stampa

Avviso

A partire da Windows 10, le API che supportano provider di stampa di terze parti sono deprecate. Microsoft non consiglia alcun investimento in provider di stampa di terze parti. Inoltre, nei Windows 8 e nei prodotti più recenti in cui è disponibile il modello di driver di stampa v4, i provider di stampa di terze parti potrebbero non creare o gestire code che usano driver di stampa v4.

I provider di stampa sono responsabili dell'indirizzamento dei processi di stampa a dispositivi di stampa locali o remoti. Sono inoltre responsabili delle operazioni di gestione delle code di stampa, ad esempio l'avvio, l'arresto e l'enumerazione delle code di stampa di un server. I provider di stampa definiscono una visualizzazione indipendente dal sistema operativo e indipendente dal computer di alto livello di un server di stampa.

Tutti i provider di stampa implementano un set comune di funzionalità del provider di stampa. Queste funzionalità sono definite da un set di funzioni API, chiamate dal router dello spooler (Spoolss.dll).

La maggior parte delle funzioni definite dai provider di stampa richiede un handle di stampante come input. Un client spooler ottiene un handle di stampante chiamando OpenPrinter in Winspool.drv, che chiama il server API (Spoolsv.exe). Il router dello spooler (Spoolss.dll) chiama la funzione OpenPrinter di ogni provider di stampa fino a quando uno di essi fornisce un handle di stampante e un valore restituito che indica che il provider di stampa riconosce il nome della stampante specificato. Il router restituisce quindi il proprio handle al server API. L'handle del router include sia l'handle della stampante che un handle del provider. Questo handle viene restituito all'applicazione in modo che le chiamate successive dall'applicazione possano essere indirizzate al provider e alla stampante corretti.

Microsoft fornisce i provider di stampa seguenti con Windows 2000 e versioni successive:

Localspl.dll
Provider di stampa locale. Gestisce tutti i processi di stampa indirizzati alle stampanti gestite dal server locale.

Win32spl.dll
Provider di stampa di rete Windows. Gestisce i processi di stampa indirizzati ai server Win32 remoti (sistema operativo basato su NT o Windows per gruppi di lavoro). Quando il processo arriva al server remoto, viene passato al provider di stampa locale del server.

Nwprovau.dll
Provider di stampa Novell NetWare. Gestisce i processi di stampa indirizzati ai server di stampa Novell NetWare.

Inetpp.dll
Provider di stampa HTTP. Gestisce i processi di stampa inviati a un URL.

I fornitori possono creare provider di stampa di rete aggiuntivi. Per altre informazioni, vedere Scrittura di un provider di stampa di rete.

Il diagramma seguente illustra i possibili percorsi di flusso che coinvolgono questi provider di stampa.

percorsi di flusso del provider di stampa.

Quando si visualizza il diagramma, è necessario considerare i punti seguenti:

  • Se la stampante è gestita dal sistema client, il processo di stampa viene gestito dal provider di stampa locale (Localspl.dll). Le stampanti gestite da Localspl.dll non devono essere fisicamente locali per il client; possono essere connessi direttamente alle schede di rete.

  • Se la stampante si trova in un server del sistema operativo basato su NT, il provider di rete (Win32spl.dll) usa RPC per reindirizzare le chiamate dal router del client al processo di Spoolsv.exe del server. Poiché la stampante è locale per il server, il provider di stampa locale del server gestirà il processo di stampa.

  • Se la stampante si trova in un altro tipo di server, è possibile accedervi tramite il provider di stampa locale o da un provider di stampa di rete che supporta tale tipo di server, utilizzando formati di dati e protocolli di rete supportati dal server.

  • Affinché il provider di stampa locale accinga a una stampante remota, deve contenere un monitor porta in grado di utilizzare protocolli di rete riconosciuti dalla stampante remota o dal server.