NtGdiDdCreateSurface function

[This function is subject to change with each operating system revision. Instead, use the Microsoft DirectDraw and Microsoft Direct3DAPIs; these APIs insulate applications from such operating system changes, and hide many other difficulties involved in interacting directly with display drivers.]

Attaches a surface to another surface.

Syntax

DWORD APIENTRY NtGdiDdCreateSurface(
  _In_    HANDLE               hDirectDraw,
  _In_    HANDLE               *hSurface,
  _Inout_ DDSURFACEDESC        *puSurfaceDescription,
  _Inout_ DD_SURFACE_GLOBAL    *puSurfaceGlobalData,
  _Inout_ DD_SURFACE_LOCAL     *puSurfaceLocalData,
  _Inout_ DD_SURFACE_MORE      *puSurfaceMoreData,
  _Inout_ DD_CREATESURFACEDATA *puCreateSurfaceData,
  _Out_   HANDLE               *puhSurface
);

Parameters

hDirectDraw [in]

Handle to the DD_DIRECTDRAW_GLOBAL structure representing the driver.

hSurface [in]

Previous handle to the same surface. Used if the surface is being re-created after a mode switch.

puSurfaceDescription [in, out]

Pointer to the DDSURFACEDESC structure describing the surface or buffer that the driver should create.

puSurfaceGlobalData [in, out]

Pointer to the DD_SURFACE_GLOBAL structure containing surface data that is shared globally with multiple surfaces.

puSurfaceLocalData [in, out]

Pointer to a list of DD_SURFACE_LOCAL structures describing the surface objects created by the driver.

puSurfaceMoreData [in, out]

Pointer to a DD_SURFACE_MORE structure that contains additional local surface data.

puCreateSurfaceData [in, out]

Pointer to a DD_CREATESURFACEDATA structure that contains the information required to create a surface.

puhSurface [out]

Is used by the DirectDraw  API and should not be filled in by the driver.

Return value

NtGdiDdCreateSurface returns one of the following callback codes.

Return code Description
DDHAL_DRIVER_HANDLED
The driver has performed the operation and returned a valid return code for that operation. If this code is DD_OK, DirectDraw or Direct3D proceeds with the function. Otherwise, DirectDraw or Direct3D returns the error code provided by the driver and aborts the function.
DDHAL_DRIVER_NOTHANDLED
The driver has no comment on the requested operation. If the driver is required to have implemented a particular callback, DirectDraw or Direct3D reports an error condition. Otherwise, DirectDraw or Direct3D handles the operation as if the driver callback had not been defined by executing the DirectDraw or Direct3D device-independent implementation.

 

Remarks

It is recommended that your application call IDirectDraw7::CreateSurface instead of using this function.

When creating a chain of attached surfaces, such as a swap chain or chain or mipmaps, NtGdiDdCreateSurfaceObject should be called for each surface first. Then call NtGdiDdAttachSurface to attach them. Finally, call NtGdiDdCreateSurface for the first surface in the chain only. In this case, hSurface would be the handle returned by NtGdiDdCreateSurfaceObject for the first surface in the chain.

NtGdiDdCreateSurface should only be called to create surfaces in local and non-local video memory. It should never be called to create system memory surfaces. To create system memory surfaces, use NtGdiDdCreateSurfaceObject instead.

Requirements

Requirement Value
Minimum supported client
Windows 2000 Professional [desktop apps only]
Minimum supported server
Windows 2000 Server [desktop apps only]
Header
Ntgdi.h

See also

Graphics Low Level Client Support