次の方法で共有


IPrintOemUni::Compression メソッド (prcomoem.h)

メソッドは IPrintOemUni::Compression 、Unidrv でサポートされているプリンターと共に使用して、カスタマイズされたビットマップ圧縮メソッドを提供できます。

構文

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

パラメーター

pdevobj

呼び出し元が指定した DEVOBJ 構造体へのポインター。

pInBuf

入力スキャン行データへの呼び出し元指定ポインター。

pOutBuf

圧縮されたスキャン行データを受け取る出力バッファーへの呼び出し元指定ポインター。

dwInLen

入力データの呼び出し元が指定した長さ。

dwOutLen

出力バッファーの呼び出し元指定の長さ。

[out] piResult

メソッド指定の結果値を受け取ります。 操作が成功した場合、この値は圧縮されたバイト数である必要があります。 これは dwOutLen で受信した値より大きくすることはできません。 エラーが発生した場合、またはメソッドが圧縮できない場合、結果の値は -1 である必要があります。

戻り値

メソッドは、次のいずれかの値を返す必要があります。

リターン コード 説明
S_OK
操作が成功しました。
E_FAIL
操作が失敗しました
E_NOTIMPL
このメソッドは実装されていません。

注釈

メソッドは IPrintOemUni::Compression 、印刷スプーラーに送信される前にスキャンラインデータを圧縮するためにプラグインをレンダリングすることによって使用されます。 メソッドの目的は、Unidrv でサポートされていないプリンター固有の圧縮方法をサポートすることです。

メソッドが IPrintOemUni::Compression 定義されていて、プリンターの GPD ファイルに CmdEnableOEMComp コマンド エントリが含まれている場合、スキャンラインが印刷スプーラーに送信される準備が整うたびに、Unidrv は メソッドを呼び出します。 (CmdEnableOEMComp コマンドの詳細については、「 ラスター データ圧縮コマンド」を参照してください)。

pInBuf パラメーターと dwInLen パラメーター値は、圧縮するイメージ データのスキャン行を含むバッファーを表します。 pOutBuf パラメーターと dwOutLen パラメーター値は、メソッドが圧縮データをIPrintOemUni::Compression配置するバッファーを記述します。

Unidrv は、印刷スプーラーにスキャン行を送信する前に、有効になっているすべての圧縮方法を試して、最も小さいデータ ストリームを作成するものを決定します。 (各メソッドを使用してデータを圧縮することによって) 最適な圧縮アルゴリズムを決定した後、プリンターが最適な圧縮形式を受け入れることを可能にするプリンター コマンドをスプールし、圧縮されたデータをプリンターに送信します。

したがって、メソッドによって IPrintOemUni::Compression 返される圧縮データが実際に使用されているかどうかに関係なく、すべてのスキャン行に対して メソッドが呼び出されます。 メソッドが呼び出されると、 dwOutLen には、Unidrv がそれまで試行した最適な圧縮メソッドによって返される長さが含まれます。 (他のメソッドが試行されていない場合、 dwOutLen には圧縮されていない長さが含まれます)。 アルゴリズムで dwOutLen バイト以下の圧縮スキャン行を生成できない場合は、 piResult で指定された場所で -1 を返す必要があります。

Unidrv がすべての有効な圧縮メソッドを試行した後、によって IPrintOemUni::Compression 返される圧縮データの長さが最も小さい場合、Unidrv は、CmdEnableOEMComp コマンド エントリで指定されたコマンドの前に、印刷スプーラーにバッファーを送信します。

可能であれば、メソッドの圧縮アルゴリズムでは、受信した dwOutLen 値を使用して、完了前にアルゴリズムを停止できるかどうかを判断し、別の圧縮方法で既により良い結果が作成されている場合に時間を節約する必要があります。

メソッドは IPrintOemUni::Compression 省略可能です。 レンダリング プラグインがこのメソッドを実装する場合、プラグインの IPrintOemUni::GetImplementedMethod メソッドは、入力として "Compression" を受け取ったときにS_OKを返す必要があります。

要件

要件
対象プラットフォーム デスクトップ
Header prcomoem.h (Prcomoem.h を含む)