SURFOBJ 構造体 (winddi.h)
SURFOBJ 構造体は、サーフェスのユーザー オブジェクトです。 通常、デバイス ドライバーは、サーフェス オブジェクトが GDI ビットマップまたは デバイス管理サーフェスを表す場合にのみ、サーフェス オブジェクトのメソッドを呼び出します。
構文
typedef struct _SURFOBJ {
DHSURF dhsurf;
HSURF hsurf;
DHPDEV private_dhpdev;
HDEV private_hdev;
DHPDEV dhpdev;
HDEV hdev;
SIZEL sizlBitmap;
ULONG cjBits;
PVOID pvBits;
PVOID pvScan0;
LONG lDelta;
ULONG iUniq;
ULONG iBitmapFormat;
USHORT iType;
USHORT fjBitmap;
} SURFOBJ;
メンバー
dhsurf
サーフェスがデバイスで管理されている場合は、サーフェスにハンドルします。 それ以外の場合、このメンバーは 0 です。
hsurf
サーフェスへのハンドル。
private_dhpdev
private_hdev
dhpdev
指定したサーフェスに関連付けられているデバイスの PDEV を識別します。
hdev
このデバイスに関連付けられている PDEV に対する GDI の論理ハンドル。
sizlBitmap
サーフェスの幅と高さをピクセル単位で格納する SIZEL 構造体を指定します。 SIZEL 構造体は SIZE 構造体と 同じです。
cjBits
pvBits によって指されるバッファーのサイズを指定します。
pvBits
サーフェスが標準形式のビットマップの場合、これはサーフェスのピクセルへのポインターです。 BMF_JPEGまたはBMF_PNGイメージの場合、これは JPEG または PNG 形式の画像データを含むバッファーへのポインターです。 それ以外の場合、このメンバーは NULL です。
pvScan0
ビットマップの最初のスキャン行へのポインター。 iBitmapFormat がBMF_JPEGまたはBMF_PNGの場合、このメンバーは NULL です。
lDelta
ビットマップ内のスキャン行を 1 つ下に移動するために必要なバイト数を指定します。 iBitmapFormat がBMF_JPEGまたはBMF_PNGの場合、このメンバーは NULL です。
iUniq
指定したサーフェスの現在の状態を指定します。 サーフェスが変更されるたびに、この値がインクリメントされます。 これにより、ドライバーはソース サーフェスをキャッシュできます。
キャッシュしないサーフェスの場合、 iUniq は 0 に設定されます。 この値は、 fjBitmap の BMF_DONTCACHE フラグと組み合わせて使用されます。
iBitmapFormat
このサーフェスに最も近い標準書式を指定します。 iType メンバーがビットマップ (STYPE_BITMAP) を指定する場合、このメンバーはその形式を指定します。 NT ベースのオペレーティング システムでは一連の定義済み形式がサポートされていますが、アプリケーションでは SetDIBitsToDevice を使用してデバイス固有の形式を送信することもできます。 サポートされている定義済みの形式は次のとおりです。
値 | 意味 |
---|---|
BMF_1BPP | 1 ピクセルあたり 1 ビット。 |
BMF_4BPP | ピクセルあたり 4 ビット。 |
BMF_8BPP | ピクセルあたり 8 ビット。 |
BMF_16BPP | 1 ピクセルあたり 16 ビット。 |
BMF_24BPP | 1 ピクセルあたり 24 ビット。 |
BMF_32BPP | 1 ピクセルあたり 32 ビット。 |
BMF_4RLE | ピクセルあたり 4 ビット、実行長でエンコードされます。 |
BMF_8RLE | ピクセルあたり 8 ビット、実行長がエンコードされています。 |
BMF_JPEG | JPEG 圧縮画像。 |
BMF_PNG | PNG 圧縮イメージ。 |
iType
サーフェスの種類。これは次のいずれかです。
Type | 定義 |
---|---|
STYPE_BITMAP | サーフェスはビットマップです。 |
STYPE_DEVBITMAP | サーフェスは、デバイス形式のビットマップです。 |
STYPE_DEVICE | サーフェスはデバイスによって管理されます。 |
fjBitmap
サーフェスが STYPE_BITMAP 型で、標準の非圧縮形式のビットマップである場合は、次のフラグを設定できます。 それ以外の場合、このメンバーは無視する必要があります。
値 | 意味 |
---|---|
BMF_DONTCACHE | ビットマップは、GDI によって作成された一時的なビットマップであり、ドライバーが再び表示されることはないため、ドライバーによってキャッシュされるべきではありません。 このフラグが設定されている場合、この構造体の iUniq メンバーは 0 に設定されます。 |
BMF_KMSECTION | GDI でのみ使用され、ドライバーでは無視する必要があります。 |
BMF_NOTSYSMEM | ビットマップがシステム メモリにありません。 EngModifySurface は 、ビットマップをビデオ メモリに移動するときにこのフラグを設定します。 |
BMF_NOZEROINIT | ビットマップがゼロ初期化されませんでした。 |
BMF_TOPDOWN | 最初のスキャン行は、ビットマップの 上部 を表します。 |
BMF_WINDOW_BLT | GDI は、ある画面の場所から別の場所にウィンドウが移動することをドライバーに通知するために、このフラグを設定します。 |
注釈
ドライバーによって特定のサーフェスに関する情報が必要な場合、ドライバーは SURFOBJ にアクセスする必要があります。 この構造により、サーフェスのプロパティにすばやくアクセスできます。
SURFOBJ 構造体が GDI ビットマップを表す場合、ドライバーはビットマップの形式を決定し、ビットマップ ビットを検索できる必要があります。
SURFOBJ 構造体がデバイス サーフェイスを表す場合、ドライバーはサーフェスのデバイス ハンドルを見つけることができるようにする必要があります。
JPEG および PNG 圧縮イメージのサポートの詳細については、「 DEVINFO」を参照してください。
要件
要件 | 値 |
---|---|
Header | winddi.h (Winddi.h を含む) |