Delen via


Automatische configuratie tijdens de installatie van het apparaat

In de volgende afbeelding ziet u de gegevensstroom in automatische configuratie wanneer een apparaat is geïnstalleerd.

diagram waarin de gegevensstroom in automatische configuratie wordt weergegeven wanneer een apparaat is geïnstalleerd.

  1. Wanneer een printer is geïnstalleerd, initialiseert de spooler het stuurprogramma door het aanroepen DrvPrinterEvent en doorgeven van PRINTER_EVENT_INITIALIZE in het gesprek.

  2. Het stuurprogramma maakt gebruik van bidi-communicatieinterfaces om de gewenste gegevens te verkrijgen, inclusief waarden voor installeerbare opties zoals \Printer.Configuration.DuplexUnit:Installed en \Printer.Configuration.HardDisk:Installed.

  3. De bidi-communicatieinterface voert een query uit op de poortmonitor voor waarden van deze kenmerken. De poortmonitor kan enkele van de aangevraagde gegevens in zijn cache hebben. Voor illustratieve doeleinden in de volgende stappen wordt ervan uitgegaan dat de waarde voor \Printer.Configuration.HardDisk:Installed zich in de cache van de poortmonitor bevindt, maar dat de waarde voor \Printer.Configuration.DuplexUnit:Installed niet is.

  4. Als de poortmonitor een cache heeft en een of meer van de aangevraagde waarden erin heeft opgeslagen, retourneert de poortmonitor deze waarden naar de bidi-communicatieinterface. Voor waarden die niet in de cache zijn opgenomen, retourneert de poortmonitor ERROR_NO_DATA. Houd er rekening mee dat een bidi-query kan mislukken als de poortmonitor een cache implementeert, maar de cache leeg is. Om dit probleem te voorkomen, moet de poortmonitor de bidi-communicatie-interface waarschuwen wanneer de cache wordt gevuld.

  5. De bidi-communicatieinterface geeft de informatie die deze ontvangt van de poortmonitor door aan het stuurprogramma. Als de aanroep van de bidi-communicatieinterface naar de poortmonitor om welke reden dan ook mislukt, moet het stuurprogramma standaardwaarden voor deze kenmerken instellen. Zodra de poortmonitor informatie ontvangt over de aangevraagde kenmerken, moet er een melding met deze informatie worden verzonden naar de communicatie-interface bidi.

    Het stuurprogramma werkt het register bij met de waarde voor \Printer.Configuration.HardDisk:Installed (verkregen uit de cache van de poortmonitor) en de standaardwaarde voor \Printer.Configuration.DuplexUnit:Installed.

  6. De poortmonitor voert een query uit op het apparaat voor beide waarden, inclusief de waarde die in de cache is opgeslagen (\Printer.Configuration.HardDisk:Installed).

  7. Het apparaat verzendt de waarden voor de opgevraagde kenmerken naar de poortmonitor. Voor een kenmerk waarvan de waarde nog niet aanwezig was in de cache of waarvan de waarde verschilt van het kenmerk in de cache, plaatst de poortmonitor de nieuwe waarde in de cache.

  8. De poortmonitor verzendt een melding naar de spooler met waarden die voorheen niet in de cache stonden of die zijn gewijzigd. In dit voorbeeld verzendt de poortmonitor een melding naar de spooler over de nieuwe waarde voor \Printer.Configuration.DuplexUnit:Installed. Als de waarde in de cache gelijk is aan de nieuwe waarde die van het apparaat is ontvangen, verzendt de poortmonitor geen melding naar de spooler.

  9. De spooler reageert op de melding van de poortmonitor door DrvPrinterEvent aan te roepen, waarbij PRINTER_EVENT_CONFIGURATION_UPDATE en informatie over alle gewijzigde waarden tijdens de oproep worden doorgegeven. Deze actie dient twee doeleinden: om het stuurprogramma op de hoogte te stellen van de waarde van een kenmerk waarvan de waarde voor het eerst in de cache is geplaatst of waarvan de waarde is gewijzigd (\Printer.Configuration.DuplexUnit:Installed, in dit voorbeeld); om het register bij te werken. Voor elke printer serialiseert de spooler de aanroepen naar DrvPrinterEvent, zodat het stuurprogramma niet thread-safe hoeft te zijn.

    Omdat apparaatgegevens worden opgeslagen in het register, kan het stuurprogramma voldoen aan aanroepen om informatie over de gebruikersinterface of apparaatmogelijkheden bij te werken zonder dat het rechtstreeks met het fysieke apparaat hoeft te communiceren. Het stuurprogramma kan er zeker van zijn dat de informatie die is opgeslagen in het register juist is, omdat wijzigingsmeldingen het stuurprogramma activeren om een query uit te voeren op het apparaat en de configuratiestatus van het apparaat bij te werken.

  10. Het stuurprogramma werkt de gebruikersinterface bij volgens de nieuwste configuratie.

    Het stuurprogramma kan bepalen wanneer er een wijziging is opgetreden tijdens de installatie van het apparaat, omdat het meldingsbericht de gewijzigde waarde heeft. Als de melding echter te groot is om via het meldingsmechanisme te worden verzonden, heeft de melding een of meer ReducedSchema-exemplaren, die allemaal aangeeft dat een apparaatkenmerk is gewijzigd, maar zonder details van de nieuwe waarde.