共用方式為


PDD_CREATESURFACE回呼函式 (ddrawint.h)

CreateD3DBuffer 回呼函式可用來建立指定描述的驅動程式層級命令或頂點緩衝區。

語法

PDD_CREATESURFACE PddCreatesurface;

DWORD PddCreatesurface(
  PDD_CREATESURFACEDATA unnamedParam1
)
{...}

參數

unnamedParam1

指向包含建立緩衝區所需資訊的 DD_CREATESURFACEDATA 結構。

傳回值

CreateD3DBuffer 會傳回下列其中一個回呼代碼:

備註

只有在驅動程式管理驅動程式層級命令和頂點緩衝區時,才會使用此回呼。

根據預設,在 Windows 2000 和更新版本上建立主要介面時,不會通知驅動程式。 不過,如果驅動程式支援 DdGetDriverInfo 呼叫中的 GUID_NTPrivateDriverCaps GUID,而且DDHAL_PRIVATECAP_NOTIFYPRIMARYCREATION旗標是在 DD_NTPRIVATEDRIVERCAPS 結構的 dwPrivateCaps 成員中設定,則會通知驅動程式。

音調必須在 DD_SURFACE_GLOBALDDSURFACEDESC 結構的 lPitch 成員中傳回。 對於線性記憶體,驅動程式應該將 dwBlockSizeX 設定為記憶體區域的大小,以位元組為單位,並將 dwBlockSizeY 設定為 1。 兩者都是DD_SURFACE_GLOBAL結構的成員。

此呼叫的原型與 DdCreateSurface 相同。 當有問題的介面在DD_SURFACE_LOCAL 結構的 ddsCaps 成員中設定了 DDSCAPS_EXECUTEBUFFER 旗標時,會改用 CreateD3DBuffer 回呼。 緩衝區建立旗標DDSCAPS_WRITEONLY、DDSCAPS2_VERTEXBUFFER和DDSCAPS2_COMMANDBUFFER。

驅動程式會檢查DD_SURFACE_LOCAL結構的 ddsCaps 成員,以判斷所要求的緩衝區類型,以取得下列旗標:

旗標 意義
DDSCAPS2_COMMANDBUFFER 驅動程式應該配置命令緩衝區。
DDSCAPS2_VERTEXBUFFER 驅動程式應該配置明確的頂點緩衝區。
 
注意 如果未設定任何旗標,驅動程式應該配置隱含頂點緩衝區。 隱含頂點緩衝區不應該放在視訊記憶體中,因為它們預期為讀取/寫入。 只有具有DDSCAPS_WRITEONLY旗標集的明確頂點緩衝區可以安全地放置在視訊記憶體中。
 
驅動程式可以配置緩衝區內存本身,也可以要求 Microsoft DirectDraw 執行記憶體管理。 如果驅動程式執行配置,則必須在DD_SURFACE_GLOBAL結構的 fpVidMem 成員中,將有效的指標寫入記憶體。

或者,驅動程式可以在 fpVidMem 中傳回下列其中一個值,要求 DirectDraw 配置緩衝區:

意義
DDHAL_PLEASEALLOC_BLOCKSIZE DirectDraw 應該從螢幕外記憶體配置緩衝區內存。
DDHAL_PLEASEALLOC_USERMEM DirectDraw 應該從用戶記憶體配置緩衝區內存。 驅動程式也必須傳回 dwUserMemSize 中記憶體區域的大小,以位元組為單位。

規格需求

需求
目標平台 桌面
標頭 ddrawint.h (包含 Winddi.h)

另請參閱

DDSURFACEDESC

DD_CREATESURFACEDATA

DD_NTPRIVATEDRIVERCAPS

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL

DdCreateSurface

DdGetDriverInfo