Condividi tramite


Stampante connessa a una porta LPT

L'enumeratore LPT è un esempio di driver del bus. L'enumeratore LPT è in grado di ottenere informazioni di identificazione dall'hardware della porta LPT conforme a IEEE 1284 Extended Capabilities Port Protocol e ISA Interface Standard.

Quando viene avviato un sistema Windows 2000 o versione successiva, gestione configurazione chiama l'enumeratore LPT per enumerare i dispositivi compatibili con IEEE 1284 connessi alle porte LPT. Per ogni dispositivo trovato, configuration manager chiama il programma di installazione della classe stampante. Il programma di installazione della classe stampante chiama le funzioni di installazione del dispositivo con prefisso SetupDi, che ottengono informazioni dai file INF della stampante.

Per una stampante con connessione parallela, l'enumeratore parallelo crea un oggetto devnode con un ID hardware univoco generato dalla stringa 1284 ricevuta dalla stampante.

Un esempio di stringa 1284 è:

"MANUFACTURER:Hewlett-Packard;COMMAND SET:PJL,MLC,PCL,POSTSCRIPT;MODEL:HP Color LaserJet 550;CLASS:PRINTER;COMMENT:HP LaserJet;"

Da questa stringa 1284 l'enumeratore parallelo produce l'ID hardware seguente:

LPTENUM\Hewlett-PackardHP_Co3115

L'ID hardware è costituito dal prefisso dell'enumeratore, seguito dal nome produttore, dal nome del modello e da un codice CRC (Cyclic Ridondanza). Il codice CRC, ovvero gli ultimi quattro cifre dell'ID hardware, viene generato dal produttore e dalle stringhe di modello. Gli spazi nella stringa vengono sostituiti con caratteri di sottolineatura.

Per leggere la stringa ID 1284 dal dispositivo, inviare IOCTL_PAR_QUERY_DEVICE_ID. Si noti che il spooler reindirizza il collegamento simbolico LPTx (dove x è il numero LPT 1, 2 o 3) alla pipe denominata del spooler, ovvero se il spooler è in esecuzione, il parport non vede mai i IOCTLs inviati a LPTx.

Il devnode per una stampante di Plug and Play con connessione parallela viene inserito in HKLM\SYSTEM\CurrentControlSet\Enum\LPTENUM e ha un singolo ID hardware del modulo:

LPTENUM\Company_NameModelNam1234

Lo stack di driver viene visualizzato nella figura seguente l'esempio di codice successivo.

Il codice INF che eseguirà correttamente "plug and play" un ID hardware del modulo LPTENUM\Company_NameModelNam1234 viene illustrato nell'esempio seguente. Si noti che la descrizione del dispositivo "Nome modello XYZ" viene visualizzata due volte nella sezione Produttore INF. L'ID hardware nella prima riga include l'enumeratore del bus, mentre l'ID hardware nella seconda riga non è. Le due righe garantiscono una corrispondenza id hardware di rango-0 indipendentemente dal tipo di bus in cui è installata la stampante. Per altre informazioni, vedere Installazione di un driver personalizzato Plug and Play stampante.

[Manufacturer]
%Company_Name%=Company_Name

; Section name for all drivers for Company_Name
[Company_Name]
"Model Name XYZ" = Install_Section_XYZ, LPTENUM\Company_NameModelNam1234 ; plus any compatible IDs
"Model Name XYZ" = Install_Section_XYZ, Company_NameModelNam1234 ; plus any compatible IDs

; The install section for the XYZ model
[Install_Section_XYZ]

[Strings]
Company_Name="Company Name"

plug and play per le stampanti di porte parallele.

Per una stampante che condivide l'ID dispositivo con altri modelli, il file INF deve essere simile al seguente:

[Manufacturer]
%Company_Name%=Company_Name

; The section for all drivers for Company_Name
[Company_Name]
"Model Name XYA" = Install_Section_XYA, LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs
"Model Name XYA" = Install_Section_XYA, Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs
"Model Name XYB" = Install_Section_XYB, LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234; plus any other compatible IDs
"Model Name XYB" = Install_Section_XYB, Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs

; The install sections
[Install_Section_XYA]

[Install_Section_XYB]

[ControlFlags]
InteractiveInstall = LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234

[Strings]
Company_Name = "Company Name"

Come nell'esempio precedente, ogni modello nella sezione INF Manufacturer è rappresentato da una coppia di linee quasi identiche. Per un determinato modello, una riga nella coppia include l'enumeratore del bus; l'altro non lo fa. Le due righe garantiscono una corrispondenza id hardware di rango-0 indipendentemente dal tipo di bus in cui è installata la stampante. Per altre informazioni, vedere Installazione di un driver personalizzato Plug and Play stampante.