SURFOBJ 結構 (winddi.h)
SURFOBJ 結構是表面的用戶物件。 只有在 Surface 物件代表 GDI 位圖或 裝置管理的表面時,設備驅動器通常會在 Surface 物件上呼叫方法。
語法
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
如果介面是裝置管理的,則介面的句柄。 否則,這個成員為零。
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
指定在點陣圖中向下移動一個掃描行所需的位元組計數。 如果 iBitmapFormat 是BMF_JPEG或BMF_PNG,則此成員為 NULL。
iUniq
指定指定介面的目前狀態。 每次表面變更時,此值都會遞增。 這可讓驅動程式快取來源表面。
對於不應該快取的介面, iUniq 會設定為零。 這個值會與 fjBitmap 的 BMF_DONTCACHE 旗標搭配使用。
iBitmapFormat
指定最符合此表面的標準格式。 如果 iType 成員指定位圖 (STYPE_BITMAP) ,這個成員會指定其格式。 NT 型作業系統支援一組預先定義的格式,雖然應用程式也可以使用 SetDIBitsToDevice 來傳送裝置特定格式。 支援的預先定義格式包括:
值 | 意義 |
---|---|
BMF_1BPP | 每個像素 1 位。 |
BMF_4BPP | 每個像素 4 位。 |
BMF_8BPP | 每個像素8位。 |
BMF_16BPP | 每個像素 16 位。 |
BMF_24BPP | 每個像素 24 位。 |
BMF_32BPP | 每個像素32位。 |
BMF_4RLE | 每個圖元 4 位,執行長度編碼。 |
BMF_8RLE | 每個圖元 8 位,執行長度編碼。 |
BMF_JPEG | JPEG 壓縮影像。 |
BMF_PNG | PNG 壓縮影像。 |
iType
Surface 類型,這是下列其中一項:
類型 | 定義 |
---|---|
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。
規格需求
需求 | 值 |
---|---|
標頭 | winddi.h (包含Winddi.h) |