Consideraciones de programación para USBPRINT
Usbprint.sys, junto con USBMON, proporciona una interfaz muy similar a la usada por impresoras paralelas. En muchos casos, es posible que un único controlador de impresora o monitor de idioma funcione correctamente en impresoras paralelas y USB sin modificaciones. Si un monitor de lenguaje usa solo las funciones WritePort y ReadPort y la solicitud IOCTL_PAR_QUERY_DEVICE_ID , será portátil entre impresoras USB y paralelas.
En algunos casos, puede ser necesario que un monitor de idioma realice solicitudes específicas del proveedor a una impresora para aprovechar las características especiales de la impresora. Para ello, use IOCTL_USBPRINT_VENDOR_SET_COMMAND y IOCTL_USBPRINT_VENDOR_GET_COMMAND. Sin embargo, tenga en cuenta que el uso de estas ITL representa un monitor de idioma incompatible con el monitor de puerto paralelo.
Normalmente, los monitores de idioma no tienen acceso a un identificador de dispositivo para la impresora que administran. En su lugar, tienen un nombre de puerto proporcionado por el monitor de puerto que se encuentra entre el monitor de idioma y el controlador de autobús (Usbprint.sys en este caso). Consulte Interacción del monitor de puerto y idioma para obtener más información. La falta de un identificador de dispositivo impide que los monitores de idioma llamen directamente a ioCTLs del controlador de bus de dispositivo. Para superar esta limitación, USBMON implementa la API GetPrinterDataFromPort , que permite que los monitores de lenguaje emita ICTLs a través de USBMON a USBPRINT.
La pila de impresión USB comparte las SIGUIENTES API e IOCTL con la pila de impresión paralela:
Las siguientes ICTL son específicas de la pila de impresión USB:
IOCTL_USBPRINT_VENDOR_GET_COMMAND
IOCTL_USBPRINT_VENDOR_SET_COMMAND
Nota
Usbprint.sys no proporciona un mecanismo para obtener descriptores del dispositivo, ni para manipular directamente canalizaciones USB.