Partager via


Impression Terminal Server

Important

À compter de wdk pour Windows 11 version 22H2, les co-programmes d’installation redistribuables WDF ne sont plus pris en charge. Pour savoir comment contourner cette modification, consultez Les co-programmes d’installation redistribuables WDF ne fonctionnent pas dans l’article problèmes connus wdk .

Microsoft Windows prend en charge Terminal Services, une technologie qui permet à plusieurs utilisateurs de se connecter à un seul système serveur. Ce système serveur est appelé serveur terminal. Pour obtenir une présentation détaillée des services Terminal Server, consultez la documentation du Kit de développement logiciel (SDK) Windows.

Si vous développez un minidriver ou un pilote d’imprimante pour Windows, vous n’avez rien de spécial à faire pour prendre en charge les imprimantes connectées aux serveurs terminal. Toutefois, vous devez suivre toutes les instructions de conception, d’implémentation et d’installation spécifiées dans le Kit de pilotes Windows (WDK). Plus précisément, vous devez utiliser les règles suivantes :

Tout le code de pilote personnalisé doit être réentrant. Le code en mode utilisateur doit utiliser des objets de section critiques (décrits dans la documentation du SDK Windows). Le code en mode noyau doit utiliser des sémaphores (voir EngCreateSemaphore et fonctions associées).

Les pilotes d’imprimante et les composants spouleurs personnalisés doivent accéder au Registre uniquement par le biais d’interfaces fournies spécifiquement pour ces pilotes et composants de spouleur, comme décrit dans les sections appropriées du WDK.

Considérations relatives à l'installation

En règle générale, il vous suffit de fournir un fichier INF qui peut être lu par le programme d’installation de la classe d’imprimante de Microsoft lorsqu’un utilisateur appelle l’Assistant Ajouter une imprimante . Parfois, un code d’installation personnalisé (un programme d’installation de co-programme d’installation ou de classe) est également nécessaire. Si vous devez créer du code d’installation personnalisé, n’oubliez pas les points suivants :

  • L’utilisateur ou le code d’installation doit mettre le serveur Terminal Server en mode d’installation. (Pour plus d’informations, consultez la documentation Microsoft Windows SDK.)

  • N’essayez pas de remplacer les fichiers système. La protection des fichiers Windows interdit le remplacement de fichiers système.

  • Évitez autant que possible d’exiger des redémarrages du système. Respectez les recommandations suivantes :

    1. Ne remplacez pas les fichiers de pilote qui n’ont pas changé. Par exemple, les fichiers partagés par plusieurs appareils ne doivent pas être mis à jour si la version la plus récente est déjà installée.

    2. Si un fichier doit être remplacé, le code d’installation doit prendre des mesures pour décharger l’ancienne version, puis charger la nouvelle version (par exemple, en arrêtant le service de pilote, en remplaçant le fichier, puis en redémarrant le service).

    3. Il est préférable de demander à un utilisateur de se déconnecter, puis de se reconnecter au redémarrage du système.

Pour plus d’informations sur les co-programmes d’installation et les programmes d’installation de classe, consultez Writing Class Installers and Co-Installers.

Avant d’écrire du code d’installation personnalisé, il est important de lire les instructions de programmation des services Terminal Server fournies dans la documentation du Kit de développement logiciel (SDK) Windows.

Considérations relatives à l’interface utilisateur

Le code d’installation personnalisé exécuté par un utilisateur peut afficher une interface utilisateur.

Presque tout le code du pilote d’imprimante s’exécute dans le contexte d’exécution du spouleur et ne peut donc pas afficher d’interface utilisateur. Les interfaces utilisateur peuvent être affichées uniquement par les DLL d’interface d’imprimante, et uniquement à partir des fonctions suivantes :

  • Fonctions DrvDevicePropertySheets et DrvDocumentPropertySheets , qui créent des pages de propriétés.

  • La fonction DrvPrinterEvent , qui reçoit les codes d’événement identifiant les événements d’imprimante. La fonction peut afficher une interface utilisateur uniquement pour les codes d’événement PRINTER_EVENT_ADD_CONNECTION et PRINTER_EVENT_DELETE_CONNECTION.

Tout le code du pilote d’imprimante s’exécute dans le contexte du spouleur. À partir de ce contexte, l’appel de MessageBox ou MessageBoxEx est autorisé, mais vous devez définir MB_SERVICE_NOTIFICATION. Ces fonctions sont décrites dans la documentation du Kit de développement logiciel (SDK) Windows.