SURFOBJ-Struktur (winddi.h)

Die SURFOBJ-Struktur ist das Benutzerobjekt für eine Oberfläche. Ein Gerätetreiber ruft methoden für ein Surface-Objekt normalerweise nur auf, wenn das Surface-Objekt eine GDI-Bitmap oder eine geräteverwaltete Oberfläche darstellt.

Syntax

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;

Member

dhsurf

Handle für eine Oberfläche, vorausgesetzt, die Oberfläche ist geräteseitig verwaltet. Andernfalls ist dieser Member 0.

hsurf

Griff zur Oberfläche.

private_dhpdev

private_hdev

dhpdev

Gibt die PDEV des Geräts an, die der angegebenen Oberfläche zugeordnet ist.

hdev

Der logische Handle von GDI für den PDEV, der diesem Gerät zugeordnet ist.

sizlBitmap

Gibt eine SIZEL-Struktur an, die die Breite und Höhe der Oberfläche in Pixel enthält. Die SIZEL-Struktur ist mit der SIZE-Struktur identisch.

cjBits

Gibt die Größe des Puffers an, auf den von pvBits verwiesen wird.

pvBits

Wenn die Oberfläche eine Bitmap im Standardformat ist, ist dies ein Zeiger auf die Pixel der Oberfläche. Bei BMF_JPEG oder BMF_PNG Bildern ist dies ein Zeiger auf einen Puffer, der die Bilddaten in einem JPEG- oder PNG-Format enthält. Andernfalls ist dieser Member NULL.

pvScan0

Zeiger auf die erste Scanzeile der Bitmap. Wenn iBitmapFormat BMF_JPEG oder BMF_PNG ist, ist dieser Member NULL.

lDelta

Gibt die Anzahl der Bytes an, die erforderlich sind, um eine Scanzeile in der Bitmap nach unten zu verschieben. Wenn iBitmapFormat BMF_JPEG oder BMF_PNG ist, ist dieser Member NULL.

iUniq

Gibt den aktuellen Zustand der angegebenen Oberfläche an. Jedes Mal, wenn sich die Oberfläche ändert, wird dieser Wert erhöht. Dadurch können Treiber Quelloberflächen zwischenspeichern.

Für eine Oberfläche, die nicht zwischengespeichert werden soll, ist iUniq auf Null festgelegt. Dieser Wert wird in Verbindung mit dem BMF_DONTCACHE Flag von fjBitmap verwendet.

iBitmapFormat

Gibt das Standardformat an, das dieser Oberfläche am ehesten entspricht. Wenn das iType-Element eine Bitmap (STYPE_BITMAP) angibt, gibt dieses Element sein Format an. NT-basierte Betriebssysteme unterstützen eine Reihe vordefinierter Formate. Anwendungen können jedoch auch gerätespezifische Formate mithilfe von SetDIBitsToDevice senden. Folgende vordefinierte Formate werden unterstützt:

Wert Bedeutung
BMF_1BPP 1 Bit pro Pixel.
BMF_4BPP 4 Bits pro Pixel.
BMF_8BPP 8 Bits pro Pixel.
BMF_16BPP 16 Bits pro Pixel.
BMF_24BPP 24 Bits pro Pixel.
BMF_32BPP 32 Bits pro Pixel.
BMF_4RLE 4 Bits pro Pixel, Ausführungslänge codiert.
BMF_8RLE 8 Bits pro Pixel, Ausführungslänge codiert.
BMF_JPEG JPEG-komprimiertes Bild.
BMF_PNG PNG-komprimiertes Bild.

iType

Surface-Typ, der einer der folgenden ist:

Typ Definition
STYPE_BITMAP Die Oberfläche ist eine Bitmap.
STYPE_DEVBITMAP Die Oberfläche ist eine Bitmap im Geräteformat.
STYPE_DEVICE Die Oberfläche wird vom Gerät verwaltet.

fjBitmap

Wenn die Oberfläche vom Typ STYPE_BITMAP ist und eine Bitmap im nicht komprimierten Standardformat ist, können die folgenden Flags festgelegt werden. Andernfalls sollte dieser Member ignoriert werden.

Wert Bedeutung
BMF_DONTCACHE Die Bitmap sollte nicht vom Treiber zwischengespeichert werden, da es sich um eine vorübergehende Bitmap handelt, die von GDI erstellt wurde und die der Treiber nie wieder sehen wird. Wenn dieses Flag festgelegt ist, wird das iUniq-Element dieser Struktur auf 0 festgelegt.
BMF_KMSECTION Wird nur von GDI verwendet und sollte vom Treiber ignoriert werden.
BMF_NOTSYSMEM Die Bitmap befindet sich nicht im Systemspeicher. EngModifySurface legt dieses Flag fest, wenn eine Bitmap in den Videospeicher verschoben wird.
BMF_NOZEROINIT Die Bitmap wurde nicht mit null initialisiert.
BMF_TOPDOWN Die erste Scanzeile stellt den oberen Rand der Bitmap dar.
BMF_WINDOW_BLT GDI legt dieses Flag fest, um den Treiber darüber zu benachrichtigen, dass ein Fenster von einem Bildschirmstandort zu einem anderen verschoben wird.

Hinweise

Wenn ein Fahrer Informationen zu einer bestimmten Oberfläche benötigt, muss der Fahrer auf den SURFOBJ zugreifen. Diese Struktur ermöglicht einen schnellen Zugriff auf die Eigenschaften der Oberfläche.

Wenn eine SURFOBJ-Struktur eine GDI-Bitmap darstellt, muss der Treiber in der Lage sein, das Format der Bitmap zu bestimmen und die Bitmapbits zu suchen.

Wenn eine SURFOBJ-Struktur eine Geräteoberfläche darstellt, muss der Treiber in der Lage sein, den Gerätehandle für das Surface zu finden.

Weitere Informationen zur Unterstützung komprimierter JPEG- und PNG-Bilder finden Sie unter DEVINFO.

Anforderungen

Anforderung Wert
Header winddi.h (einschließlich Winddi.h)