Share via


Concetti di configurazione dei driver V4

Importante

È consigliabile usare il driver di classe posta in arrivo 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 della stampante.

Per altre informazioni, vedere la 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, che elimina la possibilità di conflitti di file e migliora 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 della 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 elemento CompatibleID specifico è 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 rispetto alla 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 CompatibleID.

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. Se i driver di classe di stampa sono interessati, è consigliabile che i produttori forniscano elenchi di compatibilità nei 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 Come implementare ID compatibili nei dispositivi di stampa.

Microsoft supporta alcuni id compatibili standard per supportare diversi driver di classe di stampa indipendenti dal produttore (standard). La tabella seguente illustra questi id compatibili standard 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 dimensioni e configurazioni di carta più specifiche. 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 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 l'archivio driver locale e Windows Update per 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 INF v4.

Per consentire a due driver diversi di condividere lo stesso PrinterDriverID, devono essere compatibili per la condivisione. Affinché la connessione venga sempre eseguita correttamente, 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 eventuali funzionalità o opzioni specificate nei file JS dei criteri di gruppo, PPD e/o vincoli 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 essere sicuri 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 gli id PrinterDriverID di destinazione, quindi devono funzionare correttamente usando la stessa app.

Procedure consigliate per l'uso dei 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 vengono usati per identificare in modo univoco elementi diversi nel sistema o per identificarli come gli stessi 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

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 della 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:

  1. Inizialmente, il nome della coda di stampa è impostato sul nome del driver.

  2. Se il driver è un driver di stampa v4, Windows eseguirà una query sul dispositivo usando Bidi.

    1. Se si specifica \Printer.DeviceInfo:FriendlyName, verrà usato come nuovo nome della coda.

    2. In caso contrario, Windows eseguirà una query su \Printer.DeviceInfo:Manufacturer, \Printer.DeviceInfo:ModelName.

      1. Se vengono specificati entrambi, Windows li concatena in "Manufacturer ModelName".

      2. Se solo una di queste query Bidi ha esito negativo, Windows userà il risultato restituito correttamente dall'altra query come nome della coda.

  3. Se tutte le query Bidi hanno esito negativo, Windows userà IEEE 1284ID per determinare il produttore e i nomi dei modelli.

    1. Se viene specificato DESCRIPTION o DES, verrà usato come nuovo nome della coda.

    2. In caso contrario, Windows cercherà MANUFACTURER o MFG e MODEL o MDL.

      1. Se vengono specificati entrambi, Windows li concatena in "MANUFACTURER MODEL".

      2. Se solo uno di questi ha esito negativo, 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 nella Procedura guidata Aggiungi 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 dei nodi di sviluppo della stampante

Per offrire un'esperienza coerente dell'interfaccia utente, a tutte le code di stampa viene assegnato un nodo del dispositivo software (devnode). Questo è il modo in cui le stampanti vengono individuate nell'interfaccia utente e consentono stampanti virtuali, connessioni a stampanti condivise e stampanti di rete di essere enumerate e accessibili allo stesso modo delle stampanti Plug and Play (PnP). Gli sviluppatori software per le stampanti PnP fisiche erediteranno le proprietà dal nodo devnode 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. Non sono presenti informazioni sufficienti nel sistema operativo per pulire correttamente le situazioni in cui la coda e l'oggetto PnP diventano separati. In alcuni casi, ovvero la finalità effettiva dell'utente. Solo l'utente o l'applicazione che modifica il nome della porta sa qual è il risultato previsto e deve essere eseguito dall'utente/applicazione per pulire qualsiasi stato di confusione lasciato dietro dopo la modifica della porta di una coda. Ecco due situazioni di esempio, con istruzioni che illustrano come pulire in modo appropriato.

  1. Configurazione delle stampanti IT: un amministratore IT usa L'individuazione WS per trovare una stampante nella rete e modifica la porta su TCP/IP perché piace il processo di gestione TCP/IP.

    1. Attesa: nella cartella dispositivi e stampanti è presente un solo "dispositivo".

    2. Soluzione: l'amministratore IT rimuove il nodo di sviluppo WSD PnP dalla cartella dispositivi e stampanti.

  2. Software di installazione IHV: il driver installa un driver insieme a un monitor porta personalizzato (i monitoraggi delle porte personalizzati 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.

    1. Attesa: nella cartella dispositivi e stampanti è presente un solo "dispositivo".

    2. 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.

    3. Soluzione 2: il nodo devnode PnP è extraneo: il programma di installazione rimuove il dispositivo PnP originale.

Classificazione 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 migliore classificato, corrispondente nel sito Windows Update, il driver selezionato verrà sostituito automaticamente al successivo download degli aggiornamenti dell'utente per Windows.

Per altre informazioni sulla classificazione dei driver, vedere How Windows Ranks Drivers(How Windows Ranks Drivers).

Procedure consigliate per la configurazione del 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 solo alcune eccezioni.

I driver di stampa V4 possono continuare a prendere dipendenze 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 sono presenti 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 causa la compilazione di un driver di Windows usando i file sia dal driver di stampa v4 che dal 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 del driver avanzati ottenuti da Bidi. Altri file driver, ad esempio vincoli JavaScript, non vengono uniti nel pacchetto driver.

Logica di unione dei file gpd/ppd.

Linee del modello di stampante

Plug and Play mantiene una classificazione implicita di tutti gli ID hardware e gli ID compatibili in una linea di modello. Di conseguenza, Microsoft consiglia ai partner di usare le procedure consigliate seguenti per evitare comportamenti imprevedibili rispetto alla classificazione.

Driver di stampa V4

  1. I file INFS del driver di stampa V4 devono definire due tipi diversi di linee di modello:

    1. Linee HardwareID: "Nome driver" = INSTALL_SECTION, busenumerator\HardwareID

    2. Righe PrinterDriverID: "Nome driver" = INSTALL_SECTION,{GUID}

  2. I file INFS del driver di stampa V4 devono definire hardware specifici del bus su singole linee:

    1. "Nome driver" = INSTALL_SECTION,WSDPRINT\HardwareID

    2. "Nome driver" = INSTALL_SECTION,USBPRINT\HardwareID

    3. "Nome driver" = INSTALL_SECTION,LPTENUM\HardwareID

  1. Gli INFS del driver di classe di stampa devono definire tre tipi diversi di linee di modello:

    1. Righe HardwareID: "Nome driver" = INSTALL_SECTION,HardwareID

    2. Righe PrinterDriverID: "Nome driver" = INSTALL_SECTION,{GUID}

    3. Righe compatibleID: "Print Class Driver name" = INSTALL_SECTION,1284_CID_CompatID

  2. Gli infs del driver di classe di stampa non devono definire alcun enumeratore del bus, ad esempio WSDPRINT.

Come implementare id compatibili nei dispositivi di stampa

Modalità di classificazione dei driver di Windows

MiB monitoraggio porta (PWG 5107.1-2005)