Druckertreiberunterstützung für Druckerverzeichnisdienste
Druckertreiber sind nicht für die Veröffentlichung einer Druckwarteschlange in Verzeichnisdiensten verantwortlich. Der Druckordner von Microsoft Windows 2000 und höher erstellt während der Installation des Druckers ein Druckwarteschlangenobjekt (durch Aufrufen der SetPrinter-Funktion des Spoolers).
Die Eigenschaften der Druckwarteschlange werden veröffentlicht, sodass ein Benutzer über die Option Suchen im Startmenü der Taskleiste nach Druckern mit bestimmten Eigenschaften suchen kann. Der Druckordner veröffentlicht einige, aber nicht alle Druckerfunktionen, die über DriverCapabilities verfügbar sind. Es werden nur Funktionen veröffentlicht, die für Browserzwecke als nützlich erachtet werden.
Druckertreiber können Eigenschafteninformationen eines Druckwarteschlangenobjekts hinzufügen oder ändern. Die Eigenschaften der Druckwarteschlange, die veröffentlicht werden können, werden durch SPLDS_-Präfixkonstanten identifiziert, die in winspool.h definiert sind. Um Druckereigenschaften hinzuzufügen oder zu ändern, muss Ihr Treiber diese vordefinierten Eigenschaftennamenbezeichner verwenden.
Führen Sie die folgenden Schritte aus, um die Eigenschafteninformationen eines Druckwarteschlangenobjekts hinzuzufügen oder zu ändern:
Fügen Sie der Registrierung Unter dem SPLDS_DRIVER_KEY Eigenschaftennamen und Werte hinzu, indem Sie die SetPrinterDataEx-Funktion des Spoolers aufrufen.
Rufen Sie die SetPrinter-Funktion des Spoolers mit einer Eingabestruktur von PRINTER_INFO_7 (in der Windows SDK-Dokumentation beschrieben) und einer Aktion von DSPRINT_UPDATE auf, um den Spooler darüber zu informieren, dass das veröffentlichte Druckwarteschlangenobjekt aktualisiert werden soll. (Treiber sollten keine Aktion von DSPRINT_PUBLISH angeben.)
Diese Schritte sollten in der DrvPrinterEvent-Funktion des Druckertreibers implementiert werden, wenn die Funktion ein PRINTER_EVENT_INITIALIZE-Ereignis empfängt.
Wenn ein Treiber die aktuellen Werte für die veröffentlichten Eigenschaften eines Druckers abrufen muss, sollte er GetPrinterDataEx oder EnumPrinterDataEx aufrufen, um die Informationen aus der Registrierung abzurufen, die von Spooler verwaltet und immer auf dem neuesten Stand ist. Eine alternative Möglichkeit besteht darin , GetPrinter aufzurufen, um den Objektbezeichner der Druckwarteschlange abzurufen und dann ADSI-Funktionen aufzurufen, um die Werte der veröffentlichten Eigenschaften abzurufen. Dieses Verfahren wird nicht empfohlen, da sie ressourcenintensiver ist und die zurückgegebenen Daten möglicherweise nicht immer aktuell sind.