Delen via


Stuurprogrammaondersteuning voor aangepaste gebruikersinterface

Belangrijk

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

Voor meer informatie, zie de ontwerpgids voor printondersteuning van apps .

Het v4-printerstuurprogrammamodel is ontwikkeld met ingebouwde ondersteuning voor aanpassing van de gebruikersinterface met behulp van printerextensies of UWP-apparaat-apps voor afdrukken.

In de volgende secties worden meer overwegingen voor het ontwerp van ui-aanpassingen beschreven.

Alle v4-afdrukstuurprogramma's werken met afdrukvoorkeuren, maar het is belangrijk om de grenzen tussen de configuratie- en ui-lagen te behouden om maximale consistentie in alle scenario's te garanderen. Omdat er mogelijk geen printerextensies of UWP-apparaat-apps zijn geïnstalleerd of als deze automatisch zijn geïnstalleerd, moeten v4-printerstuurprogramma's ervoor zorgen dat de printerstuurprogramma's functioneel zijn zonder een aangepaste printervoorkeuren. Dit betekent met name dat de ondersteuning voor PrintTicket en PrintCapabilities volledig en uitgebreid moet zijn in de implementatie van GPD/PPD + JavaScript-beperkingen in het stuurprogramma.

Sommige validatie van beperkingen in de printerextensie of UWP-apparaat-app kan nuttig zijn in termen van een zeer informatieve, interactieve ervaring, maar deze moet de validatie van het stuurprogramma niet vervangen, wat als gezaghebbend wordt beschouwd.

Printerextensies en UWP-apparaat-apps moeten de methode IPrinterQueue::SendBidiQuery gebruiken in plaats van directe netwerkoproepen naar een netwerkresource te maken. Als er verbinding moet worden gemaakt met een netwerkresource, moet deze worden uitgevoerd op een andere thread of asynchroon om te voorkomen dat de gebruikersinterface vasthangt. Gegevens moeten in de cache worden opgeslagen nadat ze zijn opgehaald om toekomstige aanroepen sneller te kunnen aanroepen.

Printermeldingen

Printermeldingen worden aangestuurd door Bidi en door het XML-bestand DriverEvent. Om de levensduur van de batterij beter te beheren en onderbrekingen te minimaliseren, worden meldingen echter alleen weergegeven wanneer een gebruiker afdrukt.

Hoewel afdrukvoorkeuren contextueel zijn voor de app die afdrukt, zijn printermeldingen dat niet. In het volgende stroomdiagram wordt de beslissingsstructuur uitgelegd die door Windows wordt gebruikt om het gedrag van printermeldingen te bepalen. Indien beschikbaar, hebben UWP-apparaat-apps voorrang op printerextensies.

stroomdiagram voor printermeldingen.

Het is belangrijk te weten dat als u een aangepaste gebruikersinterface gebruikt om een melding weer te geven in de Windows 8-omgeving door GetForegroundWindow-aan te roepen, wordt het meldingsvenster niet weergegeven. Dit komt doordat het besturingssysteem probeert een hogere prioriteit toe te wijzen aan de thread die een voorgrondvenster maakt met Behulp van GetForegroundWindow, en dit is niet toegestaan voor dialoogvensters in de Windows 8-omgeving. Als u een aangepaste gebruikersinterface wilt gebruiken om een melding weer te geven in de Windows 8-omgeving, moet u dit doen door GetDesktopWindow aan te roepen.

Stuurprogramma-gebeurtenissen maken. V4-afdrukstuurprogramma's maken gebruik van een DRIVEREvent XML-bestand om Bidi-query's en de triggers te beschrijven waardoor een stuurprogramma-gebeurtenis wordt gegenereerd. En het is belangrijk om te weten dat stuurprogramma-gebeurtenissen alleen standaardtekenreeksen ondersteunen. Zie AsyncUI Default Resource File String Resourcesvoor meer informatie over standaardtekenreeksen. In de huidige implementatie zorgt dit ervoor dat een AsyncUIBalloon bericht wordt gemaakt en gepubliceerd met behulp van het MS-PAN protocol. Deze implementatie kan in de toekomst veranderen om de prestaties te verbeteren, dus het is van cruciaal belang om uw v4-afdrukstuurprogramma te ontwikkelen, zodat het geen afhankelijkheden van het onderliggende protocol accepteert.

In het volgende diagram ziet u het protocolgebruik.

protocolgebruik met stuurprogramma-gebeurtenissen.

XML-voorbeeld van stuurprogrammagebeurtenis. In het volgende XML-codefragment wordt één stuurprogrammagebeurtenis opgegeven. De gebeurtenis controleert of de gele inkt kleiner is dan 21% van de totale capaciteit, zoals gerapporteerd door Bidi. Als dit gebeurt, wordt er een AsyncUIBalloon-bericht gemaakt met de tekenreeks waarnaar wordt verwezen door resourceID 132. Met andere woorden, het bericht zou zeggen dat ''%1' laag is op toner/inkt', waarbij Resource 2002 ("Geel") wordt vervangen door %1.

<de:DriverEvents xmlns:de="https://schemas.microsoft.com/windows/2011/08/printing/driverevents" schemaVersion="4.0">
  <DriverEvent eventId="{A04CF0FC-1CEB-4C62-B967-6F0AE5C5F81E}">
    <Transport>USB</Transport>
    <Transport>WSD</Transport>
    <Query>\Printer.Consumables</Query>
    <Trigger result="\Printer.Consumables.Yellow:Level" comparison="LessThan" value="21">
      <StandardMessage resourceId="132">
        <StringParameter index="1" resourceId="2002" />
      </StandardMessage>
    </Trigger>
  </DriverEvent>
</de:DriverEvents>

gebeurtenisschema voor stuurprogramma's. Het DriverEvent-schema is beschikbaar in de Windows Driver Kit als \Include\um\PrinterDriverEvents.xsd.

XML-validatie van stuurprogrammagebeurtenis. Zolang u de DriverEvent XML correct in het stuurprogrammamanifest beschrijft, wordt het XML-bestand automatisch gevalideerd door het INFGate hulpmiddel.

AsyncUIBalloon

AsyncUI Standaardresourcebestandreeks

IPrinterQueue::SendBidiQuery

MS-PAN protocol