IDirectDrawSurface7::SetPrivateData 方法 (ddraw.h)
將數據與應用程式所要使用的介面產生關聯,而不是由 DirectDraw 使用。 數據會以傳值方式傳遞,而且多個數據集可以與單一表面產生關聯。
語法
HRESULT SetPrivateData(
[in] REFGUID unnamedParam1,
[in] LPVOID unnamedParam2,
[in] DWORD unnamedParam3,
[in] DWORD unnamedParam4
);
參數
[in] unnamedParam1
(C++) 或 (C 位址的參考,) 識別要設定之私人數據的全域唯一識別符。
[in] unnamedParam2
緩衝區的指標,其中包含要與表面相關聯的數據。
[in] unnamedParam3
lpData 緩衝區的大小值,以位元組為單位。
[in] unnamedParam4
值,可設定為下列其中一個旗標。 這些旗標描述要傳遞的數據類型,或要求數據在表面變更時失效。
(無)
如果未指定旗標,DirectDraw 會配置記憶體來保存緩衝區中的數據,並將數據複製到新的緩衝區。 DirectDraw 配置的緩衝區會視需要自動釋放。
DDSPD_IUNKNOWNPOINTER
位於 lpData 的數據是 IUnknown 介面的指標。 DirectDraw 會自動呼叫此介面的 IUnknown::AddRef 方法。 當不再需要此數據時,DirectDraw 會自動呼叫此介面的 IUnknown::Release 方法。
DDSPD_VOLATILE
lpData 上的緩衝區只有在表面保持不變時才有效。 如果表面的內容變更,後續呼叫 IDirectDrawSurface7::GetPrivateData 方法會傳回DDERR_EXPIRED。
傳回值
如果方法成功,傳回值會DD_OK。
如果失敗,方法可以傳回下列其中一個錯誤值:
- DDERR_INVALIDOBJECT
- DDERR_INVALIDPARAMS
- DDERR_OUTOFMEMORY
備註
DirectDraw 不會在 lpData 管理記憶體。 如果動態配置此緩衝區,呼叫端必須釋放記憶體。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | ddraw.h |
程式庫 | Ddraw.lib |
Dll | Ddraw.dll |