指向 DirectDraw 图面的指针

驱动程序编写者可能会尝试将指向 DirectDrawSurface 数据结构的指针保存到其专用驱动程序端表面结构内。 但是,这种做法在 Microsoft Windows 2000 及更高版本上不会成功,因为对 DirectDraw 内核端数据结构的访问通过管理方案经过调谐,该方案将这些结构从用户模式和驱动程序隔离开来。 EngLockDirectDrawSurface 提供指向结构的指针,该结构在调用 EngUnlockDirectDrawSurface 例程之前有效。

在此锁定/取消锁定对外,该结构不能保证驻留在同一位置,甚至不存在。 此外,这些锁定/取消锁定对会影响性能。 如果驱动程序保留自己的 surface 结构副本,则不需要锁。 在低频率调用(如 D3dCreateSurfaceEx)期间,对驱动程序端表面结构内的数据进行更新。 结果就是,在 D3dDrawPrimitives2等高频率调用期间必须执行较少的代码。