Estrutura SURFOBJ (winddi.h)

A estrutura SURFOBJ é o objeto de usuário de uma superfície. Um driver de dispositivo geralmente chama métodos em um objeto de superfície somente quando o objeto surface representa um bitmap GDI ou uma superfície gerenciada pelo dispositivo.

Sintaxe

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;

Membros

dhsurf

Identificador para uma superfície, desde que a superfície seja gerenciada pelo dispositivo. Caso contrário, esse membro será zero.

hsurf

Identificador para a superfície.

private_dhpdev

private_hdev

dhpdev

Identifica o PDEV do dispositivo associado à superfície especificada.

hdev

O identificador lógico da GDI para o PDEV associado a este dispositivo.

sizlBitmap

Especifica uma estrutura SIZEL que contém a largura e a altura, em pixels, da superfície. A estrutura SIZEL é idêntica à estrutura SIZE .

cjBits

Especifica o tamanho do buffer apontado por pvBits.

pvBits

Se a superfície for um bitmap de formato padrão, esse será um ponteiro para os pixels da superfície. Para BMF_JPEG ou BMF_PNG imagens, esse é um ponteiro para um buffer que contém os dados da imagem em um formato JPEG ou PNG. Caso contrário, esse membro será NULL.

pvScan0

Ponteiro para a primeira linha de verificação do bitmap. Se iBitmapFormat for BMF_JPEG ou BMF_PNG, esse membro será NULL.

lDelta

Especifica a contagem de bytes necessários para mover uma linha de verificação para baixo no bitmap. Se iBitmapFormat for BMF_JPEG ou BMF_PNG, esse membro será NULL.

iUniq

Especifica o estado atual da superfície especificada. Sempre que a superfície é alterada, esse valor é incrementado. Isso permite que os drivers armazenem superfícies de origem em cache.

Para uma superfície que não deve ser armazenada em cache, iUniq é definido como zero. Esse valor é usado em conjunto com o sinalizador BMF_DONTCACHE de fjBitmap.

iBitmapFormat

Especifica o formato padrão mais próximo dessa superfície. Se o membro iType especificar um bitmap (STYPE_BITMAP), esse membro especificará seu formato. Os sistemas operacionais baseados em NT dão suporte a um conjunto de formatos predefinidos, embora os aplicativos também possam enviar formatos específicos do dispositivo usando SetDIBitsToDevice. Os formatos predefinidos com suporte incluem o seguinte:

Valor Significado
BMF_1BPP 1 bit por pixel.
BMF_4BPP 4 bits por pixel.
BMF_8BPP 8 bits por pixel.
BMF_16BPP 16 bits por pixel.
BMF_24BPP 24 bits por pixel.
BMF_32BPP 32 bits por pixel.
BMF_4RLE 4 bits por pixel, comprimento de execução codificado.
BMF_8RLE 8 bits por pixel, comprimento de execução codificado.
BMF_JPEG Imagem compactada JPEG.
BMF_PNG Imagem compactada PNG.

iType

Tipo surface, que é um dos seguintes:

Type Definição
STYPE_BITMAP A superfície é um bitmap.
STYPE_DEVBITMAP A superfície é um bitmap de formato de dispositivo.
STYPE_DEVICE A superfície é gerenciada pelo dispositivo.

fjBitmap

Se a superfície for do tipo STYPE_BITMAP e for um bitmap de formato descompactado padrão, os sinalizadores a seguir poderão ser definidos. Caso contrário, esse membro deverá ser ignorado.

Valor Significado
BMF_DONTCACHE O bitmap não deve ser armazenado em cache pelo driver porque é um bitmap transitório, criado pela GDI, que o driver nunca mais verá. Se esse sinalizador for definido, o membro iUniq dessa estrutura será definido como 0.
BMF_KMSECTION É usado apenas pela GDI e deve ser ignorado pelo driver.
BMF_NOTSYSMEM O bitmap não está na memória do sistema. EngModifySurface define esse sinalizador quando move um bitmap para a memória de vídeo.
BMF_NOZEROINIT O bitmap não foi inicializado por zero.
BMF_TOPDOWN A primeira linha de verificação representa a parte superior do bitmap.
BMF_WINDOW_BLT A GDI define esse sinalizador para notificar o driver de uma movimentação de janela de um local de tela para outro.

Comentários

Quando informações sobre uma superfície específica são exigidas por um driver, o driver deve acessar o SURFOBJ. Essa estrutura permite acesso rápido às propriedades da superfície.

Quando uma estrutura SURFOBJ representa um bitmap GDI, o driver deve ser capaz de determinar o formato do bitmap e localizar os bits de bitmap.

Quando uma estrutura SURFOBJ representa uma superfície de dispositivo, o driver deve ser capaz de localizar o identificador do dispositivo para a superfície.

Para obter mais informações sobre como dar suporte a imagens compactadas JPEG e PNG, consulte DEVINFO.

Requisitos

Requisito Valor
Cabeçalho winddi.h (inclua Winddi.h)