Portmonitore
Portmonitore bestehen aus Benutzermodus-DLLs. Sie sind für die Bereitstellung eines Kommunikationspfads zwischen dem Druckpooler im Benutzermodus und den Kernelmodusporttreibern verantwortlich, die auf E/A-Porthardware zugreifen. Ein Portmonitor verwendet in der Regel die Funktionen CreateFile, WriteFile, ReadFile und DeviceIOControl , um mit Kernelmodus-Porttreibern zu kommunizieren. Portmonitore sind auch für die Verwaltung und Konfiguration der Druckerports eines Servers verantwortlich, wie unter Verwalten eines Ports beschrieben.
Die Ansicht eines "Druckers" eines NT-basierten Betriebssystembenutzers ist tatsächlich eine Druckwarteschlange, mit der mindestens ein physisches Druckergerät verbunden werden kann. Ein Port ist die physische Verbindung zwischen der Druckwarteschlange und einem einzelnen Druckergerät. Jeder Portmonitor unterstützt mindestens eine Instanz eines oder mehrerer Porttypen. Beispielsweise kann Localmon.dll, der Beispielportmonitor, alle lokalen COM- und LPT-Ports eines Servers unterstützen. Der Druckordner weist Portmonitoren Ports zu, indem die AddPrinter-Funktion aufgerufen wird.
Bei Druckwarteschlangen, die mehrere Druckergeräte (über mehrere Ports) darstellen, sendet der Spooler jeden Druckauftrag an den ersten verfügbaren Port. Wenn der Portmonitor angibt, dass ein angegebener Port ausgelastet ist oder ein Fehler aufgetreten ist, übermittelt der Spooler den Auftrag erneut an die Warteschlange und gibt einen anderen Port an, der vom Portmonitor unterstützt wird.
Neben Localmon.dll bieten Windows 2000 und höhere Betriebssystemversionen mehrere zusätzliche Portmonitore. Das Windows 2000 Server Resource Kit beschreibt jeden dieser Portmonitore. (Diese Ressource ist in einigen Sprachen und Ländern möglicherweise nicht verfügbar.)
Benutzerdefinierte Portmonitore können geschrieben werden, um zusätzliche Typen von E/A-Porthardware zu unterstützen.
Für Windows 2000 und höher ist jeder Portmonitor in zwei DLLs unterteilt:
Portmonitor-UI-DLL Die Benutzeroberfläche-DLL eines Portmonitors enthält Benutzeroberflächenfunktionen und wird auf Druckclientsystemen ausgeführt.
Diese DLL muss sich im Unterverzeichnis System32 des Clientsystems befinden.
Portmonitorserver-DLL
Die Server-DLL eines Portmonitors enthält Portkommunikationsfunktionen und wird auf Druckservern ausgeführt. Es darf keine Benutzeroberfläche angezeigt werden.
Die UI-DLL kommuniziert mit der Server-DLL, indem die XcvData-Funktion des Spoolers aufgerufen wird.
Ein Beispielportmonitor ist im Windows Driver Kit (WDK) enthalten.