Freigeben über


EnumPrinterData-Funktion

Die EnumPrinterData-Funktion listet Konfigurationsdaten für einen angegebenen Drucker auf.

Verwenden Sie die Funktion EnumPrinterDataEx , um die Konfigurationsdaten in einem einzigen Aufruf abzurufen.

Syntax

DWORD EnumPrinterData(
  _In_  HANDLE  hPrinter,
  _In_  DWORD   dwIndex,
  _Out_ LPTSTR  pValueName,
  _In_  DWORD   cbValueName,
  _Out_ LPDWORD pcbValueName,
  _Out_ LPDWORD pType,
  _Out_ LPBYTE  pData,
  _In_  DWORD   cbData,
  _Out_ LPDWORD pcbData
);

Parameter

hPrinter [in]

Ein Handle für den Drucker, dessen Konfigurationsdaten abgerufen werden sollen. Verwenden Sie die OpenPrinter - oder AddPrinter-Funktion , um einen Druckerhandle abzurufen.

dwIndex [in]

Ein Indexwert, der den abzurufenden Konfigurationsdatenwert angibt.

Legen Sie diesen Parameter für den ersten Aufruf von EnumPrinterData für ein angegebenes Druckerhandle auf Null fest. Erhöhen Sie dann den Parameter für nachfolgende Aufrufe mit demselben Drucker um eins, bis die Funktion ERROR_NO_MORE_ITEMS zurückgibt. Weitere Informationen finden Sie im abschnitt "Hinweise".

Wenn Sie die in den Beschreibungen der Parameter cbValueName und cbData erwähnte Technik verwenden, um angemessene Puffergrößenwerte zu erhalten und beide Parameter bei einem ersten Aufruf von EnumPrinterData für ein angegebenes Druckerhandle auf Null festzulegen, spielt der Wert von dwIndex für diesen Aufruf keine Rolle. Legen Sie dwIndex im nächsten Aufruf von EnumPrinterData auf Null fest, um den eigentlichen Enumerationsprozess zu starten.

Konfigurationsdatenwerte sind nicht sortiert. Neue Werte weisen einen beliebigen Index auf. Dies bedeutet, dass die EnumPrinterData-Funktion Werte in beliebiger Reihenfolge zurückgeben kann.

pValueName [out]

Ein Zeiger auf einen Puffer, der den Namen des Konfigurationsdatenwerts empfängt, einschließlich eines abschließenden NULL-Zeichens.

cbValueName [in]

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

Wenn Sie möchten, dass das Betriebssystem eine angemessene Puffergröße bereitstellt, legen Sie sowohl diesen Parameter als auch den cbData-Parameter für den ersten Aufruf von EnumPrinterData für ein angegebenes Druckerhandle auf Null fest. Wenn die Funktion zurückgibt, enthält die Variable, auf die von pcbValueName verwiesen wird, eine Puffergröße, die groß genug ist, um alle Namen der Konfigurationsdaten des Druckers erfolgreich aufzuzählen.

pcbValueName [out]

Ein Zeiger auf eine Variable, die die Anzahl der Bytes empfängt, die im Puffer gespeichert sind, auf den pValueName verweist.

pType [out]

Ein Zeiger auf eine Variable, die einen Code empfängt, der den Typ der im angegebenen Wert gespeicherten Daten angibt. Eine Liste der möglichen Typcodes finden Sie unter Registrierungswerttypen. Der pType-Parameter kann NULL sein, wenn der Typcode nicht erforderlich ist.

pData [out]

Ein Zeiger auf einen Puffer, der den Konfigurationsdatenwert empfängt.

Dieser Parameter kann NULL sein, wenn der Konfigurationsdatenwert nicht erforderlich ist.

cbData [in]

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

Wenn Sie möchten, dass das Betriebssystem eine angemessene Puffergröße bereitstellt, legen Sie sowohl diesen Parameter als auch den cbValueName-Parameter für den ersten Aufruf von EnumPrinterData für ein angegebenes Druckerhandle auf Null fest. Wenn die Funktion zurückgibt, enthält die Variable, auf die von pcbData verwiesen wird, eine Puffergröße, die groß genug ist, um alle Namen der Konfigurationsdaten des Druckers erfolgreich aufzuzählen.

pcbData [out]

Ein Zeiger auf eine Variable, die die Anzahl der Bytes empfängt, die im Puffer gespeichert sind, auf den pData verweist.

Dieser Parameter kann NULL sein, wenn pDataNULL ist.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert ERROR_SUCCESS.

Wenn die Funktion fehlschlägt, ist der Rückgabewert ein Systemfehlercode.

Die Funktion gibt ERROR_NO_MORE_ITEMS zurück, wenn für ein angegebenes Druckerhandle keine Konfigurationsdatenwerte mehr abgerufen werden.

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 Laufzeitfaktoren wie Netzwerk-status, Druckserverkonfiguration und Druckertreiberimplementierungsfaktoren ab, die beim Schreiben einer Anwendung schwer vorherzusagen sind. Das Aufrufen dieser Funktion aus einem Thread, der die Interaktion mit der Benutzeroberfläche verwaltet, könnte dazu führen, dass die Anwendung nicht mehr reagiert.

EnumPrinterData ruft den Druckerkonfigurationsdatensatz der SetPrinterData-Funktion ab. Die Konfigurationsdaten eines Druckers bestehen aus einem Satz benannter und typisierter Werte. Die EnumPrinterData-Funktion ruft bei jedem Aufruf einen dieser Werte sowie seinen Namen und einen Typcode ab. Rufen Sie die EnumPrinterData-Funktion mehrmals hintereinander auf, um alle Konfigurationsdatenwerte eines Druckers abzurufen.

Druckerkonfigurationsdaten werden in der Registrierung gespeichert. Beim Aufzählen von Druckerkonfigurationsdaten sollten Sie den Aufruf von Registrierungsfunktionen vermeiden, die diese Daten möglicherweise ändern.

Wenn Sie möchten, dass das Betriebssystem eine angemessene Puffergröße bereitstellen soll, rufen Sie zuerst EnumPrinterData auf, wobei die Parameter cbValueName und cbData auf Null festgelegt sind, wie weiter oben im Abschnitt Parameter erwähnt. Der Wert von dwIndex spielt für diesen Aufruf keine Rolle. Wenn die Funktion zurückgibt, enthalten *pcbValueName und *pcbData Puffergrößen, die groß genug sind, um alle Namen und Werte der Konfigurationsdaten des Druckers aufzuzählen. Weisen Sie beim nächsten Aufruf Wertnamen- und Datenpuffer zu, legen Sie cbValueName und cbData auf die Größen in Bytes der zugeordneten Puffer fest, und legen Sie dwIndex auf Null fest. Rufen Sie anschließend die EnumPrinterData-Funktion auf, und erhöhen Sie dwIndex jedes Mal um eins, bis die Funktion ERROR_NO_MORE_ITEMS zurückgibt.

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ßen von Windows.h)
Bibliothek
Winspool.lib
DLL
Winspool.drv
Unicode- und ANSI-Name
EnumPrinterDataW (Unicode) und EnumPrinterDataA (ANSI)

Siehe auch

Drucken

Druckspooler-API-Funktionen

DeletePrinterData

EnumPrinterDataEx

GetPrinterData

OpenPrinter

SetPrinter

SetPrinterData