Concetti di configurazione del driver V4
Importante
La piattaforma di stampa moderna è il mezzo preferito di Windows per comunicare con le stampanti. Ti consigliamo di usare il driver di classe IPP di Microsoft, insieme a Print Support Apps (PSA), per personalizzare l'esperienza di stampa in Windows 10 e 11 per lo sviluppo di dispositivi per stampanti.
Per altre informazioni, vedere Piattaforma di stampa moderna e guida alla progettazione dell'app di supporto per la stampa.
Il modello di driver di stampa v4 usa un nuovo modello di configurazione per migliorare l'esperienza utente e ridurre i costi di supporto.
Il driver di stampa v4 viene eseguito direttamente dall'archivio driver, eliminando la possibilità di collisioni di file e migliorando le prestazioni di installazione. Il modello di installazione v4 continua a usare i file INF, ma usa anche un nuovo file manifesto per acquisire le direttive di installazione specifiche della stampante.
Identificatori di dispositivo
CompatibleIDS
CompatibleIDs è un concetto chiave per i driver di classe di stampa perché consentono ai driver di supportare i dispositivi rilasciati dopo il rilascio di una nuova versione di Windows, senza la necessità di aggiornare il driver. Ciò è possibile perché CompatibleID consente ai dispositivi di annunciare il supporto per un driver di stampa meno specifico rispetto a hardwareID.
Se un particolare CompatibleID è già supportato da un driver di classe di stampa, i driver di stampa v4 non devono specificarlo di nuovo. Se la data di un driver di stampa è più recente della data del driver della classe di stampa, il driver di stampa verrà scaricato automaticamente dal sito di Windows Update.
I dispositivi devono includere CompatibleID nella stringa 1284ID. Se un driver di classe di stampa esistente supporta il dispositivo, il driver di stampa deve usare l'ID compatibile. In caso contrario, è consigliabile usare il formato seguente.
1284_CID_<manufacturer identifier>_<PDL identifier>_device family identifier
Ad esempio:
1284_CID_FA_PCL5e_Laser
Se CompatibleIDs è già implementato nei dispositivi esistenti, il driver di stampa deve continuare a usare tali ID Compatibili.
Gli ID compatibili non vengono usati nell'installazione di dispositivi di stampa basati su TCP/IP. Di conseguenza, gli utenti dovranno identificare un driver appropriato usando solo il nome del driver. In caso di problemi relativi ai driver di classe di stampa, è consigliabile che i produttori forniscano elenchi di compatibilità nei rispettivi siti Web per tutti i dispositivi supportati da un driver di classe di stampa. Per altre informazioni su come implementare Gli ID compatibili nell'hardware, incluso un elenco completo di regole e restrizioni, vedere How to Implement Compatible IDS in Printing Devices.For more information about how to implement CompatibleIDs in your hardware, including a full list of rules and restrictions, see How to Implement Compatible IDS in Printing Devices.
Microsoft supporta alcuni id compatibili standard per supportare diversi driver di classe di stampa indipendenti dal produttore (standard). La tabella seguente illustra questi standard CompatibleIDs e i relativi tipi di file PDL associati.
Tipo di file PDL | Standard CompatibleID |
---|---|
XPS | 1284_CID_MS_XPS |
OpenXPS (ECMA-388) | 1284_CID_MS_OXPS |
PCL6 | 1284_CID_MS_PCL6 |
PS | 1284_CID_MS_PS |
Questi driver di classe di stampa standard supportano solo un piccolo set di funzionalità, quindi i produttori che scelgono di utilizzare questi driver di classe devono implementare la configurazione avanzata del driver, usando Bidi per aggiungere formati e configurazioni più specifici. La tabella seguente illustra le funzionalità e le opzioni associate supportate dai driver della classe di stampa standard.
Funzionalità | Opzioni |
---|---|
Formato carta | Lettera, A4 |
Risoluzione | 300dpi, 600dpi |
Tipo di supporto | Carta normale |
N-Up | 1, 2, 4, 6, 9, 16 |
PrinterDriverID
PrinterDriverID è un nuovo identificatore usato per determinare la compatibilità tra i driver per la condivisione delle stampanti, nonché la compatibilità tra i driver e le estensioni della stampante. Ad esempio, se il driver nel server specifica un PrinterDriverID nel file manifesto e il driver viene quindi condiviso, i client che si connettono a questa stampante cercheranno nell'Archivio driver locale e Windows Update un driver che specifica lo stesso PrinterDriverID nel driver INF. Se viene trovata una corrispondenza, verrà stabilita una connessione usando tale driver. I computer client non filtrano i risultati corrispondenti usando il nome del driver.
PrinterDriverID deve essere specificato per tutti i driver compatibili nei modi seguenti:
Uso della direttiva PrinterDriverID nel manifesto v4.
Come HardwareID nel driver V4 INF.
Per consentire a due driver diversi di condividere lo stesso PrinterDriverID, devono essere compatibili per la condivisione. Affinché la connessione sia sempre riuscita, i due driver devono essere in grado di eseguire le operazioni seguenti:
Supportare lo stesso PDL
Usare lo stesso tipo di file di configurazione (GPD o PPD)
Possibilità di eseguire il rendering di qualsiasi funzionalità o opzione specificata nei file GPD, PPD e/o constraint JS del driver server
Supportare le stesse estensioni della stampante
Lo spooler non convalida queste limitazioni e si basa esclusivamente su PrinterDriverID per indicare se due driver sono compatibili per la condivisione. I produttori devono assicurarsi di modificare PrinterDriverID per un driver se vengono apportate modifiche a uno degli elementi precedenti.
Le estensioni della stampante possono anche essere associate ai driver tramite PrinterDriverID. Di conseguenza, due driver che condividono un PrinterDriverID devono entrambi funzionare con le stesse estensioni della stampante. L'ultima estensione della stampante installata sovrascriverà tutte le estensioni della stampante precedenti per tutti i dispositivi che usano i printerDriverID di destinazione, quindi devono funzionare correttamente usando la stessa app.
Procedure consigliate per l'uso di GUID
I GUID vengono usati su larga scala tramite il modello di driver di stampa v4, in particolare in PrinterDriverID e anche in PrinterExtensionID, EventID e ModelID. Questi elementi vengono usati per identificare in modo univoco elementi diversi nel sistema o per identificarli come uguali per motivi di manutenzione, condivisione e così via.
Quando si creano nuovi GUID, usare sempre un generatore GUID, ad esempio quello incluso in Microsoft Visual Studio o quello incluso nell'SDK. GUID e GUID creati manualmente che sono stati erroneamente copiati e incollati sono soggetti a collisioni.
Comportamenti di installazione
Nome coda di stampa
Per i driver v3, il nome della coda di stampa è stato determinato prima dal nome del driver, quindi dall'utente. Con l'introduzione dei driver di classe di stampa, il nome del driver è molto meno utile per il riconoscimento utente del dispositivo. Windows rinomina automaticamente la coda per tutti i dispositivi Plug and Play installati per eseguire un driver di stampa v4 come indicato di seguito:
Inizialmente, il nome della coda di stampa viene impostato sul nome del driver.
Se il driver è un driver di stampa v4, Windows eseguirà una query sul dispositivo usando Bidi.
Se viene specificato \Printer.DeviceInfo:FriendlyName, verrà usato come nuovo nome della coda.
In caso contrario, Windows eseguirà una query su \Printer.DeviceInfo:Manufacturer, \Printer.DeviceInfo:ModelName.
Se vengono specificati entrambi, Windows li concatena in "Manufacturer ModelName".
Se una sola di queste query Bidi ha esito negativo, Windows userà il risultato restituito correttamente dall'altra query come nome della coda.
Se tutte le query Bidi hanno esito negativo, Windows userà IEEE 1284ID per determinare il produttore e i nomi dei modelli.
Se si specifica DESCRIPTION o DES, verrà usato come nuovo nome della coda.
In caso contrario, Windows cercherà MANUFACTURER o MFG e MODEL o MDL.
Se vengono specificati entrambi, Windows li concatena in "MANUFACTURER MODEL".
Se solo uno di questi non riesce, Windows userà il valore dell'altra chiave come nome della coda.
Aggiunta guidata stampante
Il nome del driver continuerà a essere l'unico identificatore disponibile per gli utenti che scelgono un driver nell'Aggiunta guidata stampante. I dispositivi basati su TCP/IP devono implementare il MIB di Monitoraggio porte (PWG 5107.1-2005) per supportare il rilevamento automatico TCP/IP. I dispositivi esistenti aggiunti a un driver di classe di stampa che usano un mapping HWID (Hardware ID) possono anche usare un nome di modello specifico del dispositivo.
Modifica delle porte e gestione di devnodes della stampante
Per offrire un'esperienza coerente dell'interfaccia utente, a tutte le code di stampa viene assegnato un nodo del dispositivo software (devnode). Questa è la modalità di individuazione delle stampanti nell'interfaccia utente e consente alle stampanti virtuali, alle connessioni alle stampanti condivise e alle stampanti di rete di essere enumerate e accessibili nello stesso modo delle stampanti Plug and Play (PnP). Gli sviluppatori software per le stampanti PnP fisiche erediteranno le proprietà dal nodo di sviluppo PnP che ha attivato la creazione della coda.
L'interfaccia utente raggruppa gli elementi devnodes in Contenitori di dispositivi quando due oggetti diversi sono correlati. Questo raggruppamento consente di visualizzare una stampante multifunzione (MFP) come un'icona nella cartella Dispositivi e stampanti . L'ID contenitore per tutte le funzioni in un MFP deve essere lo stesso affinché le funzioni vengano visualizzate tutte sotto la stessa icona. Questa operazione viene eseguita automaticamente per i dispositivi PnP.
La modifica della porta associata a una coda modificherà l'ID contenitore associato al nodo devnode della coda. In questo modo la coda non verrà più raggruppata nello stesso contenitore di dispositivi del resto degli oggetti PnP per il dispositivo fisico. Nel sistema operativo non sono disponibili informazioni sufficienti per pulire correttamente le situazioni in cui la coda e l'oggetto PnP vengono separati. In alcuni casi, si tratta della finalità effettiva dell'utente. Solo l'utente o l'applicazione che modifica il nome della porta sa qual è il risultato previsto e spetta all'utente/applicazione pulire qualsiasi stato di confusione lasciato indietro dopo la modifica della porta di una coda. Ecco due situazioni di esempio, con istruzioni che illustrano come eseguire la pulizia in modo appropriato.
Configurazione delle stampanti da parte dell'amministratore IT: un amministratore IT usa L'individuazione WS per trovare una stampante in rete e modifica la porta in TCP/IP perché preferisce il processo di gestione TCP/IP.
Aspettativa: nella cartella dispositivi e stampanti è presente un solo "dispositivo".
Soluzione: l'amministratore IT rimuove il nodo di sviluppo WSD PnP dalla cartella dispositivi e stampanti.
Software di installazione IHV: il driver viene installato insieme a un monitor di porta personalizzato (i monitoraggi delle porte personalizzate non sono consentiti nella versione 4, ma la stessa gestione di devnode si applica ai driver v3). L'IHV modifica la porta USB della coda di stampa in una porta creata dal produttore del dispositivo.
Aspettativa: nella cartella dispositivi e stampanti è presente un solo "dispositivo".
Soluzione 1: il nodo devnode PnP è ancora necessario: il programma di installazione modifica l'ID contenitore del nodo devnode della coda in modo che corrisponda all'oggetto PnP.
Soluzione 2: il nodo devnode PnP è estraneo: il programma di installazione rimuove il dispositivo PnP originale.
Classificazione dei driver
L'introduzione dei driver di stampa v4 non modifica il comportamento di classificazione plug and play. Quando un dispositivo è collegato, verrà selezionato il driver disponibile con il punteggio più alto. Se il driver selezionato è un driver di classe di stampa e c'è un driver di corrispondenza migliore nel sito di Windows Update, il driver selezionato verrà sostituito automaticamente al successivo download degli aggiornamenti per Windows.
Per altre informazioni sulla classificazione dei driver, vedere How Windows Ranks Drivers.For more information about driver ranking, see How Windows Ranks Drivers.
Procedure consigliate per la configurazione dei driver
Packaging
I driver di stampa V4 non usano le esigenze e includono direttive di file INF o tecnologie di driver principali per gestire i file condivisi. Di conseguenza, i driver di stampa v4 devono essere autonomi, con poche eccezioni.
I driver di stampa V4 possono continuare a dipendere dai file comuni forniti da Windows. Questi includono i file in NTPrint.INF o NTPrint4.INF. I driver possono includere questi file specificando la direttiva RequiredFiles nel file manifesto v4.
Se esistono driver di classe di stampa esistenti che forniscono funzionalità di rendering di base per i dispositivi o il PDL, esiste anche un meccanismo per accettare una dipendenza dal driver di classe usando la direttiva RequiredClass . Questa direttiva fa sì che Windows crei un driver usando i file del driver di stampa v4 e del driver di classe di stampa richiesto. I file GPD e PPD vengono uniti, con i file più specifici che hanno la precedenza su file meno specifici. Il diagramma seguente illustra la logica usata per unire i file GPD/PPD e include anche i file di configurazione dei driver avanzati ottenuti da Bidi. Altri file driver, ad esempio i vincoli JavaScript, non vengono uniti nel pacchetto driver.
Linee del modello di stampante
Plug and Play mantiene una classificazione implicita di tutti gli HARDWAREID e CompatibleIDs in una linea di modelli. Di conseguenza, Microsoft consiglia ai partner di usare le procedure consigliate seguenti per evitare comportamenti imprevedibili per quanto riguarda la classificazione.
Driver di stampa V4
Le funzioni infs del driver di stampa V4 devono definire due tipi diversi di linee del modello:
Righe HardwareID: "Nome driver" = INSTALL_SECTION, busenumerator\HardwareID
Righe PrinterDriverID: "Nome driver" = INSTALL_SECTION,{GUID}
Gli INF del driver di stampa V4 devono definire hardwareID specifici del bus su singole righe:
"Nome driver" = INSTALL_SECTION,WSDPRINT\HardwareID
"Nome driver" = INSTALL_SECTION,USBPRINT\HardwareID
"Nome driver" = INSTALL_SECTION,LPTENUM\HardwareID
Driver di classe di stampa
Gli INFS del driver di classe di stampa devono definire tre tipi diversi di linee del modello:
Righe HardwareID: "Nome driver" = INSTALL_SECTION,HardwareID
Righe PrinterDriverID: "Nome driver" = INSTALL_SECTION,{GUID}
Righe CompatibleID: "Print Class Driver name" = INSTALL_SECTION,1284_CID_CompatID
Gli INF del driver di classe di stampa non devono definire alcun enumeratore bus (ad esempio WSDPRINT)
Argomenti correlati
Come implementare ID compatibili nei dispositivi di stampa