Condividi tramite


Identificatori generati da USBPRINT.SYS

A partire da Windows 2000, il sistema operativo fornisce un driver di stampa USB in modalità kernel, usbprint.sys che connette il sottosistema della stampante allo stack USB. Il driver della stampante USB nativo libera i fornitori dalla necessità di sviluppare driver di stampante USB in modalità kernel. Ciò consente ai fornitori di sviluppare driver stampanti in modalità utente di alto livello che funzionano con stampanti USB e parallele.

Il file di installazione usbprint.inf contiene un ID compatibile che corrisponde a tutti i dispositivi della stampante USB di classe 7. Se il driver dell'hub USB enumera uno di questi dispositivi, il sistema operativo troverà una corrispondenza per l'ID generato dal driver hub in usbprint.inf e caricherà il driver della stampante USB ,usbprint.sys. L'ID compatibile trovato in usbprint.inf ha il formato seguente:

USB\CLASS_07

Dove:

  • classe 07h = dispositivi appartenenti alla classe della stampante USB

Non appena viene caricato, il driver della stampante USB crea un nuovo PDO per il dispositivo stampante. Quando il gestore Plug and Play (PnP) esegue una query per le stringhe di identificazione del dispositivo del pdo appena creato, il driver della stampante USB crea un nuovo ID hardware, derivato dalla stringa IEEE 1284 del dispositivo compatibile con gli identificatori di stringa generati dall'enumeratore del bus parallelo. Questo ID hardware ha il formato seguente:

USBPRINT\NameModel(20)Checksum(4)

Dove:

  • NameModel(20) è la concatenazione del nome del produttore e del modello del dispositivo, troncato a un massimo di 20 caratteri.

  • Checksum(4) è un codice di controllo della ridondanza ciclico a 4 caratteri calcolato dal nome del produttore e dal nome del modello.

Gli spazi nella stringa vengono sostituiti con caratteri di sottolineatura. Ad esempio, se il nome del produttore è "Heo-a", il nome del modello è "HP Color LaserJet 550" e il checksum è 3115, l'ID hardware sarà il seguente:

USBPRINT\Hewlett-PackardHP_Co3115

Nell'esempio precedente, lo spazio tra "HP" e "Color" nel nome del modello è stato sostituito con un carattere di sottolineatura per produrre la stringa make/model troncata "Hewlett-PackardHP_Co".

Nota Il CRC generato dal sistema operativo potrebbe non corrispondere al CRC calcolato come descritto nella sezione precedente o da qualsiasi altro algoritmo CRC. Di conseguenza, il driver della stampante potrebbe non essere in grado di calcolare l'hardwareID corretto da usare con il file INF per il driver della stampante. Per recuperare l'hardwareID, è preferibile cercare il file setupapi.dev.log associato alla stampante USB installata.