Moniteurs de port
Les moniteurs de port se composent de DLL en mode utilisateur. Ils sont chargés de fournir un chemin de communication entre le spouleur d’impression en mode utilisateur et les pilotes de port en mode noyau qui accèdent au matériel de port d’E/S. Un moniteur de port utilise généralement les fonctions CreateFile, WriteFile, ReadFile et DeviceIOControl pour communiquer avec les pilotes de port en mode noyau. Les moniteurs de port sont également responsables de la gestion et de la configuration des ports d’imprimante d’un serveur, comme décrit dans Gestion d’un port.
L’affichage d’une « imprimante » par un utilisateur du système d’exploitation NT est en fait une file d’attente d’impression à laquelle un ou plusieurs périphériques d’imprimante physique peuvent être connectés. Un port est la connexion physique entre la file d’attente d’impression et un seul périphérique d’imprimante. Chaque moniteur de port prend en charge une ou plusieurs instances d’un ou plusieurs types de ports. Par exemple, Localmon.dll, l’exemple de moniteur de port, peut prendre en charge tous les ports COM et LPT locaux d’un serveur. Le dossier d’impression affecte des ports aux moniteurs de port en appelant la fonction AddPrinter .
Pour les files d’attente d’impression représentant plusieurs périphériques d’imprimante (via plusieurs ports), le spouleur envoie chaque travail d’impression au premier port disponible. Si le moniteur de port indique qu’un port spécifié est occupé ou a rencontré une erreur, le spouleur propose à nouveau le travail à la file d’attente, en spécifiant un autre port pris en charge par le moniteur de port.
En plus de Localmon.dll, windows 2000 et versions ultérieures du système d’exploitation fournissent plusieurs moniteurs de port supplémentaires. Le Kit de ressources Windows 2000 Server décrit chacun de ces moniteurs de port. (Cette ressource n’est peut-être pas disponible dans certaines langues et certains pays.)
Les moniteurs de port personnalisés peuvent être écrits pour prendre en charge des types supplémentaires de matériel de port d’E/S.
Pour Windows 2000 et versions ultérieures, chaque moniteur de port est divisé en deux DLL :
DLL d’interface utilisateur port Monitor La DLL d’interface utilisateur d’un moniteur de port contient des fonctionnalités d’interface utilisateur et s’exécute sur les systèmes clients d’impression.
Cette DLL doit résider dans le sous-répertoire System32 du système client.
DLL du serveur Port Monitor
La DLL de serveur d’un moniteur de port contient la fonctionnalité de communication de port et s’exécute sur les serveurs d’impression. Il ne doit pas afficher d’interface utilisateur.
La DLL d’interface utilisateur communique avec la DLL de serveur en appelant la fonction XcvData du spouleur.
Un exemple de moniteur de port est inclus dans le Kit de pilotes Windows (WDK).