Partager via


Structure SURFOBJ (winddi.h)

La structure SURFOBJ est l’objet utilisateur d’une surface. Un pilote de périphérique appelle généralement des méthodes sur un objet surface uniquement lorsque l’objet surface représente une bitmap GDI ou une surface gérée par l’appareil.

Syntaxe

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;

Membres

dhsurf

Gérez sur une surface, à condition que la surface soit gérée par l’appareil. Sinon, ce membre est égal à zéro.

hsurf

Handle jusqu’à la surface.

private_dhpdev

private_hdev

dhpdev

Identifie le PDEV de l’appareil associé à la surface spécifiée.

hdev

Handle logique de GDI pour le PDEV associé à cet appareil.

sizlBitmap

Spécifie une structure SIZEL qui contient la largeur et la hauteur, en pixels, de la surface. La structure SIZEL est identique à la structure SIZE .

cjBits

Spécifie la taille de la mémoire tampon pointée vers les pvBits.

pvBits

Si la surface est une bitmap de format standard, il s’agit d’un pointeur vers les pixels de la surface. Pour BMF_JPEG ou BMF_PNG images, il s’agit d’un pointeur vers une mémoire tampon contenant les données d’image au format JPEG ou PNG. Sinon, ce membre est NULL.

pvScan0

Pointeur vers la première ligne d’analyse de la bitmap. Si iBitmapFormat est BMF_JPEG ou BMF_PNG, ce membre a la valeur NULL.

lDelta

Spécifie le nombre d’octets requis pour descendre d’une ligne de balayage dans la bitmap. Si iBitmapFormat est BMF_JPEG ou BMF_PNG, ce membre a la valeur NULL.

iUniq

Spécifie l’état actuel de la surface spécifiée. Chaque fois que la surface change, cette valeur est incrémentée. Cela permet aux pilotes de mettre en cache les surfaces sources.

Pour une surface qui ne doit pas être mise en cache, iUniq est défini sur zéro. Cette valeur est utilisée conjointement avec l’indicateur BMF_DONTCACHE de fjBitmap.

iBitmapFormat

Spécifie le format standard correspondant le plus à cette surface. Si le membre iType spécifie une bitmap (STYPE_BITMAP), ce membre spécifie son format. Les systèmes d’exploitation NT prennent en charge un ensemble de formats prédéfinis, bien que les applications puissent également envoyer des formats spécifiques à l’appareil à l’aide de SetDIBitsToDevice. Les formats prédéfinis pris en charge sont les suivants :

Valeur Signification
BMF_1BPP 1 bit par pixel.
BMF_4BPP 4 bits par pixel.
BMF_8BPP 8 bits par pixel.
BMF_16BPP 16 bits par pixel.
BMF_24BPP 24 bits par pixel.
BMF_32BPP 32 bits par pixel.
BMF_4RLE 4 bits par pixel, longueur d’exécution encodée.
BMF_8RLE 8 bits par pixel, longueur d’exécution encodée.
BMF_JPEG Image compressée JPEG.
BMF_PNG Image compressée PNG.

iType

Type de Surface, qui est l’un des suivants :

Type Définition
STYPE_BITMAP La surface est une bitmap.
STYPE_DEVBITMAP La surface est une bitmap au format d’appareil.
STYPE_DEVICE La surface est gérée par l’appareil.

fjBitmap

Si la surface est de type STYPE_BITMAP et est une bitmap de format non compressé standard, les indicateurs suivants peuvent être définis. Sinon, ce membre doit être ignoré.

Valeur Signification
BMF_DONTCACHE La bitmap ne doit pas être mise en cache par le pilote, car il s’agit d’une bitmap temporaire, créée par GDI, que le pilote ne verra plus jamais. Si cet indicateur est défini, le membre iUniq de cette structure est défini sur 0.
BMF_KMSECTION Est utilisé par GDI uniquement et doit être ignoré par le pilote.
BMF_NOTSYSMEM La bitmap n’est pas en mémoire système. EngModifySurface définit cet indicateur lorsqu’il déplace une bitmap dans la mémoire vidéo.
BMF_NOZEROINIT La bitmap n’a pas été initialisée à zéro.
BMF_TOPDOWN La première ligne d’analyse représente le haut de la bitmap.
BMF_WINDOW_BLT GDI définit cet indicateur pour informer le pilote d’un déplacement de fenêtre d’un emplacement d’écran à un autre.

Remarques

Lorsque des informations sur une surface particulière sont requises par un pilote, le pilote doit accéder au SURFOBJ. Cette structure permet un accès rapide aux propriétés de la surface.

Lorsqu’une structure SURFOBJ représente une bitmap GDI, le pilote doit être en mesure de déterminer le format de la bitmap et de localiser les bits bitmap.

Lorsqu’une structure SURFOBJ représente une surface de périphérique, le pilote doit être en mesure de localiser la poignée de périphérique pour la surface.

Pour plus d’informations sur la prise en charge des images compressées JPEG et PNG, consultez DEVINFO.

Configuration requise

Condition requise Valeur
En-tête winddi.h (inclure Winddi.h)