共用方式為


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

指定一組旗標,描述這個特定區段的顯示記憶體。 這個成員可以是下列任何值的位 OR:

旗標 意義
VIDMEM_ISLINEAR 顯示記憶體是連續的記憶體區塊。
VIDMEM_ISRECTANGULAR 顯示記憶體為矩形。
VIDMEM_ISHEAP 此旗標保留供系統使用,驅動程式應忽略。
VIDMEM_ISNONLOCAL 堆積位於非本機 (AGP) 記憶體中。
VIDMEM_ISWC 驅動程式已在此堆積中的顯示記憶體上啟用寫入合併。 寫入結合是 Pentium Pro 類別處理器中的特殊快取模式,可將寫入批次處理到相同的快取線路,以便以單一總線時鐘傳輸。 寫入合併不會保留寫入的順序,這是框架緩衝區通常可接受的取捨。 如需有關寫入合併的詳細資訊,請參閱 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旗標,排除在第一個傳遞上配置 sprite。 如此一來,其他表面會填滿 Sprite,同時保留頁面翻轉的背景緩衝區。 您可以藉由移除DSCAPS_OFFSCREENPLAIN旗標) ,將 ddsCapsAlt 成員設定為允許第二個階段的 sprite (。 這可讓堆積以優先且最佳方式使用,而不需要排除替代用途。 例如,藉由仔細選擇配置順序 (,藉由列出最後一個) 的背景緩衝區,有時可以消除依 ddsCapsddsCapsAlt 排序的需求。

需求

   
標頭 ddrawint.h (包含 Winddi.h)

另請參閱

DDSCAPS

DrvGetDirectDrawInfo