Creates a DXSurface that contains a specified DirectDrawSurface object.
HRESULT retVal = object.CreateFromDDSurface(pDDrawSurface, pFormatID, dwFlags, punkOuter, riid, ppDXSurface);
Pointer to a DirectDrawSurface object to wrap with a new DXSurface.
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.
DXSFCREATE creation flags. A value of DXSF_FORMAT_IS_CLSID specifies that the pFormatID parameter is the CLSID of a custom surface implementation.
Optional outer IUnknown interface pointer for aggregation.
Interface to return from the new surface.
Address of a pointer to the new interface.
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.