Maintenance de l’appareil

Important

Nous vous recommandons d’utiliser le pilote de classe de boîte de réception IPP de Microsoft, ainsi que les applications de support d’impression (PSA), pour personnaliser l’expérience d’impression dans Windows 10 et 11 pour le développement de périphériques d’imprimante.

Pour plus d’informations, consultez le Guide de conception de l’application de support d’impression.

Une fonctionnalité de maintenance des appareils a été introduite dans Windows 8.1 et versions ultérieures de Windows.

Cette fonctionnalité utilise la communication bidirectionnelle (Bidi) pour vous permettre d’envoyer des commandes de maintenance d’appareil à partir d’une application d’appareil UWP ou d’une extension d’imprimante au sous-système d’impression. Par exemple, vous pouvez envoyer des commandes à votre périphérique d’impression pour propre les buses d’encre.

Le moniteur de port fonctionne conjointement avec les fichiers d’extension Bidi fournis par le fournisseur pour traduire ces demandes Bidi en commandes spécifiques à l’appareil et au protocole, puis les transmettre à l’appareil d’impression. Une tâche de maintenance de l’appareil est effectuée en envoyant des requêtes Bidi « Set » à l’appareil d’impression, et la réponse Bidi de l’appareil indique si l’opération a réussi ou échoué.

La nouvelle interface asynchrone qui permet d’implémenter cette fonctionnalité prend des données XML sous la forme d’un paramètre de chaîne et d’un objet de rappel.

Étant donné que l’interface est asynchrone, l’appelant n’a pas besoin d’attendre une réponse. Une fois l’opération Bidi terminée, l’objet de rappel est appelé.

Les nouvelles interfaces

Les interfaces suivantes ont été introduites dans Windows (sous le nom de code « Blue ») pour implémenter la fonctionnalité de maintenance des appareils.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2

Lancement d’une session de maintenance d’appareil

Pour lancer une session de maintenance d’appareil, vous devez d’abord créer votre chaîne de commande en tant que données XML. Vous devez ensuite créer une instance de l’objet de rappel qui sera appelée une fois l’opération Bidi asynchrone terminée.

Une fois l’opération terminée, l’objet de rappel est appelé sur la méthode IPrinterBidiSetRequestCallback ::Completed, qui fournit la valeur HRESULT de l’opération. Vous pouvez ensuite analyser cette valeur HRESULT et effectuer toutes les autres tâches nécessaires.

L’extrait de code C# suivant décrit comment émettre une tâche de maintenance d’appareil à partir d’une application d’appareil 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 maintenance des appareils est prise en charge dans les applications d’appareil UWP une fois l’application appelée via l’un des trois points d’entrée.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2