Struttura SURFOBJ (winddi.h)

La struttura SURFOBJ è l'oggetto utente per una superficie. Un driver di dispositivo chiama in genere metodi su un oggetto superficie solo quando l'oggetto superficie rappresenta una bitmap GDI o una superficie gestita dal dispositivo.

Sintassi

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;

Members

dhsurf

Gestire in una superficie, a condizione che la superficie sia gestita dal dispositivo. In caso contrario, questo membro è zero.

hsurf

Handle sulla superficie.

private_dhpdev

private_hdev

dhpdev

Identifica il PDEV del dispositivo associato alla superficie specificata.

hdev

Handle logico di GDI per il PDEV associato a questo dispositivo.

sizlBitmap

Specifica una struttura SIZEL che contiene la larghezza e l'altezza, in pixel, della superficie. La struttura SIZEL è identica alla struttura SIZE .

cjBits

Specifica le dimensioni del buffer a cui puntano i pvBit.

pvBits

Se la superficie è una bitmap di formato standard, si tratta di un puntatore ai pixel della superficie. Per BMF_JPEG o BMF_PNG immagini, si tratta di un puntatore a un buffer contenente i dati dell'immagine in formato JPEG o PNG. In caso contrario, questo membro è NULL.

pvScan0

Puntatore alla prima riga di analisi della bitmap. Se iBitmapFormat è BMF_JPEG o BMF_PNG, questo membro è NULL.

lDelta

Specifica il numero di byte necessari per spostare verso il basso una riga di analisi nella bitmap. Se iBitmapFormat è BMF_JPEG o BMF_PNG, questo membro è NULL.

iUniq

Specifica lo stato corrente della superficie specificata. Ogni volta che la superficie cambia, questo valore viene incrementato. Ciò consente ai driver di memorizzare nella cache le superfici di origine.

Per una superficie che non deve essere memorizzata nella cache, iUniq è impostato su zero. Questo valore viene usato insieme al flag BMF_DONTCACHE di fjBitmap.

iBitmapFormat

Specifica il formato standard più simile a questa superficie. Se il membro iType specifica una bitmap (STYPE_BITMAP), questo membro specifica il formato. I sistemi operativi basati su NT supportano un set di formati predefiniti, anche se le applicazioni possono inviare formati specifici del dispositivo usando SetDIBitsToDevice. I formati predefiniti supportati includono quanto segue:

Valore Significato
BMF_1BPP 1 bit per pixel.
BMF_4BPP 4 bit per pixel.
BMF_8BPP 8 bit per pixel.
BMF_16BPP 16 bit per pixel.
BMF_24BPP 24 bit per pixel.
BMF_32BPP 32 bit per pixel.
BMF_4RLE 4 bit per pixel, lunghezza di esecuzione codificata.
BMF_8RLE 8 bit per pixel, lunghezza di esecuzione codificata.
BMF_JPEG Immagine compressa JPEG.
BMF_PNG Immagine compressa PNG.

iType

Tipo di superficie, uno dei seguenti:

Tipo Definizione
STYPE_BITMAP La superficie è una bitmap.
STYPE_DEVBITMAP La superficie è una bitmap in formato dispositivo.
STYPE_DEVICE La superficie è gestita dal dispositivo.

fjBitmap

Se la superficie è di tipo STYPE_BITMAP ed è una bitmap in formato non compresso standard, è possibile impostare i flag seguenti. In caso contrario, questo membro deve essere ignorato.

Valore Significato
BMF_DONTCACHE La bitmap non deve essere memorizzata nella cache dal driver perché si tratta di una bitmap temporanea, creata da GDI, che il driver non visualizzerà mai più. Se questo flag è impostato, il membro iUniq di questa struttura verrà impostato su 0.
BMF_KMSECTION Viene usato solo da GDI e deve essere ignorato dal driver.
BMF_NOTSYSMEM La bitmap non è in memoria di sistema. EngModifySurface imposta questo flag quando sposta una bitmap nella memoria video.
BMF_NOZEROINIT La bitmap non è stata inizializzata da zero.
BMF_TOPDOWN La prima riga di analisi rappresenta la parte superiore della bitmap.
BMF_WINDOW_BLT GDI imposta questo flag per notificare al driver lo spostamento di una finestra da una posizione dello schermo a un'altra.

Commenti

Quando le informazioni su una particolare superficie sono richieste da un driver, il driver deve accedere a SURFOBJ. Questa struttura consente di accedere rapidamente alle proprietà della superficie.

Quando una struttura SURFOBJ rappresenta una bitmap GDI, il driver deve essere in grado di determinare il formato della bitmap e individuare i bit bitmap.

Quando una struttura SURFOBJ rappresenta una superficie del dispositivo, il driver deve essere in grado di individuare l'handle del dispositivo per la superficie.

Per altre informazioni sul supporto di immagini compresse JPEG e PNG, vedere DEVINFO.

Requisiti

Requisito Valore
Intestazione winddi.h (include Winddi.h)