Prise en charge du spouleur d’impression pour les services d’annuaire d’imprimante
La prise en charge du spouleur d’impression pour les services d’annuaire comprend les éléments suivants :
Publication de files d’attente d’impression
Maintenance de trois clés de Registre
Autoriser l’accès aux clés de Registre gérées par le spouleur
Retour de l’état de publication d’une file d’attente d’impression
Publication de files d’attente d’impression
La fonction SetPrinter permet aux appelants de publier, annuler ou mettre à jour un objet de file d’attente d’impression. À ces fins, la fonction SetPrinter doit être appelée avec une structure d’entrée de PRINTER_INFO_7.
Un objet file d’attente d’impression ne peut être publié que s’il est associé à l’objet ordinateur décrivant le serveur d’impression auquel l’utilisateur est connecté. La capacité d’un utilisateur à publier une file d’attente d’impression est déterminée par ses droits d’accès, tels qu’ils sont contenus dans le contexte de sécurité du client de l’utilisateur. Vous pouvez publier une file d’attente d’impression si vous disposez de l’autorisation Gérer les imprimantes sur la file d’attente d’impression.
Maintenance de trois clés de Registre
Trois clés de Registre contiennent des copies de toutes les informations publiées dans l’objet file d’attente d’impression. Les trois clés sont référencées à l’aide des identificateurs suivants, définis dans winspool.h :
Clé : | Définition |
---|---|
SPLDS_DRIVER_KEY | Pour stocker des informations spécifiques au pilote, qui peuvent être fournies par le spouleur ou le pilote. |
SPLDS_SPOOLER_KEY | Pour stocker des informations spécifiques au spouleur fournies par le spouleur. |
SPLDS_USER_KEY | Pour stocker des informations spécifiques à l’utilisateur fournies par l’application. |
Le spouleur utilise SPLDS_DRIVER_KEY pour stocker les fonctionnalités de pilote qui peuvent être obtenues en appelant la fonction DeviceCapabilities . Le pilote est responsable du stockage des fonctionnalités de pilote que le spouleur ne peut pas obtenir, comme décrit dans Prise en charge du pilote d’imprimante pour les services d’annuaire d’imprimante. Les valeurs stockées sous ces clés doivent être identifiées par des constantes préfixées SPLDS_, définies dans winspool.h.
Le spouleur effectue le suivi des valeurs sous ces clés qui ont été modifiées depuis la dernière mise à jour de l’objet file d’attente d’impression. Chaque fois que le spouleur publie ou met à jour l’objet file d’attente d’impression, il copie toutes les valeurs modifiées dans l’objet .
Autoriser l’accès aux clés de Registre gérées par le spouleur
Le spouleur permet aux pilotes d’imprimante d’accéder aux trois clés de Registre gérées par le spouleur en appelant les fonctions SetPrinterDataEx, GetPrinterDataEx et EnumPrinterDataEx . La fonction SetPrinterDataEx définit des valeurs sous les clés, tandis que GetPrinterDataEx et EnumPrinterDataEx retournent les valeurs actuelles. Les pilotes ne doivent pas définir de valeurs sous la clé SPLDS_SPOOLER_KEY. Les appelants de ces fonctions ne spécifient pas de chemin d’accès complet au Registre ; les fonctions déterminent automatiquement le chemin d’accès aux entrées de Registre de la file d’attente d’impression spécifiées.
Retour de l’état de publication d’une file d’attente d’impression
La fonction GetPrinter permet aux appelants de déterminer si une file d’attente d’impression est actuellement publiée. À cet effet, la fonction GetPrinter doit être appelée avec une structure d’entrée de PRINTER_INFO_7. La fonction retourne l’état de publication de la file d’attente d’impression (publiée ou non publiée) et l’identificateur d’objet.