SetPrinter-Funktion

Die Funktion SetPrinter legt die Daten für einen angegebenen Drucker fest oder legt den Zustand des angegebenen Druckers fest, indem der Druckvorgang angehalten, der Druck fortgesetzt oder alle Druckaufträge gelöscht werden.

Syntax

BOOL SetPrinter(
  _In_ HANDLE hPrinter,
  _In_ DWORD  Level,
  _In_ LPBYTE pPrinter,
  _In_ DWORD  Command
);

Parameter

hprinter [ in]

Ein Handle für den Drucker. Verwenden Sie die Funktion " OpenPrinter", " OpenPrinter2" oder " addprinter ", um ein Drucker Handle abzurufen.

Ebene [ in]

Der Typ der Daten, die die Funktion in dem Puffer speichert, auf den pprinter zeigt. Wenn der Befehls Parameter ungleich 0 (null) ist, muss der ebeneinameter gleich 0 (null) sein.

Dieser Wert kann 0, 2, 3, 4, 5, 6, 7, 8 oder 9 sein.

pprinter [ in]

Ein Zeiger auf einen Puffer, der Daten enthält, die für den Drucker festgelegt werden sollen, oder die Informationen für den Befehl enthält, der vom Befehls Parameter angegeben wird. Der Typ der Daten im Puffer wird durch den Wert der Ebene bestimmt.

Ebene Struktur
0
Wenn der Befehls Parameter der _ druckersteuerungsestatusstatus _ _ ist, muss pprinter einen DWORD -Wert enthalten, der den festzulegenden neuen Drucker Status angibt. Eine Liste der möglichen Statuswerte finden Sie unter dem statusmember der Struktur " Printer _ Info _ 2 ". Beachten Sie, dass der Drucker _ Status _ angeh alten wurde und der Drucker _ Status _ ausstehende _ Löschung keine gültigen Status Werte ist.
Wenn die Ebene 0 ist, der Befehls Parameter jedoch nicht der Status der Drucker _ Steuerungs _ Sätze _ ist, muss pprinter null sein.
2
Eine " Printer _ Info _ 2 "-Struktur, die ausführliche Informationen über den Drucker enthält.
3
Eine Drucker _ Info _ 3 -Struktur, die die Sicherheitsinformationen des Druckers enthält.
4
Eine Drucker _ Info _ 4 -Struktur, die die minimalen Drucker Informationen enthält, einschließlich des Drucker namens, des Server namens und der Angabe, ob der Drucker Remote oder lokal ist.
5
Eine Drucker _ Info _ 5 -Struktur, die Drucker Informationen enthält, wie z. b. Drucker Attribute und Timeout Einstellungen.
6
Eine Drucker _ Info _ 6 -Struktur, die den Statuswert eines Druckers angibt.
7
Eine Drucker _ Info _ 7 -Struktur. Der dwAction -Member dieser Struktur gibt an, ob SetPrinter die Daten des Druckers im Verzeichnisdienst veröffentlichen, erneut veröffentlichen, erneut veröffentlichen oder aktualisieren soll.
8
Eine Drucker _ Info _ 8 -Struktur, die die globalen Standarddrucker Einstellungen angibt.
9
Eine Drucker _ Info _ 9 -Struktur, die die Standarddrucker Einstellungen pro Benutzer angibt.

Befehl [ in]

Die auszuführende Aktion.

Wenn der Level -Parameter ungleich NULL ist, legen Sie den Wert dieses Parameters auf NULL fest. In diesem Fall behält der Drucker seinen aktuellen Zustand bei, und die Funktion konfiguriert die Druckerdaten gemäß den Parametern " Level " und " pprinter " neu.

Wenn der Level -Parameter 0 (null) ist, legen Sie den Wert dieses Parameters auf einen der folgenden Werte fest.

Wert Bedeutung
Drucker _ Steuerelement anhalten _
Halten Sie den Drucker an.
Löschen von Drucker _ Steuerelementen _
Löschen Sie alle Druckaufträge im Drucker.
Drucker Steuerelement fortsetzen _ _
Setzen Sie einen angehaltenen Drucker fort.
_Status des druckersteuerungsets _ _
Legen Sie den Druckerstatus fest.
Legen Sie den Parameter " pprinter " auf einen Zeiger auf einen DWORD -Wert fest, der den neuen Druckerstatus angibt.

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 Level 7 ist und bei der Veröffentlichungs Aktion ein Fehler aufgetreten ist, gibt SetPrinter eine _ _ ausstehende Fehler -e/a zurück und versucht, die Aktion im Hintergrund abzuschließen. Wenn Level 7 ist und die Aktualisierungs Aktion fehlgeschlagen ist, gibt SetPrinter die Fehler _ Datei _ nicht _ gefunden zurück.

Bemerkungen

Hinweis

Dies ist eine blockierende oder synchrone Funktion, die möglicherweise nicht sofort zurückgegeben wird. Wie schnell diese Funktion zurückgibt, hängt von Lauf Zeitfaktoren ab, wie z. b. Netzwerkstatus, Druckserver Konfiguration und Implementierungs Faktoren für Druckertreiber, die beim Schreiben einer Anwendung schwierig vorhergesagt werden können. Wenn diese Funktion von einem Thread aufgerufen wird, der die Interaktion mit der Benutzeroberfläche verwaltet, könnte die Anwendung scheinbar nicht mehr reagiert.

Sie können SetPrinter nicht verwenden, um den Standarddrucker zu ändern.

Um die aktuellen Druckereinstellungen zu ändern, rufen Sie die GetPrinter -Funktion auf, um die aktuellen Einstellungen in eine Drucker _ Info _ 2 -Struktur abzurufen, die Elemente dieser Struktur nach Bedarf zu ändern und dann SetPrinter aufzurufen.

Die Funktion " SetPrinter " ignoriert die Member " pservername", " AveragePPM", " Status" und " cjobs " einer Drucker _ Info _ 2 -Struktur.

Durch das Anhalten eines Druckers wird die Planung aller Druckaufträge für diesen Drucker angehalten, mit Ausnahme eines Druckauftrags, der möglicherweise gerade gedruckt wird. Druckaufträge können an einen angehaltenen Drucker übermittelt werden, aber es ist nicht geplant, Aufträge auf diesem Drucker zu drucken, bis der Druckvorgang fortgesetzt wird. Wenn ein Drucker gelöscht wird, werden alle Druckaufträge für diesen Drucker gelöscht, mit Ausnahme des aktuellen Druckauftrags.

Wenn Sie SetPrinter verwenden, um die Standardstruktur DEVMODE für einen Drucker zu ändern (Global Festlegen der Drucker Standardwerte), müssen Sie zuerst die DocumentProperties -Funktion aufrufen, um die DEVMODE -Struktur zu überprüfen.

Für die Drucker _ Info _ 2 -und Printer _ Info _ 3 -Strukturen, die einen Zeiger auf eine Sicherheits Beschreibung enthalten, kann die Funktion nur die Komponenten der Sicherheits Beschreibung festlegen, für die der Aufrufer über die Berechtigung zum Ändern verfügt. Um bestimmte sicherheitsbeschreibungkomponenten festzulegen, müssen Sie die erforderlichen Zugriffsrechte angeben, wenn Sie die Funktion OpenPrinter oder OpenPrinter2 aufrufen, um ein Handle für den Drucker abzurufen. In der folgenden Tabelle sind die zum Ändern der verschiedenen sicherheitsbeschreibungkomponenten erforderlichen Zugriffsrechte aufgeführt.

Zugriffsberechtigung Sicherheitsbeschreibungerkomponente
_Besitzer schreiben Besitzer
Primäre Gruppe
_DAC schreiben Freigegebene Zugriffs Steuerungs Liste (DACL)
Zugreifen auf die _ System _ Sicherheit System Zugriffs Steuerungs Liste (SACL)

Wenn die Sicherheits Beschreibung eine Komponente enthält, für die der Aufrufer nicht über das zu ändernde Zugriffsrecht verfügt, kann SetPrinter nicht ausgeführt werden. Die Komponenten einer Sicherheits Beschreibung, die Sie nicht ändern möchten, sollten nach Bedarf null sein oder nicht vorhanden sein. Wenn Sie die Sicherheits Beschreibung nicht ändern möchten und SetPrinter mit einer _ Druckerinfo- _ 2 -Struktur aufrufen, legen Sie den psecuritydescriptor -Member dieser Struktur auf null fest.

Die Internetverbindungs Firewall (ICF) blockiert standardmäßig Drucker Anschlüsse, eine Ausnahme für die Datei-und Druckfreigabe kann jedoch aktiviert werden. Wenn SetPrinter von einem Computer Administrator aufgerufen wird, wird die Ausnahme aktiviert. Wenn Sie von einem nicht-Administrator aufgerufen wird und die Ausnahme nicht bereits aktiviert wurde, schlägt der Aufruf fehl.

Sie können Ebene 7 mit der Drucker _ Info _ 7 -Struktur verwenden, um Verzeichnisdienst Daten für den Drucker zu veröffentlichen, zu veröffentlichen oder zu aktualisieren. Die Verzeichnisdienst Daten für einen Drucker enthalten alle Daten, die unter den splds-Schlüsseln gespeichert sind _ * , durch Aufrufe der setprinterdataex -Funktion für den Drucker. Legen Sie vor dem Aufrufen von SetPrinter den pszobjectguid -Member der Drucker _ Info _ 7 auf null fest, und legen Sie den dwAction -Member auf einen der folgenden Werte fest.

Wert BESCHREIBUNG
dsprint- _ Veröffentlichung
Veröffentlicht die Verzeichnisdienst Daten.
dsprint _ erneut veröffentlichen
Die Verzeichnisdienst Daten für den Drucker werden nicht veröffentlicht und dann erneut veröffentlicht, sodass alle Eigenschaften im veröffentlichten Drucker aktualisiert werden. Bei der erneuten Veröffentlichung wird auch die GUID des veröffentlichten Druckers geändert. Verwenden Sie diesen Wert, wenn Sie vermuten, dass die veröffentlichten Daten des Druckers beschädigt wurden.
dsprint- _ Veröffentlichung aufheben
Veröffentlicht die Veröffentlichung der Verzeichnisdienst Daten.
dsprint- _ Update
Aktualisiert die Verzeichnisdienst Daten. Dies entspricht der dsprint- _ Veröffentlichung, mit dem Unterschied, dass SetPrinter fehlschlägt, wenn die Fehler _ Datei _ nicht _ gefunden wurde, wenn der Drucker nicht bereits veröffentlicht wurde.
Verwenden Sie das dsprint- _ Update zum Aktualisieren veröffentlichter Eigenschaften, aber nicht das veröffentlichen. Druckertreiber sollten immer das dsprint- _ Update anstelle der dsprint- _ Veröffentlichung verwenden.

Dsprint _ Pending ist kein gültiger dwAction -Wert für SetPrinter.

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
Setprinterw (Unicode) und setprintera (ANSI)

Siehe auch

Drucken

Druckspooler-API-Funktionen

AddPrinter

GetPrinter

OpenPrinter

OpenPrinter2

Drucker _ Informationen _ 2

Drucker _ Informationen _ 3

Drucker _ Info _ 4

Drucker _ Informationen _ 5

Drucker _ Info _ 6

Drucker _ Info _ 7

Drucker _ Informationen _ 8

Drucker _ Informationen _ 9

Setprinterdataex