Delen via


Apparaatonderhoud

Belangrijk

Het moderne afdrukplatform is de voorkeursmiddel van Windows om te communiceren met printers. U wordt aangeraden om Microsoft's IPP-inboxclass-driver te gebruiken, samen met Print Support Apps (PSA), om de afdrukervaring in Windows 10 en 11 aan te passen bij de ontwikkeling van printerdrivers.

Zie de ontwerphandleiding voor Print Support App v1 en v2 voor meer informatie.

Er is een functie voor apparaatonderhoud geïntroduceerd in Windows 8.1 en nieuwere versies van Windows.

Deze functie maakt gebruik van bidirectionele communicatie (Bidi) zodat u onderhoudsopdrachten voor apparaten kunt verzenden vanuit een UWP-apparaat-app of een printerextensie naar het afdruksubsysteem. U kunt bijvoorbeeld opdrachten naar uw printapparaat verzenden om de inktmonden te reinigen.

De poortmonitor werkt in combinatie met de door de leverancier geleverde Bidi-extensiebestanden om deze Bidi-aanvragen om te zetten in apparaat- en protocolspecifieke opdrachten en deze vervolgens naar het afdrukapparaat te verzenden. Een onderhoudstaak voor apparaten wordt uitgevoerd door Bidi Set-query's naar het afdrukapparaat te verzenden en het Bidi-antwoord van het apparaat geeft aan of de bewerking is geslaagd of mislukt.

De nieuwe asynchrone interface waarmee deze functie kan worden geïmplementeerd, neemt XML-gegevens op in de vorm van een tekenreeksparameter en een callback-object.

Omdat de interface asynchroon is, hoeft de aanroeper niet te wachten op een antwoord. Wanneer de Bidi-bewerking is voltooid, wordt het callback-object aangeroepen.

De nieuwe interfaces

De volgende interfaces zijn geïntroduceerd in Windows (code genaamd 'Blauw') om de onderhoudsfunctie voor apparaten te implementeren.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2

Een onderhoudssessie voor apparaten starten

Als u een onderhoudssessie voor apparaten wilt initiëren, moet u eerst de opdrachtreeks als XML-gegevens maken. Vervolgens moet u een exemplaar maken van het callback-object dat wordt aangeroepen nadat de asynchrone Bidi-bewerking is voltooid.

Nadat de bewerking is voltooid, wordt het callback-object aangeroepen op de methode IPrinterBidiSetRequestCallback::Completed en die de HRESULT-waarde van de bewerking levert. Vervolgens kunt u deze HRESULT-waarde parseren en andere benodigde taken uitvoeren.

In het volgende C#-fragment wordt beschreven hoe u een onderhoudstaak voor een apparaat uitvoert vanuit een UWP-apparaat-app.

//
// 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'
        }
    }
} 

Apparaatonderhoud wordt ondersteund in UWP-apparaat-apps nadat de app is aangeroepen via een van de drie toegangspunten.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2