共用方式為


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

另請參閱

IDirectDrawSurface7