Freigeben über


IPrintOemUni::Compression-Methode (prcomoem.h)

Die IPrintOemUni::Compression-Methode kann mit Unidrv-unterstützten Druckern verwendet werden, um eine angepasste Bitmapkomprimierungsmethode bereitzustellen.

Syntax

HRESULT Compression(
        PDEVOBJ pdevobj,
        PBYTE   pInBuf,
        PBYTE   pOutBuf,
        DWORD   dwInLen,
        DWORD   dwOutLen,
  [out] OUT INT *piResult
);

Parameter

pdevobj

Vom Aufrufer bereitgestellter Zeiger auf eine DEVOBJ- Struktur.

pInBuf

Vom Aufrufer bereitgestellter Zeiger zum Eingeben von Scanzeilendaten.

pOutBuf

Vom Aufrufer bereitgestellter Zeiger auf einen Ausgabepuffer, um komprimierte Scanzeilendaten zu empfangen.

dwInLen

Vom Aufrufer bereitgestellte Länge der Eingabedaten.

dwOutLen

Vom Aufrufer bereitgestellte Länge des Ausgabepuffers.

[out] piResult

Empfängt einen von der Methode bereitgestellten Ergebniswert. Wenn der Vorgang erfolgreich ist, sollte dieser Wert die Anzahl der komprimierten Bytes sein, die nicht größer als der für dwOutLenempfangene Wert sein darf. Wenn ein Fehler auftritt oder die Methode nicht komprimieren kann, sollte der Ergebniswert -1 sein.

Rückgabewert

Die Methode muss einen der folgenden Werte zurückgeben.

Rückgabecode Beschreibung
S_OK
Der Vorgang war erfolgreich.
E_FAIL
Fehler beim Vorgang.
E_NOTIMPL
Die Methode ist nicht implementiert.

Bemerkungen

Die IPrintOemUni::Compression-Methode wird verwendet, um Plug-Ins zum Komprimieren von Scanzeilendaten zu komprimieren, bevor sie an den Druckspooler gesendet wird. Der Zweck der Methode besteht darin, Unterstützung für druckerspezifische Komprimierungsmethoden bereitzustellen, die von Unidrv nicht unterstützt werden.

Wenn die IPrintOemUni::Compression-Methode definiert ist und die GPD-datei des Druckers einen CmdEnableOEMComp-Befehlseintrag enthält, ruft Unidrv die Methode jedes Mal auf, wenn eine Scanzeile an den Druckspooler gesendet werden kann. (Informationen zum Befehl "CmdEnableOEMComp" finden Sie unter Rasterdatenkomprimierungsbefehle.)

Die pInBuf und dwInLen Parameterwerte beschreiben einen Puffer, der eine Scanzeile von Bilddaten enthält, die komprimiert werden sollen. Die pOutBuf und dwOutLen Parameterwerte beschreiben den Puffer, in den die IPrintOemUni::Compression-Methode die komprimierten Daten platzieren soll.

Bevor Unidrv eine Scanzeile an den Druckspooler sendet, versucht sie jede aktivierte Komprimierungsmethode, um zu bestimmen, welcher datenstrom am kleinsten erstellt wird. Nachdem der beste Komprimierungsalgorithmus ermittelt wurde (durch Komprimieren der Daten mit den einzelnen Methoden), wird der Druckerbefehl gespoolt, der es dem Drucker ermöglicht, das beste komprimierte Format zu akzeptieren, und sendet dann die komprimierten Daten an den Drucker.

Daher wird die IPrintOemUni::Compression-Methode für jede Scanzeile aufgerufen, unabhängig davon, ob die von der Methode zurückgegebenen komprimierten Daten tatsächlich verwendet werden oder nicht. Wenn die Methode aufgerufen wird, enthält dwOutLen die länge, die von der besten Komprimierungsmethode Unidrv zurückgegeben wird. (Wenn keine anderen Methoden ausprobiert wurden, enthält dwOutLen- die nicht komprimierte Länge.) Wenn der Algorithmus keine komprimierte Scanzeile erzeugen kann, die gleich oder kürzer als dwOutLen- Bytes ist, sollte er -1 in der durch piResultangegebenen Position zurückgeben.

Wenn Unidrv nach dem Versuch aller aktivierten Komprimierungsmethoden die von IPrintOemUni::Compression zurückgegebenen komprimierten Daten die kleinste Länge aufweist, sendet Unidrv den Puffer an den Druckspooler, dem der befehl cmdEnableOEMComp-Befehlseintrag vorangestellt ist.

Wenn möglich, sollte der Komprimierungsalgorithmus der Methode den empfangenen dwOutLen--Wert verwenden, um festzustellen, ob der Algorithmus vor abschluss beendet werden kann, um Zeit zu sparen, wenn bereits eine andere Komprimierungsmethode ein besseres Ergebnis erzeugt hat.

Die IPrintOemUni::Compression-Methode ist optional. Wenn ein Rendering-Plug-In diese Methode implementiert, muss die IPrintOemUni::GetImplementedMethod- Methode S_OK zurückgeben, wenn es "Compression" als Eingabe empfängt.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- prcomoem.h (einschließlich Prcomoem.h)