AddPrinterDriverEx-Funktion

Die Funktion AddPrinterDriverEx installiert einen lokalen oder Remotedruckertreiber und verknüpft die Konfigurations-, Daten- und Treiberdateien. Neben den Funktionen von AddPrinterDriververfügt es auch über Optionen, die ein striktes Upgrade, ein striktes Downgrade, nur das Kopieren neuerer Dateien und das Kopieren aller Dateien (unabhängig von Dateizeitstempeln) ermöglichen.

Hinweis

Die Installation eines Druckertreibers ohne Treiberpaket wird nicht mehr empfohlen. Verwenden Sie stattdessen InstallPrinterDriverFromPackage.

Syntax

BOOL AddPrinterDriverEx(
  _In_    LPTSTR pName,
  _In_    DWORD  Level,
  _Inout_ LPBYTE pDriverInfo,
  _In_    DWORD  dwFileCopyFlags
);

Parameter

pName [ In]

Ein Zeiger auf eine auf NULL endende Zeichenfolge, die den Namen des Servers angibt, auf dem der Treiber installiert werden soll. Wenn dieser Parameter NULL ist, installiert die Funktion den Treiber auf dem lokalen Computer.

Ebene [ In]

Die Version der -Struktur, auf die pDriverInfo verweist. Dieser Wert kann 2, 3, 4, 6 oder 8 sein.

pDriverInfo [ in, out]

Ein Zeiger auf eine -Struktur, die Druckertreiberinformationen enthält. Dies kann einer der folgenden Sein:

Wert der Ebene DRIVER _ _ * INFO-Struktur
2
TREIBERINFORMATIONEN _ _ 2
3
TREIBERINFORMATIONEN _ _ 3
4
TREIBERINFORMATIONEN _ _ 4
6
TREIBERINFORMATIONEN _ _ 6
8
TREIBERINFORMATIONEN _ _ 8

Wenn der pEnvironment-Member der -Struktur, auf die pDriverInfo zeigt, NULL ist, verwendet die Funktion die aktuelle Umgebung des Aufrufers/Clients, nicht die Umgebung des Ziels/Servers.

dwFileCopyFlags [ In]

Die Optionen zum Kopieren der Treiberdateien. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
_APD: KOPIEREN _ ALLER _ DATEIEN
Fügen Sie den Druckertreiber hinzu, und kopieren Sie alle Dateien im Verzeichnis printer-driver. Die Dateizeitstempel werden mit dieser Option ignoriert.
APD _ COPY _ FROM _ DIRECTORY
Fügen Sie den Druckertreiber mithilfe der vollqualifizierten Dateinamen hinzu, die in der DRIVER _ INFO _ 6-Struktur angegeben sind. Dieses Flag wird in Verbindung mit einem der anderen Kopierflags ORed. Wenn dieses Flag festgelegt ist, schlägt AddPrinterDriverEx fehl, wenn die Dateien nicht vorhanden sind, wo sie von der DRIVER INFO _ _ 6-Struktur als vorhanden angegeben werden. Die Dateien müssen nicht in das Druckertreiberverzeichnis des Systems kopiert werden. Weitere Informationen finden Sie in den Hinweisen.
Windows 2000: Dieses Flag wird nicht unterstützt.
_APD: KOPIEREN _ NEUER _ DATEIEN
Fügen Sie den Druckertreiber hinzu, und kopieren Sie die Dateien im Druckertreiberverzeichnis, die neuer sind als alle entsprechenden Dateien, die derzeit verwendet werden. Dieses Flag emuliert das Verhalten von AddPrinterDriver.
APD _ STRICT _ DOWNGRADE
Fügen Sie den Druckertreiber nur hinzu, wenn alle Dateien im Druckertreiberverzeichnis älter sind als alle derzeit verwendeten entsprechenden Dateien.
APD _ STRICT _ UPGRADE
Fügen Sie den Druckertreiber nur hinzu, wenn alle Dateien im Verzeichnis printer-driver neuer sind als alle derzeit verwendeten entsprechenden Dateien.

Rückgabewert

Wenn die Funktion erfolgreich ausgeführt wird, ist der Rückgabewert ein Wert ungleich 0 (null).

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null.

Wenn der Druckertreiber bekanntermaßen Probleme beim Arbeiten mit dem Betriebssystem hat, schlägt AddPrinterDriverEx mit einem der folgenden Fehlercodes fehl:

Fehlercode Bedeutung
_ _ FEHLERDRUCKERTREIBER _ BLOCKIERT Der Treiber funktioniert nicht unter dem Betriebssystem.
_ _ FEHLERDRUCKERTREIBER _ GEWARNT Der Treiber ist auf dem Betriebssystem unzuverlässig. Wenn jedoch APD _ _ INSTALL WARNED DRIVER angegeben _ ist, wird der Treiber installiert, und es wird keine Warnung ausgegeben.

Weitere Informationen finden Sie in den Hinweisen.

Hinweise

Hinweis

Dies ist eine blockierende oder synchrone Funktion und wird möglicherweise nicht sofort zurückgegeben. Wie schnell diese Funktion zurückgegeben wird, hängt von Laufzeitfaktoren wie Netzwerkstatus, Druckerserverkonfiguration und Implementierungsfaktoren für Druckertreiber ab, die beim Schreiben einer Anwendung schwer vorherzusagen sind. Das Aufrufen dieser Funktion über einen Thread, der die Interaktion mit der Benutzeroberfläche verwaltet, kann dazu bringen, dass die Anwendung scheinbar nicht reagiert.

Der Aufrufer muss über seLoadDriverPrivilege verfügen.

Vor dem Aufrufen der AddPrinterDriverEx-Funktion müssen alle dateien, die vom Treiber benötigt werden, in das Druckertreiberverzeichnis des Systems kopiert werden. Um den Namen dieses Verzeichnisses abzurufen, rufen Sie die GetPrinterDriverDirectory-Funktion auf.

Um zu ermitteln, welche Druckertreiber derzeit installiert sind, rufen Sie die EnumPrinterDrivers-Funktion auf.

Wenn der Druckertreiber erfolgreich hinzugefügt wurde, ruft die Funktion die Funktion DrvDriverEvent (DRIVER _ EVENT _ INITIALIZE, Level, DRIVER _ INFO , _ * lparam ) auf, damit der Treiber alle während der Installation eines Druckertreibers erforderlichen Initialisierungen ausführen kann. Weitere Informationen zu DrvDriverEvent finden Sie im Microsoft Windows Driver Development Kit (DDK).

Der Treiber sollte während des Aufrufs von DrvDriverEvent keinen Benutzeroberflächenaufruf verwenden. Für benutzeroberflächenbezogene Aufträge sollte das Installationsprogramm entweder den Eintrag VendorSetup in der INF-Datei des Druckers verwenden, oder für Plug & Play Geräte kann das Installationsprogramm ein gerätespezifisches Co-Installationsprogramm verwenden. Weitere Informationen zu VendorSetup finden Sie im DDK.

Die Dateien, auf die in der DRIVER _ INFO _ 6-Struktur verwiesen wird, müssen lokal auf dem Computer sein, von dem aus der Aufruf erfolgt. Ein Dateiname kann ein UNC-Name sein, solange der UNC-Name der lokale Computer ist.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows 2000 Server [nur Desktop-Apps]
Header
Winspool.h (include Windows.h)
Bibliothek
Winspool.lib
DLL
Winspool.drv
Unicode- und ANSI-Name
AddPrinterDriverExW (Unicode) und AddPrinterDriverExA (ANSI)

Siehe auch

Drucken

Druckspooler-API-Funktionen

AddPrinterDriver

TREIBERINFORMATIONEN _ _ 2

TREIBERINFORMATIONEN _ _ 3

TREIBERINFORMATIONEN _ _ 4

TREIBERINFORMATIONEN _ _ 6

DeletePrinterDriverEx

EnumPrinterDrivers

GetPrinterDriverDirectory