次の方法で共有


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::MemoryUsage メソッドの目的は、IPrintOemUni::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を返す必要があります。

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー prcomoem.h (Prcomoem.h を含む)

関連項目

DEVOBJ する

IPrintOemUni

IPrintOemUni::ImageProcessing

OEMMEMORYUSAGE