MxdcGetPDEVAdjustment-Funktion (mxdc.h)

Die MxdcGetPDEVAdjustment-Funktion wird von einer Druckerschnittstellen-DLL exportiert und stellt Druckerkonfigurationsdaten für den Microsoft XPS Document Converter (MXDC) bereit.

Syntax

HRESULT MxdcGetPDEVAdjustment(
  [in]           HANDLE                    hPrinter,
  [in]           ULONG                     cbDevMode,
  [in]           const DEVMODE             *pDevMode,
  [in]           ULONG                     cbIn,
  [in, optional] const VOID                *pvIn,
  [in]           ULONG                     cbPrintPropertiesCollection,
                 PrintPropertiesCollection *pPrintPropertiesCollection
);

Parameter

[in] hPrinter

Das Handle des derzeit instanziierten Druckers.

[in] cbDevMode

Die Größe der DEVMODE-Struktur in Bytes, einschließlich der privaten DEVMODE-Daten des Treibers.

[in] pDevMode

Eine Kopie der DEVMODE-Struktur, die das MXDC empfangen hat. Die Druckerschnittstellen-DLL verwendet Informationen aus dieser Struktur, um die angeforderten Daten zurückzugeben.

[in] cbIn

Ein Eingabeparameter, der die Größe des pvIn-Parameters in Bytes angibt. Dieser Parameter wird derzeit nicht verwendet, und sein Wert ist null.

[in, optional] pvIn

Ein Parameter, der aus Daten besteht, die vom MXDC an die DLL der Druckerschnittstelle gesendet werden. Dieser Parameter wird derzeit nicht verwendet, und sein Wert ist NULL.

[in] cbPrintPropertiesCollection

Die Größe der PrintPropertiesCollection-Datenstruktur in Bytes.

pPrintPropertiesCollection

Die PrintPropertiesCollection-Datenstruktur , aus der die DLL der Druckerschnittstelle die angeforderten Daten abruft. Diese Struktur ist in WinSpool.h definiert. Die angeforderten Felder sind möglicherweise bereits mit den Standarddaten des MXDC ausgefüllt. Die DLL der Druckerschnittstelle muss die Felder ignorieren, die sie nicht versteht.

Rückgabewert

MxdcGetPDEVAdjustment sollte einen der folgenden Werte zurückgeben:

Rückgabecode Beschreibung
S_OK Die DLL der Druckerschnittstelle hat basierend auf der angegebenen DEVMODE-Struktur erfolgreich einen angepassten bildbaren Bereich, komprimierungstyp oder DPI zurückgegeben. Das MXDC überprüft den zurückgegebenen bildbaren Bereich und verwendet ihn dann, um die GDIINFO-Struktur in die entsprechenden Felder aufzufüllen.
E_NOTIMPL Die MxdcGetPDEVAdjustment-Funktion wird nicht von der Druckerschnittstelle implementiert. Die Druckerschnittstelle darf die Felder, die nicht unterstützt werden, nicht ändern. Das MXDC verwendet standardmäßig die aktuellen Standardwerte. Für den Bildbereichsfall verwendet MXDC standardmäßig die physische Seitengröße. Für die Komprimierungsoption verwendet MXDC standardmäßig eine mittlere JPEG-Komprimierung.
E_FAIL Für diesen Wert oder andere Fehlerwerte gibt der MXDC -1 an die DrvEnablePDEV-Funktion zurück, fängt die interne Ausnahme ab und legt ein Flag fest, um den Druckauftrag zu fehlschlagen und zu beenden.

Hinweise

Die MxdcGetPDEVAdjustment-Funktion wird vom Hardwarehersteller implementiert. Das MXDC ruft diese Funktion auf, um Druckerkonfigurationsdaten in Form eines Eigenschaftenbehälters abzurufen, der die folgenden Daten enthält:

MXDC ermöglicht es der Druckerschnittstellen-DLL, dpi über die MxdcGetPDEVAdjustment-Funktion nur dann anzupassen, wenn das Feld dmPrintQuality des Druckauftrags einen Wert aufweist, der kleiner oder gleich 0 ist. Wenn der DPI-Wert nicht angepasst wird, ordnet MXDC negative dmPrintQuality-Werte den folgenden Auflösungen zu.

GDI-Name (Wingdi.h) GDI-Wert(Wingdi.h) MXDC-Standardinterpretation (Punkte pro Zoll)
DMRES_HIGH –4 2400
DMRES_MEDIUM -3 1200
DMRES_LOW -2 600
DMRES_DRAFT -1 400

Der Name der MXDC-Eigenschaft, die den MXDC-Standardwert dpi-Wert speichert, lautet L"MxdcDotsPerInch".

In der folgenden Tabelle sind die Eigenschaftentypen und Eigenschaftenbehälterfelder des MXDC für die Eigenschaften aufgeführt:

Property (propertyName) Eigenschaftstyp (ePropertyValue) Eigenschaftenbehälterfelder
L"MxdcImageableArea" kPropertyTypeBuffer PrintPropertiesCollection::p ropertiesCollection[i].propertyValue.value.propertyBlob.cbBuf = sizeof(RECT) PrintPropertiesCollection::p ropertiesCollection[i].propertyValue.value.propertyBlob.pBuf
L"MxdcImageCompressionType" kPropertyTypeInt32 PrintPropertiesCollection::p ropertiesCollection[i].propertyValue.value.propertyInt32
L"MxdcDotsPerInch" kPropertyTypeInt32 PrintPropertiesCollection::p ropertiesCollection[i].propertyValue.value.propertyInt32
L"MxdcLandscapeRotation" kPropertyTypeInt32 PrintPropertiesCollection::p ropertiesCollection[i].propertyValue.value.propertyInt32

In der folgenden Tabelle sind die vom MXDC unterstützten Datentypen und Datenwerte für die Eigenschaften aufgeführt:

Property (propertyName) Datentypen und Werte
L"MxdcImageableArea" Datentyp: RECT

Werte:

RECT::left (identisch mit FORM_INFO_1)

RECT::right (identisch mit FORM_INFO_1)

RECT::top (identisch mit FORM_INFO_1)

RECT::bottom (identisch mit FORM_INFO_1)
L"MxdcImageCompressionType" Datentyp: LONG

Werte:

1 = JPEG High Compression

2 = MITTLERE JPEG-Komprimierung

3 = JPEG Low Compression

4 = PNG-Komprimierung
L"MxdcDotsPerInch" Datentyp: LONG

Werte:

Ein positiver Wert für Dots Per Inch
L"MxdcLandscapeRotation" Datentyp: LONG

Werte:

90 = MXDC_LANDSCAPE_ROTATE_COUNTERCLOCKWISE_90_DEGREES

0 = MXDC_LANDSCAPE_ROTATE_NONE

-90 = MXDC_LANDSCAPE_ROTATE_COUNTERCLOCKWISE_270_DEGREES

Die MxdcGetPDEVAdjustment-Funktion ist kein Teil des MXDC. Das MXDC ruft diese Funktion in der Konfigurations-DLL des Treibers zurück, um Daten zum Konfigurieren des Druckers abzurufen.

Das MXDC erwartet, dass der bildbare Bereich in nichtrotierten Koordinaten (Hochformat) ausgedrückt wird. Der MXDC dreht sowohl die Seitengröße als auch den bildbaren Bereich entsprechend dem Wert des dmOrientation-Elements der DEVMODE-Struktur, auf die pDevMode verweist. Daher sollte die Implementierung von MxdcGetPDEVAdjustment durch den Hardwarehersteller vermeiden, den bildbaren Bereich in gedrehten Koordinaten (Querformat) anzugeben, da dies dazu führt, dass Querformatdruckaufträge falsch gedruckt werden.

Der Standardwert im MXDC ist MXDC_LANDSCAPE_ROTATE_COUNTERCLOCKWISE_270_DEGREES, was dem aktuellen Legacyverhalten entspricht.

Die gesamte Drehung erfolgt auf dem bildbaren Bereich. Wenn eine Konfigurationskomponente (UniDrv/PostScript, XPSDrv Monolithic) die neuen Eigenschaftenbehälterwerte nicht versteht, sollte sie sie ignorieren, wie es im aktuellen Entwurf der Fall ist.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile mxdc.h (mxdc.h einschließen)

Weitere Informationen

DrvEnablePDEV

GDIINFO

IPrintOemUIMXDC-Schnittstelle