NtGdiDdCreateSurface 函数

[此函数可能会随每个操作系统修订版而更改。 请改用 Microsoft DirectDraw 和 Microsoft Direct3DAPI;这些 API 将应用程序与此类操作系统更改隔离开来,并隐藏与显示驱动程序直接交互时涉及的许多其他困难。]

将一个图面连接到另一个图面。

语法

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
);

参数

hDirectDraw [in]

表示驱动程序的 DD_DIRECTDRAW_GLOBAL 结构的句柄。

hSurface [in]

同一图面的上一个句柄。 在模式切换后重新创建图面时使用。

puSurfaceDescription [in, out]

指向描述驱动程序应创建的图面或缓冲区的 DDSURFACEDESC 结构的指针。

puSurfaceGlobalData [in, out]

指向 DD_SURFACE_GLOBAL 结构的指针,该结构包含与多个图面全局共享的图面数据。

puSurfaceLocalData [in, out]

指向描述驱动程序创建的图面对象的 DD_SURFACE_LOCAL 结构列表的指针。

puSurfaceMoreData [in, out]

指向包含其他本地图面数据的 DD_SURFACE_MORE 结构的指针。

puCreateSurfaceData [in, out]

指向 DD_CREATESURFACEDATA 结构的指针,该结构包含创建图面所需的信息。

puhSurface [out]

由 DirectDraw API 使用,不应由驱动程序填充。

返回值

NtGdiDdCreateSurface 返回以下回调代码之一。

返回代码 描述
DDHAL_DRIVER_HANDLED
驱动程序已执行该操作并返回该操作的有效返回代码。 如果此代码DD_OK,则 DirectDraw 或 Direct3D 将继续执行 函数。 否则,DirectDraw 或 Direct3D 将返回驱动程序提供的错误代码并中止该函数。
DDHAL_DRIVER_NOTHANDLED
驱动程序对请求的操作没有注释。 如果驱动程序需要实现特定的回调,DirectDraw 或 Direct3D 将报告错误条件。 否则,DirectDraw 或 Direct3D 会像未通过执行与 DirectDraw 或 Direct3D 设备无关的实现来定义驱动程序回调一样处理操作。

 

注解

建议应用程序调用 IDirectDraw7::CreateSurface ,而不是使用此函数。

创建附加图面链(如交换链、链或 mipmap)时,应首先为每个图 面调用 NtGdiDdCreateSurfaceObject 。 然后调用 NtGdiDdAttachSurface 来附加它们。 最后,仅为链中的第一个图 面调用 NtGdiDdCreateSurface 。 在这种情况下, hSurface 将是 NtGdiDdCreateSurfaceObject 为链中的第一个图面返回的句柄。

应仅调用 NtGdiDdCreateSurface 以在本地和非本地视频内存中创建图面。 绝不应调用它来创建系统内存图面。 若要创建系统内存图面,请改用 NtGdiDdCreateSurfaceObject

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Ntgdi.h

另请参阅

图形低级别客户端支持