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) |