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 |
---|---|
|
Der Vorgang war erfolgreich. |
|
Fehler beim Vorgang. |
|
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) |