Direct3D 图面句柄

Microsoft DirectX 7.0 设备驱动程序接口 (DDI) 旨在推广一种模型,即 Direct3D 运行时组件在将命令传递给驱动程序之前分析尽可能少的命令流。 此外,应设置命令流的格式,以便将来的硬件可以使用它。

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

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

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

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

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