Stampa di Terminal Server

Importante

A partire da WDK per Windows 11, versione 22H2, i co-installer ridistribuibili di WDF non sono più supportati. Per informazioni su come risolvere questa modifica, vedere L'articolo sui co-installer ridistribuibili WDF non funziona nell'articolo problemi noti di WDK .

Microsoft Windows supporta Servizi terminal, una tecnologia che consente a più utenti di connettersi a un singolo sistema server. Questo sistema server è denominato server terminal. Per una descrizione dettagliata di Servizi terminal, vedere la documentazione di Windows SDK.

Se si sviluppa un minidriver o un driver della stampante per Windows, non è necessario eseguire alcuna operazione speciale per supportare le stampanti connesse ai server terminal. Tuttavia, è necessario seguire tutte le linee guida per la progettazione, l'implementazione e l'installazione specificate in Windows Driver Kit (WDK). In particolare, è necessario usare le regole seguenti:

Tutto il codice driver personalizzato deve essere reentrant. Il codice in modalità utente deve usare oggetti sezione critici (descritti nella documentazione di Windows SDK). Il codice in modalità kernel deve usare semafori (vedere EngCreateSemaphore e le funzioni correlate).

I driver della stampante e i componenti spooler personalizzati devono accedere al Registro di sistema solo tramite interfacce fornite in modo specifico per questi driver e componenti dello spooler, come descritto nelle sezioni appropriate di WDK.

Considerazioni sull'installazione

In genere, tutto quello che è necessario fare per l'installazione è fornire un file INF che può essere letto dal programma di installazione della classe stampante di Microsoft quando un utente richiama la procedura guidata Aggiungi stampante . A volte è necessario anche il codice di installazione personalizzato (un programma di installazione condivisa o un programma di installazione di classe). Se è necessario creare codice di installazione personalizzato, tenere presente quanto segue:

  • L'utente o il codice di installazione deve impostare il server terminal in modalità di installazione. Per altre informazioni, vedere la documentazione di Microsoft Windows SDK.

  • Non tentare di sostituire i file di sistema. La protezione file di Windows impedisce la sostituzione dei file di sistema.

  • Evitare di richiedere il riavvio del sistema il più possibile. Usare le linee guida seguenti:

    1. Non sostituire i file driver che non sono stati modificati. Ad esempio, i file condivisi da diversi dispositivi non devono essere aggiornati se la versione più recente è già installata.

    2. Se è necessario sostituire un file, il codice di installazione deve eseguire passaggi per scaricare la versione precedente e quindi caricare la nuova versione, ad esempio arrestando il servizio driver, sostituendo il file e riavviando il servizio.

    3. Richiedere a un utente di disconnettersi, quindi ripetere l'accesso, è preferibile richiedere un riavvio del sistema.

Per altre informazioni sui programmi di installazione di classi e sui programmi di installazione di classi, vedere Scrittura di programmi di installazione classi e co-programmi di installazione.

Prima di scrivere codice di installazione personalizzato, è importante leggere le linee guida per la programmazione di Servizi terminal fornite nella documentazione di Windows SDK.

Considerazioni sull'interfaccia utente

Il codice di installazione personalizzato eseguito da un utente può visualizzare un'interfaccia utente.

Quasi tutto il codice driver della stampante viene eseguito nel contesto di esecuzione dello spooler e pertanto non può visualizzare un'interfaccia utente. Le interfacce utente possono essere visualizzate solo dalle DLL dell'interfaccia della stampante e solo dall'interno delle funzioni seguenti:

  • Le funzioni DrvDevicePropertySheets e DrvDocumentPropertySheets , che creano pagine delle proprietà.

  • Funzione DrvPrinterEvent , che riceve i codici evento che identificano gli eventi della stampante. La funzione può visualizzare un'interfaccia utente solo per i codici evento PRINTER_EVENT_ADD_CONNECTION e PRINTER_EVENT_DELETE_CONNECTION.

Tutto il codice driver della stampante viene eseguito nel contesto dello spooler. Da questo contesto è consentita la chiamata a MessageBox o MessageBoxEx, ma è necessario impostare MB_SERVICE_NOTIFICATION. Queste funzioni sono descritte nella documentazione di Windows SDK.