CreateFromDDSurface method

Creates a DXSurface that contains a specified DirectDrawSurface object.

Syntax


HRESULT retVal = object.CreateFromDDSurface(pDDrawSurface, pFormatID, dwFlags, punkOuter, riid, ppDXSurface);

Parameters

pDDrawSurface [in]

Type: IUnknown

Pointer to a DirectDrawSurface object to wrap with a new DXSurface.

pFormatID [in]

Type: const GUID

Optional pointer to the source pixel format. If NULL, the pixel format of the DirectDrawSurface object is used. If non-NULL, the pixel format of the DirectDrawSurface object is ignored, and the data is treated as though it were the format specified by this GUID. This is usually used to force a DirectDrawSurface object that has no alpha channel to be treated as a 32-bit surface with alpha.

dwFlags [in]

Type: DWORD

DXSFCREATE creation flags. A value of DXSF_FORMAT_IS_CLSID specifies that the pFormatID parameter is the CLSID of a custom surface implementation.

punkOuter [in]

Type: IUnknown

Optional outer IUnknown interface pointer for aggregation.

riid [in]

Type: REFIID

Interface to return from the new surface.

ppDXSurface [out]

Type: void

Address of a pointer to the new interface.

Remarks

The default behavior for a system memory DXSurface is to do all lock arbitration at the DXSurface level for performance and correct lock behavior. The DirectDrawSurface object is locked once to obtain a memory pointer and then released. If the user plans to access the underlying IDirectDrawSurface::Lock method directly (not via the DXSurface interface), DXSF_NO_LAZY_DDRAW_LOCK must be used. In this case, a lock to the DXSurface always locks the underlying DirectDrawSurface object, assuring safe access. This is the default for video-memory-based surfaces.

The resulting DXSurface uses the source color key of the underlying DirectDrawSurface object.

See also

Reference
IDXSurfaceFactory::CreateSurface
DXSFCREATE

 

 

Show: