Partager via


Accès aux interfaces des plug-ins à partir des pilotes d'imprimante

Important

La plateforme d’impression moderne est le moyen privilégié de Windows pour communiquer avec les imprimantes. Nous vous recommandons d’utiliser le pilote de classe IPP en boîte de Microsoft, ainsi que les applications de support d’impression (PSA), pour personnaliser l’expérience d’impression dans Windows 10 et 11 pour le développement de périphériques d’impression.

Pour plus d’informations, veuillez consulter les articles Plateforme d’impression moderne et Guide de conception des applications de support d’impression.

Si un plug-in d’interface utilisateur ou de rendu est installé, le pilote d’imprimante (Unidrv ou Pscript5) utilise la séquence d’appel suivante pour obtenir l’accès à l’interface COM IPrintOemUI, IPrintOemUI2, IPrintOemUni, IPrintOemUni2, IPrintOemUni3, IPrintOemPS ou IPrintOemPS2 du plug-in :

  1. Le pilote appelle LoadLibrary pour charger la DLL de plug-ins, ce qui provoque un appel à la fonction DllMain du plug-in.

  2. Le pilote appelle la fonction DllGetClassObject du plug-in, qui retourne un pointeur vers l’interface IClassFactory du plug-in.

  3. Le pilote appelle la méthode CreateInstance de l’interface IClassFactory, en spécifiant un identificateur d’interface IID_IUnknown, ce qui entraîne la création d’une instance de l’interface IPrintOemUI, IPrintOemUI2, IPrintOemUni, IPrintOemUni2, IPrintOemUni3, IPrintOemPS ou IPrintOemPS2 du plug-in et retourne un pointeur vers l’interface IUnknown de l’instance.

  4. Le pilote appelle la méthode QueryInterface de l’interface IUnknown pour déterminer quelle version de l’interface IPrintOemUI, IPrintOemUI2, IPrintOemUni, IPrintOemUni2, IPrintOemUni3, IPrintOemPS ou IPrintOemPS2 est prise en charge par le plug-in et pour recevoir un pointeur vers l’interface prise en charge.

  5. Le pilote appelle la méthode PublishDriverInterface de l’interface de plug-in pour rendre l’interface IPrintOemDriverUI, IPrintCoreUI2, IPrintOemDriverUni, IPrintOemDriverPS ou IPrintCorePS2 du pilote disponible pour le plug-in.

  6. Si le plug-in a implémenté l’interface IPrintOemUni, le pilote appelle IPrintOemUni::GetImplementedMethod pour déterminer quelles méthodes d’interface ont été implémentées. De même, si le plug-in a implémenté l’interface IPrintOemUni2, le pilote appelle IPrintOemUni2::GetImplementedMethod à la même fin.