Überlegungen zur Programmierung für USBPRINT
Usbprint.sysbietet zusammen mit USBMON eine Schnittstelle, die der von parallelen Druckern verwendeten sehr ähnlich ist. In vielen Fällen ist es möglich, dass ein einzelner Druckertreiber oder Sprachmonitor auf parallelen und USB-Druckern ohne Änderungen ordnungsgemäß funktioniert. Wenn ein Sprachmonitor nur die Funktionen WritePort und ReadPort und die IOCTL_PAR_QUERY_DEVICE_ID Anforderung verwendet, ist er zwischen USB- und parallelen Druckern portierbar.
In einigen Fällen kann es erforderlich sein, dass ein Sprachmonitor herstellerspezifische Anforderungen an einen Drucker stellt, um spezielle Druckerfeatures nutzen zu können. Verwenden Sie hierzu IOCTL_USBPRINT_VENDOR_SET_COMMAND und IOCTL_USBPRINT_VENDOR_GET_COMMAND. Beachten Sie jedoch, dass die Verwendung dieser IOCTLs einen Sprachmonitor mit dem Parallelportmonitor nicht kompatibel macht.
Sprachmonitore haben normalerweise keinen Zugriff auf ein Gerätehandle für den Drucker, den sie verwalten. Stattdessen verfügen sie über einen Portnamen, der vom Portmonitor bereitgestellt wird, der sich zwischen dem Sprachmonitor und dem Bustreiber befindet ( in diesem FallUsbprint.sys ). Weitere Informationen finden Sie unter Sprach- und Portmonitorinteraktion . Das Fehlen eines Gerätehandles verhindert, dass Sprachmonitore IOCTLs des Gerätebustreibers direkt aufrufen. Um diese Einschränkung zu überwinden, implementiert USBMON die GetPrinterDataFromPort-API , mit der Sprachmonitore IOCTLs über USBMON zu USBPRINT ausstellen können.
Der USB-Druckstapel teilt die folgenden APIs und IOCTL mit dem parallelen Druckstapel:
Die folgenden IOCTLs sind spezifisch für den USB-Druckstapel:
IOCTL_USBPRINT_VENDOR_GET_COMMAND
IOCTL_USBPRINT_VENDOR_SET_COMMAND
Hinweis
Usbprint.sys bietet weder einen Mechanismus zum Abrufen von Deskriptoren vom Gerät noch zum direkten Manipulieren von USB-Leitungen.