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

メソッドは IPrintOemUni::MemoryUsage 、Unidrv でサポートされているプリンターと共に使用して、レンダリング プラグインの IPrintOemUni::ImageProcessing メソッドで使用するために必要なメモリ量を指定できます。

構文

HRESULT MemoryUsage(
  PDEVOBJ         pdevobj,
  POEMMEMORYUSAGE pMemoryUsage
);

パラメーター

pdevobj

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

pMemoryUsage

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

戻り値

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

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

注釈

メソッドの目的は IPrintOemUni::MemoryUsageIPrintOemUni::ImageProcessing メソッドのメモリ要件に基づいて、Unidrv ドライバーが GDI 描画サーフェイスの最適なサイズを決定するのに役立ちます。 メソッドの IPrintOemUni::MemoryUsage 実装は省略可能です。

メソッドは IPrintOemUni::MemoryUsage 、次の 2 つの値を返す必要があります。

  • IPrintOemUni::ImageProcessing メソッドが割り当てる必要がある、永続的に割り当てられた固定サイズのメモリの量。

    この値は、OEMMEMORYUSAGE 構造体の dwFixedMemoryUsage メンバーで返されます。

  • IPrintOemUni::ImageProcessing メソッドの処理が完了した後に、ビットマップを保持するために必要なメモリ量。

    レンダリング プラグインは、この処理されたビットマップを Unidrv に返すか、スプールします。 処理されたビットマップを格納するために必要なメモリ量は、 OEMMEMORYUSAGE 構造体の dwPercentMemoryUsage メンバーで返され、ソース ビットマップのサイズに対する割合で表されます。

dwPercentMemoryUsage メンバーで返される値には、処理されたビットマップのサイズに加えて、ソース ビットマップのサイズに依存する追加のメモリ割り当ての量を含める必要があります。

OEMMEMORYUSAGE 構造体の dwMaxBandSize メンバーは Unidrv によって提供され、既定の最大バンド サイズを指定します。

Unidrv ドライバーは、描画サーフェイスを作成する前に、使用可能なシステム メモリに基づいて、イメージ バンディング ビットマップの最適なサイズを決定する GDI を要求します。 この最適なメモリ領域は、バンド ビットマップごとに、 IPrintOemUni::ImageProcessing メソッドに渡されるソース ビットマップと、メソッドが返すか出力する (通常は小さい) 処理されたビットマップの間で共有する必要があります。 Unidrv は、レンダリング プラグインの IPrintOemUni::MemoryUsage メソッド (存在する場合) を呼び出し、その結果を使用して最適なメモリ領域を分割する最適な方法を計算します。

たとえば、描画に使用する最適なメモリ量が 6 メガバイト (OEMMEMORYUSAGE 構造体の dwMaxBandSize メンバーに含まれる) であると GDI が報告し、レンダリング プラグインのIPrintOemUni::MemoryUsageメソッドは dwFixedMemoryUsage の場合は 0、dwPercentMemoryUsage の場合は 50 の値を返します。 値 50 は、 IPrintOemUni::ImageProcessing メソッドの出力ビットマップがソース ビットマップよりも 50% 小さいことを意味します。 したがって、Unidrv ではソース ビットマップ サイズが 4 メガバイトに割り当てられるため、出力ビットマップは 2 メガバイトになります。

メソッドが IPrintOemUni::MemoryUsage 指定されていない場合、Unidrv は、すべての最適な使用可能な領域をソース ビットマップに割り当てます。 これは、 IPrintOemUni::ImageProcessing メソッドがソース ビットマップに割り当てられたメモリ領域で処理されたビットマップを返す場合に許容されます。 ただし、レンダリング プラグインの IPrintOemUni::ImageProcessing メソッドがコピー先ビットマップの領域を割り当てるが、メソッドを IPrintOemUni::MemoryUsage 提供しない場合は、最適な使用可能なサイズよりも多くのメモリがビットマップに割り当てられ、パフォーマンスが低下する可能性があります。

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

要件

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

こちらもご覧ください

DEVOBJ

IPrintOemUni

IPrintOemUni::ImageProcessing

OEMMEMORYUSAGE