Manutenzione del dispositivo

Importante

È consigliabile 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 stampanti.

Per altre informazioni, vedere la guida alla progettazione dell'app di supporto stampa.

Una funzionalità di manutenzione del dispositivo è 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 da un'app per dispositivi UWP o un'estensione della stampante al sottosistema di stampa. Ad esempio, è possibile inviare comandi al dispositivo di stampa per pulire gli ugelli penna.

Il monitoraggio delle porte funziona insieme ai file di estensione Bidi forniti dal fornitore per tradurre queste richieste Bidi in comandi specifici del dispositivo e del protocollo e quindi trasmetterli al dispositivo di stampa. Un'attività di manutenzione del dispositivo viene eseguita inviando query "Set" a Bidi al dispositivo di stampa e la risposta Bidi dal dispositivo indica se l'operazione ha avuto esito positivo o negativo.

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 (codice denominato "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 dopo il completamento dell'operazione Bidi asincrona.

Al termine dell'operazione, l'oggetto callback viene richiamato nel 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 del dispositivo è supportata nelle app per dispositivi UWP dopo che l'app viene richiamata tramite uno dei tre punti di ingresso.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2