NtGdiDdUnattachSurface 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.]

Removes an attachment, created with NtGdiDdAttachSurface, between two kernel-mode surface objects.


VOID APIENTRY NtGdiDdUnattachSurface(
  _In_ HANDLE hSurface,
  _In_ HANDLE hSurfaceAttached


hSurface [in]

The kernel-mode surface object that was passed as the hSurfaceFrom parameter to NtGdiDdAttachSurface.

hSurfaceAttached [in]

The kernel-mode surface object that was passed as the hSurfaceTo parameter to NtGdiDdAttachSurface

Return value

NtGdiDdUnattachSurface returns one of the following callback codes.

Return codeDescription

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.


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.



It is recommended that applications use the DirectDraw  API, which handles surface attachments in a higher-level manner.

It is not necessary to call this function because the kernel will automatically destroy all attachments when NtGdiDdDestroySurface is called.


Minimum supported client

Windows 2000 Professional [desktop apps only]

Minimum supported server

Windows 2000 Server [desktop apps only]



See also

Graphics Low Level Client Support