Présentation des fournisseurs d’impression
Avertissement
À compter de Windows 10, les API qui prennent en charge les fournisseurs d’impression tiers sont déconseillées. Microsoft ne recommande aucun investissement dans des fournisseurs d’impression tiers. En outre, sur les produits Windows 8 et plus récents où le modèle de pilote d’impression v4 est disponible, les fournisseurs d’impression tiers peuvent ne pas créer ou gérer de files d’attente qui utilisent des pilotes d’impression v4.
Les fournisseurs d’impression sont chargés de diriger les travaux d’impression vers les appareils d’impression locaux ou distants. Ils sont également responsables des opérations de gestion des files d’attente d’impression, telles que le démarrage, l’arrêt et l’énumération des files d’attente d’impression d’un serveur. Les fournisseurs d’impression définissent une vue générale, indépendante de l’ordinateur et indépendante du système d’exploitation d’un serveur d’impression.
Tous les fournisseurs d’impression implémentent un ensemble commun de fonctionnalités de fournisseur d’impression. Ces fonctionnalités sont définies par un ensemble de fonctions d’API appelées par le routeur du spouleur (Spoolss.dll).
La plupart des fonctions définies par les fournisseurs d’impression nécessitent un handle d’imprimante comme entrée. Un client spouleur obtient un handle d’imprimante en appelant OpenPrinter dans Winspool.drv, qui appelle le serveur d’API (Spoolsv.exe). Le routeur du spouleur (Spoolss.dll) appelle la fonction OpenPrinter de chaque fournisseur d’impression jusqu’à ce que l’un d’entre eux fournisse une poignée d’imprimante et une valeur de retour indiquant que le fournisseur d’impression reconnaît le nom de l’imprimante spécifié. Le routeur retourne ensuite son propre handle au serveur d’API. Le handle du routeur comprend à la fois le handle d’imprimante et un handle de fournisseur. Ce handle est retourné à l’application afin que les appels ultérieurs de l’application puissent être dirigés vers le fournisseur et l’imprimante appropriés.
Microsoft fournit les fournisseurs d’impression suivants avec Windows 2000 et versions ultérieures :
Localspl.dll
Fournisseur d’impression local. Gère tous les travaux d’impression dirigés vers les imprimantes gérées à partir du serveur local.
Win32spl.dll
Fournisseur d’impression réseau Windows. Gère les travaux d’impression dirigés vers les serveurs Win32 distants (système d’exploitation NT ou Windows for Workgroups). Lorsque le travail arrive sur le serveur distant, il est transmis au fournisseur d’impression local du serveur.
Nwprovau.dll
Fournisseur d’impression Novell NetWare. Gère les travaux d’impression dirigés vers les serveurs d’impression Novell NetWare.
Inetpp.dll
Fournisseur d’impression HTTP. Gère les travaux d’impression envoyés à une URL.
Les fournisseurs peuvent créer des fournisseurs d’impression réseau supplémentaires. Pour plus d’informations, consultez Écriture d’un fournisseur d’impression réseau.
Le diagramme suivant illustre les chemins de flux possibles impliquant ces fournisseurs d’impression.
Lorsque vous affichez le diagramme, vous devez prendre en compte les points suivants :
Si l’imprimante est gérée par le système client, le travail d’impression est géré par le fournisseur d’impression local (Localspl.dll). Les imprimantes gérées par Localspl.dll n’ont pas besoin d’être physiquement locales pour le client ; ils peuvent être directement connectés à des cartes réseau.
Si l’imprimante se trouve sur un serveur de système d’exploitation NT, le fournisseur réseau (Win32spl.dll) utilise RPC pour rediriger les appels du routeur du client vers le processus Spoolsv.exe du serveur. Étant donné que l’imprimante est locale sur le serveur, le fournisseur d’impression local du serveur gère le travail d’impression.
Si l’imprimante se trouve sur un autre type de serveur, elle est accessible par le fournisseur d’impression local ou par un fournisseur d’impression réseau qui prend en charge ce type de serveur, à l’aide des formats de données et des protocoles réseau pris en charge par le serveur.
Pour que le fournisseur d’impression local accède à une imprimante distante, il doit contenir un moniteur de port pouvant utiliser des protocoles réseau reconnus par l’imprimante ou le serveur distant.