Direct3D 图面句柄

Microsoft DirectX 7.0 设备驱动程序接口 (DDI) 旨在提升一个模型,使 Direct3D 运行时组件在将命令处理到驱动程序之前尽可能少地分析命令流。 此外,应设置命令流的格式,以便将来的硬件可以使用它。

针对这些目标的一个重要更改是,将所有与图面相关的数据从 Direct3D/DirectDraw 运行时拥有的中间结构移动至驱动程序拥有、更新和格式化的结构。

图面由命令流中嵌入的句柄引用。 在这些高频率操作中,驱动程序可以从句柄中查找自己的图面表示形式,而无需通过帮助程序函数(如 EngLockDirectDrawSurface)锁定图面。

分配这些句柄的机制是名为 D3dCreateSurfaceEx 的驱动程序入口点。 在调用现有 DdCanCreateSurfaceDdCreateSurface 入口点后,以及将视频内存地址和句柄分配给图面后,直接调用此入口点。 在 D3dCreateSurfaceEx 时间,驱动程序从 DirectDraw 运行时的图面结构副本中复制所有相关信息,并复制到其自己的图面结构中。 图面数据(如大小、格式和 fpVidMem )需要驱动程序 (是 DD_SURFACE_GLOBAL 成员)

运行时保证句柄对于每个设备和每个进程都是唯一的。 不保证每个上下文的句柄都是唯一的,这对驱动程序有一些影响,这些驱动程序将在创建图面结构Driver-Side 详细讨论

没有相应的 DestroySurfaceEx 调用,因此在 DdDestroySurface 时间销毁驱动程序端图面结构。