## DDSURFACEDESC

The DDSURFACEDESC structure contains a description of the surface to be created. This structure is passed to the IDirectDraw2::CreateSurface method. The relevant members differ for each potential type of surface.

typedef struct _DDSURFACEDESC {

DWORD dwSize;

DWORD dwFlags;

DWORD dwHeight;

DWORD dwWidth;

union

{

LONG lPitch;

DWORD dwLinearSize;

};

DWORD dwBackBufferCount;

union

{

DWORD dwMipMapCount;

DWORD dwZBufferBitDepth;

DWORD dwRefreshRate;

};

DWORD dwAlphaBitDepth;

DWORD dwReserved;

LPVOID lpSurface;

DDCOLORKEY ddckCKDestOverlay;

DDCOLORKEY ddckCKDestBlt;

DDCOLORKEY ddckCKSrcOverlay;

DDCOLORKEY ddckCKSrcBlt;

DDPIXELFORMAT ddpfPixelFormat;

DDSCAPS ddsCaps;

} DDSURFACEDESC;

##### Members

dwSize
  Size of the structure, in bytes. This member must be initialized before the structure is used.
dwFlags
  Optional control flags. One or more of the following flags:

  DDSD_ALL
  | Indicates that all input members are valid.
  DDSD_ALPHABITDEPTH
  | Indicates that the dwAlphaBitDepth member is valid.
  DDSD_BACKBUFFERCOUNT
  | Indicates that the dwBackBufferCount member is valid.
  DDSD_CAPS
  | Indicates that the ddsCaps member is valid.
  DDSD_CKDESTBLT
  | Indicates that the ddckCKDestBlt member is valid.
  DDSD_CKDESTOVERLAY
  | Indicates that the ddckCKDestOverlay member is valid.
  DDSD_CKSRCBLT
  | Indicates that the ddckCKSrcBlt member is valid.
  DDSD_CKSRCOVERLAY
  | Indicates that the ddckCKSrcOverlay member is valid.
  DDSD_HEIGHT
  | Indicates that the dwHeight member is valid.
  DDSD_LINEARSIZE
  | Not used.
  DDSD_LPSURFACE
  | Indicates that the lpSurface member is valid.
  DDSD_MIPMAPCOUNT
  | Indicates that the dwMipMapCount member is valid.
  DDSD_PITCH
  | Indicates that the lPitch member is valid.
  DDSD_PIXELFORMAT
  | Indicates that the ddpfPixelFormat member is valid.
  DDSD_REFRESHRATE
  | Indicates that the dwRefreshRate member is valid.
  DDSD_WIDTH
  | Indicates that the dwWidth member is valid.
  DDSD_ZBUFFERBITDEPTH
  | Indicates that the dwZBufferBitDepth member is valid.

dwHeight and dwWidth
  Dimensions of the surface to be created, in pixels.
lPitch
  Distance, in bytes, to the start of next line. When used with the IDirectDrawSurface3::GetSurfaceDesc method, this is a return value. When used with the IDirectDrawSurface3::SetSurfaceDesc method, this is an input value that must be a DWORD multiple.
dwLinearSize
  Not currently used.
dwBackBufferCount
  Number of back buffers.
dwMipMapCount
  Number of mipmap levels.
dwZBufferBitDepth
  Depth of z-buffer. 32-bit z-buffers are not supported.
dwRefreshRate
  Refresh rate (used when the display mode is described). The value of 0 indicates an adapter fault.
dwAlphaBitDepth
  Depth of alpha buffer.
dwReserved
  Reserved.
lpSurface
  Address of the associated surface memory. When calling IDirectDrawSurface3::Lock, this member is a valid pointer to surface memory. When calling IDirectDrawSurface3::SetSurfaceDesc, this member is a pointer to system memory that the caller explicitly allocates for the DirectDrawSurface object.
ddckCKDestOverlay
  DDCOLORKEY structure that describes the destination color key to be used for an overlay surface.
ddckCKDestBlt
  DDCOLORKEY structure that describes the destination color key for blit operations.
ddckCKSrcOverlay
  DDCOLORKEY structure that describes the source color key to be used for an overlay surface.
ddckCKSrcBlt
  DDCOLORKEY structure that describes the source color key for blit operations.
ddpfPixelFormat
  DDPIXELFORMAT structure that describes the surface’s pixel format.
ddsCaps
  DDSCAPS structure containing the surface's capabilities.