VIDEOMEMORY 结构 (ddrawint.h)

VIDEOMEMORY 结构允许驱动程序将其显示内存管理到堆中。

语法

typedef struct _VIDEOMEMORY {
  DWORD   dwFlags;
  FLATPTR fpStart;
  union {
    FLATPTR fpEnd;
    DWORD   dwWidth;
  };
  DDSCAPS ddsCaps;
  DDSCAPS ddsCapsAlt;
  union {
#if ...
    _VMEMHEAP        *lpHeap;
#else
    struct _VMEMHEAP *lpHeap;
#endif
    DWORD            dwHeight;
  };
} VIDEOMEMORY;

成员

dwFlags

指定一组标志,用于描述显示内存的此特定部分。 此成员可以是以下任何值的按位或:

标志 含义
VIDMEM_ISLINEAR 显示内存是连续的内存块。
VIDMEM_ISRECTANGULAR 显示内存为矩形。
VIDMEM_ISHEAP 此标志保留供系统使用,驱动程序应忽略此标志。
VIDMEM_ISNONLOCAL 堆驻留在非本地 (AGP) 内存中。
VIDMEM_ISWC 驱动程序已在此堆中的显示内存上启用写入组合。 写入组合是Pentium Pro-class 处理器中的一种特殊缓存模式,可将写入批处理到同一缓存行,以便可以在单个总线时钟中传输。 写入合并不会保留写入的顺序,而帧缓冲区通常可以接受这种权衡。 有关写入合并的详细信息,请参阅 Intel 文档。 除非还设置了VIDMEM_ISNONLOCAL标志,否则不能使用此标志。
VIDMEM_HEAPDISABLED Microsoft DirectDraw 运行时使用此标志在堆的初始化失败时关闭堆。 这很可能与 AGP 堆一起发生。 驱动程序不应设置此位。

fpStart

指向堆中内存范围的起始地址。

fpEnd

如果堆是线性的,则指向内存范围的结束地址。 此地址是非独占地址,即指定范围中的最后一个有效地址。 因此, fpStartfpEnd 指定的字节数 (fpEnd - fpStart + 1) 。

dwWidth

指定 fpStart 指向的内存部分的宽度(以字节为单位)。 此成员仅用于描述矩形内存区域。

ddsCaps

指定一个 DDSCAPS 结构,驱动程序在其中返回无法使用此部分内存的功能。

ddsCapsAlt

指定一个 DDSCAPS 结构,其中驱动程序将返回在第一次传递上找不到其他内存时无法使用此内存区块的功能。

lpHeap

保留供系统使用,驱动程序应忽略。

dwHeight

指定 fpStart 指向的内存块的高度。 此成员仅用于描述矩形内存区域。

备注

在 Microsoft Windows 2000 及更高版本上,数据结构称为 VIDEOMEMORY,在 Windows 98/Me 上,数据结构称为 VIDMEM。

GDI 分配 VIDEOMEMORY 结构数组并将其传递给驱动程序的 DrvGetDirectDrawInfo 函数的第二次调用。 驱动程序应填写每个结构的相应成员,以描述内存的每个特定部分。 该列表提供了驱动程序的屏幕外内存的完整说明。

DirectDraw 扫描以按显示内存堆的列出顺序分配其图面。 堆在 VIDEOMEMORY 结构的数组中管理。 首先分配的内存将是首先访问的内存。 VIDEOMEMORY 结构设置某些起点,并确定图面上的内存量以及无法对图面执行的操作。 DirectDraw 通过子分配和解除分配内存来管理它,即在每个堆的管辖范围内创建和销毁图面。 物理限制决定了如何设置这些属性。

DirectDraw 的堆管理器通过 VIDEOMEMORY 结构进行两次传递。 ddsCaps 成员向 DirectDraw 指示堆中的内存在第一次传递时不能用于什么。 例如,如果堆刚好足够大,则可以通过在 DDSCAPS 结构中设置 DSCAPS_OFFSCREENPLAIN 标志,在第一次传递时将子画面排除在分配之外。 这样,其他表面就会充满子画面,同时保留页面翻转的后台缓冲区。 可以通过删除) DSCAPS_OFFSCREENPLAIN标志,将 ddsCapsAlt 成员设置为允许第二次传递 (的子画面。 这允许优先使用堆以达到其最高和最佳用途,而不排除替代用途。 例如,通过仔细选择分配顺序 (列出最后) 的后台缓冲区,有时可以消除按 ddsCapsddsCapsAlt 排序的需要。

要求

   
标头 ddrawint.h (包括 Winddi.h)

另请参阅

DDSCAPS

DrvGetDirectDrawInfo