Freigeben über


Herunterladen warteschlangenspezifischer Dateien

Wenn ein Benutzer entscheidet, eine Druckerverbindung zwischen einem Clientsystem und einem Druckserver herzustellen, und wenn eine Installationsanwendung die Registrierungseinträge erstellt hat, die unter Unterstützender Punkt und Druck bei Druckerinstallationen beschrieben sind, treten die folgenden Ereignisse auf:

  1. Die Benutzeranwendung ruft AddPrinterConnection auf.

  2. Der Remotedruckanbieter des Clients (Win32spl.dll) stellt eine Verbindung mit dem Server her.

  3. Der Spooler des Servers sendet Treiberdateien an den Client.

  4. Die Win32spl.dll des Clients ruft EnumPrinterKey und EnumPrinterDataEx auf dem Server auf, um die Registrierungseinträge des Druckers zu kopieren.

  5. Da der Spooler des Servers registrierungswerte während der Verarbeitung von EnumPrinterDataEx aufzählt, führt er jedes Mal die folgenden Vorgänge aus, wenn er auf einen Unterschlüssel des CopyFiles-Schlüssels des Druckers trifft, z. B . CopyFiles\ICM:

    • Lädt die Point and Print-DLL, sofern angegeben, und ruft die Funktion GenerateCopyFilePaths auf, die Quell- und/oder Zielpfade ändern kann.

    • Erstellt SourceDir- und TargetDir-Schlüssel basierend auf Quell- und Zielpfaden, die von GenerateCopyFilePaths zurückgegeben werden, und gibt sie als EnumPrinterDataEx-Daten an den Clientspooler zurück. (Diese Schlüssel sind auf dem Server nicht wirklich vorhanden.)

  6. Die Win32spl.dll des Clients speichert Druckerschlüssel zwischen, die als Reaktion auf EnumPrinterData- und EnumPrinterDataEx-Aufrufe empfangen wurden.

  7. Für jeden Unterschlüssel des CopyFiles-Schlüssels des Druckers, z. B . CopyFiles\ICM, führt die Win32spl.dll des Clients die folgenden Vorgänge aus:

    • Lädt die lokale Point and Print-DLL, sofern vorhanden, und ruft ihre GenerateCopyFilePaths-Funktion auf, die Quell- und/oder Zielpfade ändern kann. (Eingaben sind die Vom Server empfangenen SourceDir- und TargetDir-Schlüssel.)

    • Lädt alle Dateien, die dem Schlüssel Files zugeordnet sind, vom Server herunter.

    • Protokolliert ein Ereignis, das angibt, dass Point- und Print-Dateien heruntergeladen wurden.

    • Ruft die SpoolerCopyFileEvent-Funktion der Point-and-Print-DLL auf, wenn eine DLL bereitgestellt wird, und gibt ein COPYFILE_EVENT_FILES_CHANGED-Ereignis an.

  8. Der Clientspooler ruft die DrvPrinterEvent-Funktion des Treibers auf und gibt ein PRINTER_EVENT_CACHE_REFRESH-Ereignis an.

  9. Der Clientspooler ruft die DrvPrinterEvent-Funktion des Treibers erneut auf und gibt ein PRINTER_EVENT_ADD_CONNECTION-Ereignis an.

  10. Wenn eine Point and Print-DLL bereitgestellt wird, ruft der Clientspooler seine SpoolerCopyFileEvent-Funktion auf und gibt ein COPYFILE_EVENT_ADD_PRINTER_CONNECTION-Ereignis an.

Verbindungsbeispiel

Angenommen, eine Installationsanwendung hat die im Installationsbeispiel beschriebenen Serverregistrierungseinträge definiert. Angenommen, der Server hat den Namen NTPRINT und der Client den Namen MyClient.

Um eine Verbindung mit der Druckwarteschlange namens HpColor auf NTPRINT herzustellen, ruft eine Benutzeranwendung auf MyClient AddPrinterConnection wie folgt auf:

AddPrinterConnection("\\NTPRINT\HpColor")

Auf dem Server lädt der Spooler Mscms.dll und ruft GenerateCopyFilePaths wie folgt auf:

GenerateCopyFilePaths(
    "HpColor",
    "Color",
    &SplclientInfo1,
    1,
    \\NTPRINT\PRINT$\Color,
    &dwSourceDirSize,
    "Color",
    &dwDestDirSize,
    COPYFILE_FLAG_SERVER_SPOOLER)

Das Mscms.dll-Modul von Microsoft ICM ändert die Quell- oder Zielpfade nicht, sodass nur ERROR_SUCCESS zurückgegeben wird.

Der Server-Spooler gibt die folgenden Schlüssel an MyClient zurück:

SourceDir: \\NTPRINT\PRINT$\Color
TargetDir: "Color"

Auf dem Client wird der Wert für TargetDir zu C:\Winnt\System32\Spool\Drivers\Color erweitert.

Der Spooler in MyClient führt die folgenden Vorgänge aus:

  • Lädt Mscms.dll herunter und ruft GenerateCopyFilePaths wie folgt auf:

    GenerateCopyFilePaths(
        "\\NTPRINT\HpColor",
        "Color",
        &SplclientInfo1,
        1,
        \\NTPRINT\PRINT$\Color,
        &dwSourceDirSize,
        "C:\Winnt\System32\Spool\Drivers\Color",
        &dwDestDirSize,
        COPYFILE_FLAG_CLIENT_SPOOLER)
    

    Das Mscms.dll-Modul von Microsoft ICM ändert die Quell- oder Zielpfade nicht, sodass nur ERROR_SUCCESS zurückgegeben wird.

  • Lädt Hpclrlsr.icm zu C:\Winnt\System32\Spool\Drivers\Color herunter.

  • Protokolliert ein Ereignis, das angibt, dass Point- und Print-Dateien heruntergeladen wurden.

  • Ruft die SpoolerCopyFileEvent-Funktion in Mscms.dll auf und gibt ein COPYFILE_EVENT_FILES_CHANGED-Ereignis an.

  • Ruft die DrvPrinterEvent-Funktion des Druckertreibers auf, und gibt ein PRINTER_EVENT_CACHE_REFRESH-Ereignis an.

  • Ruft die DrvPrinterEvent-Funktion des Druckertreibers erneut auf, und gibt ein PRINTER_EVENT_ADD_CONNECTION-Ereignis an.

  • Ruft die SpoolerCopyFileEvent-Funktion in Mscms.dll auf und gibt ein COPYFILE_EVENT_ADD_PRINTER_CONNECTION-Ereignis an.