Share via


GetPrinter-Funktion

Die GetPrinter-Funktion ruft Informationen zu einem angegebenen Drucker ab.

Syntax

BOOL GetPrinter(
  _In_  HANDLE  hPrinter,
  _In_  DWORD   Level,
  _Out_ LPBYTE  pPrinter,
  _In_  DWORD   cbBuf,
  _Out_ LPDWORD pcbNeeded
);

Parameter

hPrinter [in]

Ein Handle für den Drucker, für den die Funktion Informationen abruft. Verwenden Sie die OpenPrinter - oder AddPrinter-Funktion , um einen Druckerhandle abzurufen.

Ebene [in]

Die Ebene oder der Typ der Struktur, die die Funktion in dem Puffer speichert, auf den pPrinter verweist.

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

pPrinter [out]

Ein Zeiger auf einen Puffer, der eine Struktur empfängt, die Informationen zum angegebenen Drucker enthält. Der Puffer muss groß genug sein, um die Struktur und alle Zeichenfolgen oder andere Daten zu empfangen, auf die die Strukturmember zeigen. Wenn der Puffer zu klein ist, gibt der pcbNeeded-Parameter die erforderliche Puffergröße zurück.

Der Typ der Struktur wird durch den Wert von Level bestimmt.

Ebene Struktur
1
Eine PRINTER_INFO_1 Struktur, die allgemeine Druckerinformationen enthält.
2
Eine PRINTER_INFO_2 Struktur mit detaillierten Informationen zum Drucker.
3
Eine PRINTER_INFO_3 Struktur, die die Sicherheitsinformationen des Druckers enthält.
4
Eine PRINTER_INFO_4 Struktur, die minimale Druckerinformationen enthält, einschließlich des Druckernamens, des Namens des Servers und der Angabe, ob der Drucker remote oder lokal ist.
5
Eine PRINTER_INFO_5 Struktur, die Druckerinformationen wie Druckerattribute und Timeouteinstellungen enthält.
6
Eine PRINTER_INFO_6 Struktur, die den status Wert eines Druckers angibt.
7
Eine PRINTER_INFO_7-Struktur , die angibt, ob der Drucker im Verzeichnisdienst veröffentlicht wird.
8
Eine PRINTER_INFO_8 Struktur, die die globalen Standarddruckereinstellungen angibt.
9
Eine PRINTER_INFO_9 Struktur, die die Standardeinstellungen des Druckers pro Benutzer angibt.

cbBuf [in]

Die Größe des Puffers in Bytes, auf den pPrinter verweist.

pcbNeeded [ out]

Ein Zeiger auf eine Variable, die die Funktion auf die Größe der Druckerinformationen in Bytes festlegt. Wenn cbBuf kleiner als dieser Wert ist, schlägt GetPrinter fehl, und der Wert stellt die erforderliche Puffergröße dar. Wenn cbBuf gleich oder größer als dieser Wert ist, ist GetPrinter erfolgreich, und der Wert stellt die Anzahl der im Puffer gespeicherten Bytes dar.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Nichtzero-Wert.

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

Bemerkungen

Hinweis

Dies ist eine blockierende oder synchrone Funktion und wird möglicherweise nicht sofort zurückgegeben. Wie schnell diese Funktion zurückgibt, hängt von Laufzeitfaktoren wie Netzwerk-status, Druckserverkonfiguration und Druckertreiberimplementierungsfaktoren ab, die beim Schreiben einer Anwendung schwer vorherzusagen sind. Wenn Sie diese Funktion über einen Thread aufrufen, der die Interaktion mit der Benutzeroberfläche verwaltet, kann die Anwendung nicht reagieren.

Das pDevMode-Element in den strukturen PRINTER_INFO_2, PRINTER_INFO_8 und PRINTER_INFO_9 kann NULL sein. In diesem Fall ist der Drucker nicht verwendbar, bis der Treiber erfolgreich neu installiert wurde.

Für die PRINTER_INFO_2 - und PRINTER_INFO_3-Strukturen , die einen Zeiger auf einen Sicherheitsdeskriptor enthalten, ruft die Funktion nur die Komponenten des Sicherheitsdeskriptors ab, die der Aufrufer lesen darf. Zum Abrufen bestimmter Sicherheitsbeschreibungskomponenten müssen Sie die erforderlichen Zugriffsrechte angeben, wenn Sie die OpenPrinter-Funktion aufrufen, um ein Handle für den Drucker abzurufen. In der folgenden Tabelle sind die Zugriffsrechte aufgeführt, die zum Lesen der verschiedenen Sicherheitsbeschreibungskomponenten erforderlich sind.

Zugriffsrecht Sicherheitsdeskriptorkomponente
READ_CONTROL
Besitzer
Primäre Gruppe
Diskretionäre Zugriffssteuerungsliste (DACL)
ACCESS_SYSTEM_SECURITY
Systemzugriffssteuerungsliste (SACL)

Wenn Sie Ebene 7 angeben, gibt der dwAction-Member von PRINTER_INFO_7 einen der folgenden Werte zurück, um anzugeben, ob der Drucker im Verzeichnisdienst veröffentlicht wird.

dwAction-Wert Bedeutung
DSPRINT_PUBLISH Der Drucker wird veröffentlicht. Das pszObjectGUID-Element enthält die GUID des Dem Drucker zugeordneten Verzeichnisdienste-Druckwarteschlangenobjekts.
DSPRINT_UNPUBLISH Der Drucker wird nicht veröffentlicht.
DSPRINT_PENDING Gibt an, dass das System versucht, einen Veröffentlichungs- oder Veröffentlichungsvorgang aufzuheben. Wenn ein SetPrinter-Aufruf einen Drucker nicht veröffentlichen oder aufheben kann, unternimmt das System weitere Versuche, den Vorgang im Hintergrund abzuschließen.

Ab Windows Vista werden die von GetPrinter zurückgegebenen Druckerdaten aus einem lokalen Cache abgerufen, wenn hPrinter auf einen Drucker verweist, der von einem Druckserver gehostet wird und mindestens eine offene Verbindung mit dem Druckserver besteht. In allen anderen Konfigurationen werden die Druckerdaten vom Druckserver abgefragt.

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 (einschließlich Windows.h)
Bibliothek
Winspool.lib
DLL
Winspool.drv
Unicode- und ANSI-Name
GetPrinterW (Unicode) und GetPrinterA (ANSI)

Siehe auch

Drucken

Druckspooler-API-Funktionen

AbortPrinter

AddPrinter

ClosePrinter

DeletePrinter

EnumPrinters

PRINTER_INFO_1

PRINTER_INFO_2

PRINTER_INFO_3

PRINTER_INFO_4

PRINTER_INFO_5

PRINTER_INFO_7

PRINTER_INFO_8

PRINTER_INFO_9

OpenPrinter

SetPrinter