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