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
指向描述 surface 的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,這會在事件可以傳回所要求的表面記憶體指標時觸發事件。 |
DDLOCK_HASVOLUMETEXTUREBOXRECT | 驅動程式應該會傳回有效的記憶體指標,指向 rArea中矩形中指定的子卷積紋理開頭, (RECTL) 。 驅動程式會分別從左和右座標的前 16 位取得子卷的前後座標, (RECTL) 的左和右成員。 左右座標受限於較低的 16 位。 如果未指定矩形,驅動程式應該會傳回整個磁片區頂端的指標。 此值適用于 DirectX 8.1 和更新版本。 |
DDLOCK_NODIRTYUPDATE |
|
DDLOCK_NOOVERWRITE | 僅與 Direct3D 頂點緩衝區鎖定搭配使用。 表示 在 IDirect3DDevice7::D rawPrimitiveVB 和 IDirect3DDevice7::D rawIndexedPrimitiveVB 呼叫 (所描述的頂點) ,因為畫面格開頭 (或沒有此旗標的最後一個鎖定,) 會在鎖定期間修改。 當其中一個只將資料附加至頂點緩衝區時,這非常有用。 |
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) |