Condividi tramite


Manutenzione dei dispositivi

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.

Una funzionalità di manutenzione dei dispositivi è stata introdotta in Windows 8.1 e versioni successive di Windows.

Questa funzionalità usa la comunicazione bidirezionale (Bidi) per consentire di inviare comandi di manutenzione dei dispositivi dall'interno di un'app per dispositivi UWP o da un'estensione della stampante al sottosistema di stampa. Ad esempio, è possibile inviare comandi al dispositivo di stampa per pulire gli ugelli input penna.

Il monitoraggio delle porte funziona insieme ai file di estensione Bidi forniti dal fornitore per convertire queste richieste Bidi in comandi specifici del dispositivo e del protocollo e quindi trasmetterle al dispositivo di stampa. Un'attività di manutenzione del dispositivo viene eseguita inviando query "Set" bidi al dispositivo di stampa e la risposta Bidi dal dispositivo indica se l'operazione è riuscita o non è riuscita.

La nuova interfaccia asincrona che consente di implementare questa funzionalità accetta dati XML sotto forma di parametro stringa e un oggetto callback.

Poiché l'interfaccia è asincrona, il chiamante non deve attendere una risposta. Al termine dell'operazione Bidi, viene richiamato l'oggetto callback.

Nuove interfacce

Le interfacce seguenti sono state introdotte in Windows (denominate "Blue") per implementare la funzionalità di manutenzione del dispositivo.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2

Avvio di una sessione di manutenzione del dispositivo

Per avviare una sessione di manutenzione del dispositivo, è prima necessario creare la stringa di comando come dati XML. È quindi necessario creare un'istanza dell'oggetto callback che verrà richiamato al termine dell'operazione Bidi asincrona.

Al termine dell'operazione, l'oggetto callback viene richiamato sul metodo IPrinterBidiSetRequestCallback::Completed e che fornisce il valore HRESULT dell'operazione. È quindi possibile analizzare questo valore HRESULT ed eseguire qualsiasi altra attività necessaria.

Il frammento di codice C# seguente illustra come eseguire un'attività di manutenzione del dispositivo da un'app per dispositivi UWP.

//
// Declare a global constant that will be used
// to determine whether method calls were successful
//
const int S_OK = 0;
 
class BidiSendAsyncDemo
{
    //
    // Create a queue object and also
    // create the command string
    //
    void PerformDeviceMaintenance(
        IPrinterQueue2 queue,
        string bidiRequestInXml
        )
    {
        BidiSetResultCallback callBack = new BidiSetResultCallback();

        IPrinterExtensionAsyncOperation asyncOperation =
          queue.SendBidiSetRequestAsync(bidiRequestInXml, callBack);
    }
}

/// <summary>
/// This class represents the callback object
/// </summary>
public class BidiSetResultCallback :
    IPrinterBidiSetRequestCallback
{
    void Completed(
        string bidiResponse,
        int hr
        )
    {
        if (S_OK == hr)
        {
            // parse and interpret 'bidiResponse'
        }
    }
} 

La manutenzione dei dispositivi è supportata nelle app per dispositivi UWP dopo che l'app viene richiamata tramite uno dei tre punti di ingresso.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2