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: IUnknownPointer to a DirectDrawSurface object to wrap with a new DXSurface.
pFormatID [in]
Type: const GUIDOptional 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: DWORDDXSFCREATE 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: IUnknownOptional outer IUnknown interface pointer for aggregation.
riid [in]
Type: REFIIDInterface to return from the new surface.
ppDXSurface [out]
Type: voidAddress 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