DD_LOCKDATA 结构 (ddrawint.h)
DD_LOCKDATA 结构包含执行 Microsoft DirectDraw 参数结构定义的锁所需的信息。
语法
typedef struct _DD_LOCKDATA {
PDD_DIRECTDRAW_GLOBAL lpDD;
PDD_SURFACE_LOCAL lpDDSurface;
DWORD bHasRect;
RECTL rArea;
LPVOID lpSurfData;
HRESULT ddRVal;
VOID *Lock;
DWORD dwFlags;
FLATPTR fpProcess;
} *PDD_LOCKDATA, DD_LOCKDATA;
成员
lpDD
指向描述驱动程序设备的 DD_DIRECTDRAW_GLOBAL 结构。
lpDDSurface
指向描述图面 的DD_SURFACE_LOCAL 结构(在 LockD3DBuffer(与要锁定的内存区域关联的缓冲区)的情况下。
bHasRect
指定 rArea 中的区域是否有效。 值 0x00000001 表示有效区域,0x00000000表示无效区域。
rArea
指定一个 RECTL 结构,该结构定义要锁定的图面上的区域。
lpSurfData
指定驱动程序可返回指向其锁定的内存区域的指针的位置。
ddRVal
指定驱动程序写入 DdLock 或 LockD3DBuffer 回调的返回值的位置。 返回代码DD_OK表示成功。 有关详细信息,请参阅 DirectDraw 的返回值。
Lock
由 DirectDraw API 使用,驱动程序不应填充。
dwFlags
指定一个位掩码,告知驱动程序如何执行内存锁定。 此成员是以下任何值的按位 OR:
标志 | 含义 |
---|---|
DDLOCK_DISCARDCONTENTS |
此标志提示驱动程序可以跳过取消重新排序过程,因为应用程序计划覆盖图面中的每个像素或锁定矩形 (,因此) 清除所有未重新排序的像素。 应用程序在打算覆盖整个图面或锁定矩形时,应始终设置此标志。 |
DDLOCK_DONOTWAIT | 在 IDirectDrawSurface7 及更高接口上,默认值为 DDLOCK_WAIT。 如果要替代默认值并使用加速器正忙 (的时间,如DDERR_WASSTILLDRAWING返回代码) 请使用此标志。 |
DDLOCK_EVENT | 设置是否将事件句柄传递给 Lock,这会在事件可以返回请求的 Surface 内存指针时触发事件。 |
DDLOCK_HASVOLUMETEXTUREBOXRECT | 驱动程序应返回一个有效的内存指针,指向 rArea 中矩形 (RECTL) 中指定的子卷纹理的开头。 驱动程序分别从左坐标和右坐标的前 16 位 (RECTL) 的左右成员获取子卷的前后坐标。 左侧和右侧坐标限制为较低的 16 位。 如果未指定矩形,驱动程序应返回指向整个卷顶部的指针。 此值在 DirectX 8.1 及更高版本中可用。 |
DDLOCK_NODIRTYUPDATE |
|
DDLOCK_NOOVERWRITE | 仅用于 Direct3D 顶点缓冲区锁。 指示自帧开始 (或无此标志) 的最后一个锁) 以来,在 Direct3D SDK 文档) ,在 IDirect3DDDevice7::D rawPrimitiveVB 和 IDirect3DDevice7::D rawDDevice7::D rawPrimitiveVB 中引用的顶点均未 (调用任何顶点。 当仅将数据追加到顶点缓冲区时,这非常有用。 |
DDLOCK_NOSYSLOCK |
|
DDLOCK_OKTOSWAP | 与 DDLOCK_DISCARDCONTENTS 相同。 |
DDLOCK_READONLY | 要锁定的图面只能从中读取。 在 Windows 2000 及更高版本上,永远不会设置此标志。 |
DDLOCK_SURFACEMEMORYPTR | 驱动程序应返回指向 rArea 中指定的矩形顶部的有效内存指针。 如果未指定矩形,驱动程序应返回指向图面顶部的指针。 |
DDLOCK_WAIT | 设置为 指示 Lock 应等待,直到它可以获取有效的内存指针,然后再返回。 如果设置了此位, 则 Lock 永远不会返回DDERR_WASSTILLDRAWING。 |
DDLOCK_WRITEONLY | 被锁定的图面将仅写入。 在 Windows 2000 及更高版本上,永远不会设置此标志。 |
fpProcess
指定指向驱动程序内存的用户模式映射的指针。 驱动程序在 DdMapMemory 中执行此映射。 仅限 Windows 2000 及更高版本。
要求
标头 | ddrawint.h (包括 Winddi.h) |