DeviceCapabilitiesA-Funktion (wingdi.h)

Die DeviceCapabilities-Funktion ruft die Funktionen eines Druckertreibers ab.

Syntax

int DeviceCapabilitiesA(
  [in]  LPCSTR         pDevice,
  [in]  LPCSTR         pPort,
  [in]  WORD           fwCapability,
  [out] LPSTR          pOutput,
  [in]  const DEVMODEA *pDevMode
);

Parameter

[in] pDevice

Ein Zeiger auf eine NULL-Zeichenfolge, die den Namen des Druckers enthält. Beachten Sie, dass dies der Name des Druckers und nicht des Druckertreibers ist.

[in] pPort

Ein Zeiger auf eine NULL-Zeichenfolge, die den Namen des Ports enthält, mit dem das Gerät verbunden ist, z. B. LPT1.

[in] fwCapability

Die abzufragbaren Funktionen. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
DC_BINNAMES
Ruft die Namen der Papierbehälter des Druckers ab. Der pOutput-Puffer empfängt ein Array von Zeichenfolgenpuffern. Jeder Zeichenfolgenpuffer ist 24 Zeichen lang und enthält den Namen eines Papierkorbs. Der Rückgabewert gibt die Anzahl der Einträge im Array an. Die Namenszeichenfolgen sind NULL-beendet, es sei denn, der Name ist 24 Zeichen lang. Wenn pOutputNULL ist, ist der Rückgabewert die Anzahl der erforderlichen Bin-Einträge.
DC_BINS
Ruft eine Liste der verfügbaren Papiertonnen ab. Der pOutput-Puffer empfängt ein Array von WORD-Werten , die die verfügbaren Papierquellen für den Drucker angeben. Der Rückgabewert gibt die Anzahl der Einträge im Array an. Eine Liste der möglichen Arraywerte finden Sie in der Beschreibung des dmDefaultSource-Members der DEVMODE-Struktur . Wenn pOutputNULL ist, gibt der Rückgabewert die erforderliche Anzahl von Einträgen im Array an.
DC_COLLATE
Wenn der Drucker die Sortierung unterstützt, ist der Rückgabewert 1; andernfalls ist der Rückgabewert 0. Der pOutput-Parameter wird nicht verwendet.
DC_COLORDEVICE
Wenn der Drucker den Farbdruck unterstützt, ist der Rückgabewert 1; andernfalls ist der Rückgabewert 0. Der pOutput-Parameter wird nicht verwendet.
DC_COPIES
Gibt die Anzahl der Kopien zurück, die das Gerät drucken kann.
DC_DRIVER
Gibt die Versionsnummer des Druckertreibers zurück.
DC_DUPLEX
Wenn der Drucker Duplexdruck unterstützt, ist der Rückgabewert 1; andernfalls ist der Rückgabewert 0. Der pOutput-Parameter wird nicht verwendet.
DC_ENUMRESOLUTIONS
Ruft eine Liste der vom Drucker unterstützten Auflösungen ab. Der pOutput-Puffer empfängt ein Array von LONG-Werten . Für jede unterstützte Auflösung enthält das Array ein Paar von LONG-Werten , die die x- und y-Dimensionen der Auflösung in Punkt pro Zoll angeben. Der Rückgabewert gibt die Anzahl der unterstützten Auflösungen an. Wenn pOutputNULL ist, gibt der Rückgabewert die Anzahl der unterstützten Auflösungen an.
DC_EXTRA
Gibt die Anzahl der Bytes zurück, die für den gerätespezifischen Teil der DEVMODE-Struktur für den Druckertreiber erforderlich sind.
DC_FIELDS
Gibt das dmFields-Element der DEVMODE-Struktur des Druckertreibers zurück. Das dmFields-Element gibt an, welche Member im geräteunabhängigen Teil der Struktur vom Druckertreiber unterstützt werden.
DC_FILEDEPENDENCIES
Ruft die Namen aller zusätzlichen Dateien ab, die bei der Installation eines Treibers geladen werden müssen. Der pOutput-Puffer empfängt ein Array von Zeichenfolgenpuffern. Jeder Zeichenfolgenpuffer ist 64 Zeichen lang und enthält den Namen einer Datei. Der Rückgabewert gibt die Anzahl der Einträge im Array an. Die Namenszeichenfolgen sind NULL-beendet, es sei denn, der Name ist 64 Zeichen lang. Wenn pOutputNULL ist, ist der Rückgabewert die Anzahl der Dateien.
DC_MAXEXTENT
Gibt das maximale Papierformat zurück, das die Mitglieder dmPaperLength und dmPaperWidth der DEVMODE-Struktur des Druckertreibers angeben können. Der LOWORD des Rückgabewerts enthält den maximalen dmPaperWidth-Wert , und HIWORD enthält den maximalen dmPaperLength-Wert .
DC_MEDIAREADY
Ruft die Namen der Papierformulare ab, die derzeit zur Verwendung verfügbar sind. Der pOutput-Puffer empfängt ein Array von Zeichenfolgenpuffern. Jeder Zeichenfolgenpuffer ist 64 Zeichen lang und enthält den Namen eines Papierformulars. Der Rückgabewert gibt die Anzahl der Einträge im Array an. Die Namenszeichenfolgen sind NULL-beendet, es sei denn, der Name ist 64 Zeichen lang. Wenn pOutputNULL ist, ist der Rückgabewert die Anzahl der Papierformulare.
DC_MEDIATYPENAMES
Ruft die Namen der unterstützten Medientypen ab. Der pOutput-Puffer empfängt ein Array von Zeichenfolgenpuffern. Jeder Zeichenfolgenpuffer ist 64 Zeichen lang und enthält den Namen eines unterstützten Medientyps. Der Rückgabewert gibt die Anzahl der Einträge im Array an. Die Zeichenfolgen sind NULL-beendet, es sei denn, der Name ist 64 Zeichen lang. Wenn pOutputNULL ist, ist der Rückgabewert die Anzahl der erforderlichen Medientypnamen.
DC_MEDIATYPES
Ruft eine Liste der unterstützten Medientypen ab. Der pOutput-Puffer empfängt ein Array von DWORD-Werten, die die unterstützten Medientypen angeben. Der Rückgabewert gibt die Anzahl der Einträge im Array an. Eine Liste der möglichen Arraywerte finden Sie in der Beschreibung des dmMediaType-Members der DEVMODE-Struktur . Wenn pOutputNULL ist, gibt der Rückgabewert die erforderliche Anzahl von Einträgen im Array an.
DC_MINEXTENT
Gibt das Mindestpapierformat zurück, das die Mitglieder dmPaperLength und dmPaperWidth der DEVMODE-Struktur des Druckertreibers angeben können. Der LOWORD des Rückgabewerts enthält den minimalen dmPaperWidth-Wert , und HIWORD enthält den minimalen dmPaperLength-Wert .
DC_ORIENTATION
Gibt die Beziehung zwischen Hoch- und Querformatausrichtung für ein Gerät in Bezug auf die Anzahl der Grad zurück, die im Hochformat gegen den Uhrzeigersinn gedreht wird, um eine Querausrichtung zu erzeugen. Einer der folgenden Werte kann zurückgegeben werden:
0
Keine Querformatausrichtung.
90
Hochformat wird um 90 Grad gedreht, um Querformat zu erzeugen.
270
Hochformat wird um 270 Grad gedreht, um Querformat zu erzeugen.
DC_NUP
Ruft ein Array von ganzen Zahlen ab, die angeben, dass der Drucker mehrere Dokumentseiten pro gedruckter Seite drucken kann. Der pOutput-Puffer empfängt ein Array von DWORD-Werten . Jeder Wert stellt eine unterstützte Anzahl von Dokumentseiten pro gedruckter Seite dar. Der Rückgabewert gibt die Anzahl der Einträge im Array an. Wenn pOutputNULL ist, gibt der Rückgabewert die erforderliche Anzahl von Einträgen im Array an.
DC_PAPERNAMES
Ruft eine Liste der unterstützten Papiernamen ab (z. B. Letter oder Legal). Der pOutput-Puffer empfängt ein Array von Zeichenfolgenpuffern. Jeder Zeichenfolgenpuffer ist 64 Zeichen lang und enthält den Namen eines Papierformulars. Der Rückgabewert gibt die Anzahl der Einträge im Array an. Die Namenszeichenfolgen sind NULL-beendet, es sei denn, der Name ist 64 Zeichen lang. Wenn pOutputNULL ist, ist der Rückgabewert die Anzahl der Papierformulare.
DC_PAPERS
Ruft eine Liste der unterstützten Papierformate ab. Der pOutput-Puffer empfängt ein Array von WORD-Werten , die die verfügbaren Papierformate für den Drucker angeben. Der Rückgabewert gibt die Anzahl der Einträge im Array an. Eine Liste der möglichen Arraywerte finden Sie in der Beschreibung des dmPaperSize-Members der DEVMODE-Struktur . Wenn pOutputNULL ist, gibt der Rückgabewert die erforderliche Anzahl von Einträgen im Array an.
DC_PAPERSIZE
Ruft die Abmessungen jedes unterstützten Papierformats im Zehntelmillimeter ab. Der pOutput-Puffer empfängt ein Array von POINT-Strukturen . Jede Struktur enthält die Breite (x-Dimension) und die Länge (y-Dimension) eines Papierformats, als ob das Papier in der DMORIENT_PORTRAIT Ausrichtung wäre. Der Rückgabewert gibt die Anzahl der Einträge im Array an.
DC_PERSONALITY
Ruft eine Liste der vom Drucker unterstützten Druckerbeschreibungssprachen ab. Der pOutput-Puffer empfängt ein Array von Zeichenfolgenpuffern. Jeder Puffer ist 32 Zeichen lang und enthält den Namen einer Druckerbeschreibungssprache. Der Rückgabewert gibt die Anzahl der Einträge im Array an. Die Namenszeichenfolgen sind NULL-beendet, es sei denn, der Name ist 32 Zeichen lang. Wenn pOutputNULL ist, gibt der Rückgabewert die erforderliche Anzahl von Arrayeinträgen an.
DC_PRINTERMEM
Der Rückgabewert ist die Menge des verfügbaren Druckerspeichers in Kilobyte. Der pOutput-Parameter wird nicht verwendet.
DC_PRINTRATE
Der Rückgabewert gibt die Druckrate des Druckers an. Der für DC_PRINTRATEUNIT zurückgegebene Wert gibt die Einheiten des DC_PRINTRATE-Werts an. Der pOutput-Parameter wird nicht verwendet.
DC_PRINTRATEPPM
Der Rückgabewert gibt die Druckrate des Druckers in Seiten pro Minute an. Der pOutput-Parameter wird nicht verwendet.
DC_PRINTRATEUNIT
Der Rückgabewert ist einer der folgenden Werte, der die Druckrateneinheiten für den für das DC_PRINTRATE-Flag zurückgegebenen Wert angibt. Der pOutput-Parameter wird nicht verwendet.
PRINTRATEUNIT_CPS
Zeichen pro Sekunde.
PRINTRATEUNIT_IPM
Zoll pro Minute.
PRINTRATEUNIT_LPM
Zeilen pro Minute.
PRINTRATEUNIT_PPM
Seiten pro Minute.
DC_SIZE
Gibt das dmSize-Element der DEVMODE-Struktur des Druckertreibers zurück.
DC_STAPLE
Wenn der Drucker das Heften unterstützt, ist der Rückgabewert ein Wert ohne Zero. andernfalls ist der Rückgabewert 0. Der pOutput-Parameter wird nicht verwendet.
DC_TRUETYPE
Ruft die Fähigkeiten des Treibers ab, TrueType-Schriftarten zu verwenden. Für DC_TRUETYPE sollte der pOutput-ParameterNULL sein. Der Rückgabewert kann mindestens eine der folgenden Werte aufweisen:
DCTT_BITMAP
Das Gerät kann TrueType-Schriftarten als Grafiken drucken.
DCTT_DOWNLOAD
Das Gerät kann TrueType-Schriftarten herunterladen.
DCTT_SUBDEV
Gerät kann Geräteschriftarten durch TrueType-Schriftarten ersetzen.
DC_VERSION
Gibt die Spezifikationsversion zurück, der der Druckertreiber entspricht.

[out] pOutput

Ein Zeiger auf ein Array. Das Format des Arrays hängt von der Einstellung des fwCapability-Parameters ab. Sehen Sie sich die einzelnen Funktionen oben an, um herauszufinden, was zurückgegeben wird, wenn pOutputNULL ist.

[in] pDevMode

Ein Zeiger auf eine DEVMODE-Struktur . Wenn dieser Parameter NULL ist, ruft DeviceCapabilities die aktuellen Standardinitialisierungswerte für den angegebenen Druckertreiber ab. Andernfalls ruft die Funktion die Werte ab, die in der Struktur enthalten sind, auf die pDevMode verweist.

Rückgabewert

Wenn die Funktion erfolgreich ist, hängt der Rückgabewert von der Einstellung des fwCapability-Parameters ab. Ein Rückgabewert von null gibt im Allgemeinen an, dass die Funktion während der erfolgreichen Ausführung eine Art von Fehler aufgetreten ist, z. B. eine Funktion, die nicht unterstützt wird. Weitere Informationen finden Sie in den Beschreibungen zu den fwCapability-Werten .

Wenn die Funktion -1 zurückgibt, kann dies entweder bedeuten, dass die Funktion nicht unterstützt wird oder dass ein allgemeiner Funktionsfehler aufgetreten ist.

Hinweise

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 Druckertreiberimplementierung ab – Faktoren, 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.
 
Die DEVMODE-Struktur , auf die der pDevMode-Parameter verweist, kann durch Aufrufen der DocumentProperties-Funktion abgerufen werden.

Wenn ein Druckertreiber benutzerdefinierte Gerätefunktionen unterstützt, muss der Treiber die SetPrinterData-Funktion für jede benutzerdefinierte Funktion aufrufen. Die SetPrinterData-Funktion fügt dem Drucksystem die entsprechenden Druckerdaten hinzu, sodass 32-Bit-Anwendungen auf die benutzerdefinierten Funktionen bei 64-Bit-Windows-Installationen zugreifen können.

Für jede benutzerdefinierte Funktion müssen Sie zunächst Druckerdaten hinzufügen, die den Typ der Funktion beschreiben. Legen Sie dazu beim Aufrufen von SetPrinterData die pValueName-Zeichenfolge auf CustomDeviceCapabilityType_Xxx fest, wobei "Xxx" die hexadezimale Darstellung der Funktion ist. Sie können beispielsweise "CustomDeviceCapabilityType_1234" haben. Die von Ihnen festgelegten Registrierungsdaten müssen vom REG_DWORD Typ sein, und Sie müssen den Wert auf einen der folgenden Werte festlegen:

  • 0, wenn es sich bei der benutzerdefinierten Funktion um eine DWORD-Funktion handelt
  • 1, wenn die benutzerdefinierte Funktion ein Bytespuffer ist
  • 2, wenn die benutzerdefinierte Funktion ein Array von Elementen ist
Wenn die benutzerdefinierte Funktion ein Array von Elementen ist, müssen Sie SetPinterData ein zweites Mal aufrufen, um Informationen zur Größe eines Elements im Array bereitzustellen. Dazu muss beim Aufrufen von SetPinterData die von Ihnen bereitgestellte pValueName-Zeichenfolge "CustomDeviceCapabilitySize_Xxx" lauten, wobei Xxx die hexadezimale Darstellung der Funktion ist. Beispielsweise können Sie "CustomDeviceCapabilitySize_1234" haben. Die von Ihnen festgelegten Registrierungsdaten müssen vom REG_DWORD Typ sein, und Sie müssen dessen Wert auf die Größe in Bytes eines Elements im Array festlegen.

Hinweis

Der wingdi.h-Header definiert DeviceCapabilities als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wingdi.h (windows.h einschließen)
Bibliothek WinSpool.lib
DLL WinSpool.drv

Weitere Informationen

DEVMODE

DOCINFO

Documentproperties

GetDeviceCaps

GetProcAddress

LoadLibrary

PUNKT

Druckspooler-API-Funktionen

Drucken

StartDoc