Partager via


Prise en charge du pilote d’imprimante pour les services d’annuaire d’imprimantes

Les pilotes d’imprimante ne sont pas responsables de la publication d’une file d’attente d’impression dans les services d’annuaire. Le dossier d’impression Microsoft Windows 2000 et versions ultérieures crée un objet file d’attente d’impression (en appelant la fonction SetPrinter du spouleur ) pendant le processus d’installation de l’imprimante.

Les propriétés de file d’attente d’impression sont publiées afin qu’un utilisateur puisse rechercher des imprimantes avec des propriétés particulières à l’aide de l’option Rechercher dans le menu Démarrer de la barre des tâches. Le dossier d’impression publie une partie, mais pas la totalité, des fonctionnalités d’imprimante qui lui sont disponibles à partir de DriverCapabilities. Seules les fonctionnalités considérées comme utiles à des fins de navigation sont publiées.

Les pilotes d’imprimante peuvent ajouter ou modifier les informations de propriété d’un objet file d’attente d’impression. Les propriétés de file d’attente d’impression qui peuvent être publiées sont identifiées par des constantes préfixées SPLDS_, définies dans winspool.h. Pour ajouter ou modifier des propriétés d’imprimante, votre pilote doit utiliser ces identificateurs de nom de propriété prédéfinis.

Pour ajouter ou modifier les informations de propriété d’un objet file d’attente d’impression, procédez comme suit :

  1. Ajoutez des noms de propriétés et des valeurs au Registre, sous le SPLDS_DRIVER_KEY, en appelant la fonction SetPrinterDataEx du spouleur.

  2. Appelez la fonction SetPrinter du spouleur , avec une structure d’entrée de PRINTER_INFO_7 (décrite dans la documentation du SDK Windows) et une action de DSPRINT_UPDATE, pour informer le spouleur qu’il doit mettre à jour l’objet file d’attente d’impression publié. (Les pilotes ne doivent pas spécifier une action de DSPRINT_PUBLISH.)

Ces étapes doivent être implémentées dans la fonction DrvPrinterEvent du pilote d’imprimante lorsque la fonction reçoit un événement PRINTER_EVENT_INITIALIZE.

Si un pilote doit obtenir les valeurs actuelles des propriétés publiées d’une imprimante, il doit appeler GetPrinterDataEx ou EnumPrinterDataEx pour obtenir les informations à partir du Registre, qui est tenu à jour par spouleur et toujours à jour. Une autre méthode consiste à appeler GetPrinter pour obtenir l’identificateur d’objet de la file d’attente d’impression, puis à appeler des fonctions ADSI pour obtenir les valeurs des propriétés publiées. Cette technique n’est pas recommandée, à la fois parce qu’elle est plus gourmande en ressources et parce que les données retournées ne sont pas toujours à jour.