Freigeben über


DeviceCapabilitiesW-Funktion (wingdi.h)

Die DeviceCapabilities Funktion ruft die Funktionen eines Druckertreibers ab.

Syntax

int DeviceCapabilitiesW(
  [in]  LPCWSTR        pDevice,
  [in]  LPCWSTR        pPort,
  [in]  WORD           fwCapability,
  [out] LPWSTR         pOutput,
  [in]  const DEVMODEW *pDevMode
);

Parameter

[in] pDevice

Ein Zeiger auf eine mit Null beendete 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 mit Null beendete Zeichenfolge, die den Namen des Ports enthält, mit dem das Gerät verbunden ist, z. B. LPT1.

[in] fwCapability

Die funktionen, die abgefragt werden sollen. Dieser Parameter kann einer der folgenden Werte sein:

Wert Bedeutung
DC_BINNAMES
Ruft die Namen der Papierkörbe 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 Namenzeichenfolgen werden null beendet, es sei denn, der Name ist 24 Zeichen lang. Wenn pOutput-NULL-ist, ist der Rückgabewert die Anzahl der erforderlichen Bin-Einträge.
DC_BINS
Ruft eine Liste der verfügbaren Papierkörbe 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 der dmDefaultSource- Member der DEVMODE--Struktur. Wenn pOutput-NULL-ist, gibt der Rückgabewert die erforderliche Anzahl von Einträgen im Array an.
DC_COLLATE
Wenn der Drucker die Sortierung unterstützt, lautet der Rückgabewert 1; andernfalls ist der Rückgabewert null. Der pOutput Parameter wird nicht verwendet.
DC_COLORDEVICE
Wenn der Drucker den Farbdruck unterstützt, lautet der Rückgabewert 1; andernfalls ist der Rückgabewert null. Der pOutput Parameter wird nicht verwendet.
DC_COPIES
Gibt die Anzahl der Exemplare 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, lautet der Rückgabewert 1; andernfalls ist der Rückgabewert null. 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 LONG Werte, die die x- und y-Abmessungen der Auflösung in Punkt pro Zoll angeben. Der Rückgabewert gibt die Anzahl der unterstützten Auflösungen an. Wenn pOutput-NULL-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- Mitglied der DEVMODE- Struktur des Druckertreibers zurück. Das dmFields Member gibt an, welche Elemente im geräteunabhängigen Teil der Struktur vom Druckertreiber unterstützt werden.
DC_FILEDEPENDENCIES
Ruft die Namen aller zusätzlichen Dateien ab, die geladen werden müssen, wenn ein Treiber installiert wird. 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 Namenzeichenfolgen werden null beendet, es sei denn, der Name ist 64 Zeichen lang. Wenn pOutput-NULL-ist, ist der Rückgabewert die Anzahl der Dateien.
DC_MAXEXTENT
Gibt das maximale Papierformat zurück, das die dmPaperLength- und dmPaperWidth- Mitglieder der DEVMODE- Struktur des Druckertreibers angeben kann. Der LOWORD des Rückgabewerts enthält den maximalen dmPaperWidth--Wert, und das HIWORD enthält den maximalen dmPaperLength- Wert.
DC_MEDIAREADY
Ruft die Namen der Papierformulare ab, die zurzeit 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 Namenzeichenfolgen werden null beendet, es sei denn, der Name ist 64 Zeichen lang. Wenn pOutput-NULL-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 werden null beendet, es sei denn, der Name ist 64 Zeichen lang. Wenn pOutput-NULL-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 pOutput-NULL-ist, gibt der Rückgabewert die erforderliche Anzahl von Einträgen im Array an.
DC_MINEXTENT
Gibt das mindeste Papierformat zurück, das die dmPaperLength und dmPaperWidth Member der DEVMODE- Struktur des Druckertreibers angeben kann. Der LOWORD des Rückgabewerts enthält den minimalen dmPaperWidth- Wert, und das HIWORD enthält den minimalen dmPaperLength- Wert.
DC_ORIENTATION
Gibt die Beziehung zwischen Hoch- und Querformat für ein Gerät im Hinblick auf die Anzahl der Grad zurück, mit denen die Hochformatausrichtung gegen den Uhrzeigersinn gedreht wird, um die Querformatausrichtung zu erzeugen. Der Rückgabewert kann eine der folgenden Sein:
0
Keine Querformatausrichtung.
90
Das Hochformat wird um 90 Grad gedreht, um das Querformat zu erzeugen.
270
Das Hochformat wird um 270 Grad gedreht, um das Querformat zu erzeugen.
DC_NUP
Ruft ein Array von ganzzahligen 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 pOutput-NULL-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 Namenzeichenfolgen werden null beendet, es sei denn, der Name ist 64 Zeichen lang. Wenn pOutput-NULL-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 der dmPaperSize Member der DEVMODE--Struktur. Wenn pOutput-NULL-ist, gibt der Rückgabewert die erforderliche Anzahl von Einträgen im Array an.
DC_PAPERSIZE
Ruft die Abmessungen in Zehntel eines Millimeters jedes unterstützten Papierformats ab. Der pOutput- Puffer empfängt ein Array POINT- Strukturen. Jede Struktur enthält die Breite (x-Dimension) und die Länge (y-Dimension) eines Papierformats, als ob sich das Papier in der DMORIENT_PORTRAIT Ausrichtung befand. 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 Namenzeichenfolgen werden null beendet, es sei denn, der Name ist 32 Zeichen lang. Wenn pOutput-NULL-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, die die Druckrateeinheiten für den für das DC_PRINTRATE Flag zurückgegebenen Wert angeben. 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 den dmSize Member der DEVMODE- struktur des Druckertreibers zurück.
DC_STAPLE
Wenn der Drucker die Heftung unterstützt, ist der Rückgabewert ein Wert ungleich Null; andernfalls ist der Rückgabewert null. Der pOutput Parameter wird nicht verwendet.
DC_TRUETYPE
Ruft die Fähigkeiten des Treibers ab, um TrueType-Schriftarten zu verwenden. Für DC_TRUETYPEsollte der parameter pOutputNULLsein. Der Rückgabewert kann eine oder mehrere der folgenden Werte sein:
DCTT_BITMAP
Das Gerät kann TrueType-Schriftarten als Grafiken drucken.
DCTT_DOWNLOAD
Das Gerät kann TrueType-Schriftarten herunterladen.
DCTT_SUBDEV
Das 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 jede oben aufgeführte Funktion an, um herauszufinden, was zurückgegeben wird, wenn pOutput-NULL-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 In der Struktur enthaltenen Werte ab, auf die pDevMode Punkte 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 weist im Allgemeinen darauf hin, dass während der erfolgreichen Ausführung der Funktion ein Fehlertyp aufgetreten ist, z. B. eine Funktion, die nicht unterstützt wird. Weitere Informationen finden Sie in den Beschreibungen für die werte fwCapability.

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

Bemerkungen

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, Druckserverkonfiguration und Druckertreiberimplementierung ab – Faktoren, die beim Schreiben einer Anwendung schwer vorhergesagt werden können. Das Aufrufen dieser Funktion über einen Thread, der die Interaktion mit der Benutzeroberfläche verwaltet, kann dazu führen, dass die Anwendung scheinbar nicht reagiert.
 
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, wodurch 32-Bit-Anwendungen auf die benutzerdefinierten Funktionen in 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 SetPrinterData-die pValueName- Zeichenfolge auf CustomDeviceCapabilityType_Xxxfest, wobei "Xxx" die hexadezimale Darstellung der Funktion ist. Beispielsweise könnten Sie "CustomDeviceCapabilityType_1234" haben. Die von Ihnen festgelegten Registrierungsdaten müssen vom typ REG_DWORD sein, und Sie müssen den Wert auf einen der folgenden Werte festlegen:

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

Anmerkung

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 Code, der nicht codierungsneutral ist, 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
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- wingdi.h (enthalten Windows.h)
Library WinSpool.lib
DLL- WinSpool.drv

Siehe auch

DEVMODE-

DOCINFO-

DocumentProperties-

GetDeviceCaps-

GetProcAddress-

LoadLibrary-

POINT-

Druckspooler-API-Funktionen

Drucken

StartDoc-