Identificadores generados por USBPRINT.SYS
A partir de Windows 2000, el sistema operativo proporciona un controlador de impresión USB en modo kernel, usbprint.sys que conecta el subsistema de impresora a la pila USB. El controlador de impresora USB nativo libera a los proveedores de la necesidad de desarrollar sus propios controladores de impresora USB en modo kernel. Esto permite a los proveedores desarrollar controladores de impresora en modo de usuario de alto nivel que funcionan con impresoras USB y paralelas.
El archivo de instalación usbprint.inf contiene un identificador compatible que coincide con todos los dispositivos de impresora usb de clase 7. Si el controlador del concentrador USB enumera uno de estos dispositivos, el sistema operativo encontrará una coincidencia para el identificador que el controlador del concentrador genera en usbprint.inf y cargará el controlador de impresora USB, usbprint.sys. El identificador compatible que se encuentra en usbprint.inf tiene el siguiente formato:
USB\CLASS_07
Donde:
- clase 07h = dispositivos que pertenecen a la clase de impresora USB
En cuanto se carga, el controlador de impresora USB crea un nuevo PDO para el dispositivo de impresora. Cuando el administrador de Plug and Play (PnP) consulta las cadenas de identificación del dispositivo del PDO recién creado, el controlador de impresora USB crea un nuevo identificador de hardware, derivado de la cadena IEEE 1284 del dispositivo que es compatible con los identificadores de cadena generados por el enumerador de bus paralelo. Este identificador de hardware tiene el formato siguiente:
USBPRINT\NameModel(20)Checksum(4)
Donde:
NameModel(20) es la concatenación del nombre del fabricante y el modelo del dispositivo, truncado en un máximo de 20 caracteres.
Checksum(4) es un código de comprobación de redundancia cíclica (CRC) de 4 caracteres calculado a partir del nombre del fabricante y el nombre del modelo.
Los espacios de la cadena se reemplazan por caracteres de subrayado. Por ejemplo, si el nombre del fabricante es "Hewlett-Packard", el nombre del modelo es "HP Color LaserJet 550", y la suma de comprobación es 3115, el identificador de hardware sería el siguiente:
USBPRINT\Hewlett-PackardHP_Co3115
En el ejemplo anterior, el espacio entre "HP" y "Color" en el nombre del modelo se reemplazó por un carácter de subrayado para generar la cadena make/model truncada "Hewlett-PackardHP_Co".
Nota El CRC generado por el sistema operativo puede no coincidir con el CRC que se calcula tal y como se describe en la sección anterior o por cualquier otro algoritmo CRC. Como resultado de esto, es posible que el controlador de impresora no pueda calcular el hardwareID correcto que se va a usar con el archivo INF para el controlador de impresora. Para recuperar el hardwareID, es mejor buscar el archivo setupapi.dev.log asociado a la impresora USB que se está instalando.