Platform SDK: DirectX

IDirectDrawSurface7::SetPrivateData

IDirectDrawSurface7::SetPrivateData メソッドは、DirectDraw ではなくアプリケーションでよく使用されるサーフェスとデータを関連付ける。データは値で渡され、データとデータの複数設定は単一のサーフェスと関連付けられる。

HRESULT SetPrivateData( 
  REFGUID guidTag, 
  LPVOID  lpData,
  DWORD   cbSize,
  DWORD   dwFlags 
); 

パラメータ

guidTag
設定するプライベート データを識別するグローバル識別子の (C++) または (C) のアドレスへの参照。
lpData
サーフェスに関連付けられるデータを含むバッファのアドレス。
cbSize
バイト単位の lpData におけるバッファ サイズ。
dwFlags
渡されるデータの型を記述したり、サーフェスの変更時に無効となるデータを要求するフラグ。以下のフラグが定義されている。
(none)
フラグが指定されない場合、DirectDraw はバッファ内のデータを保持するメモリを割り当て、新しいバッファにデータをコピーする。DirectDraw によって割り当てられるバッファは、適宜自動的に解放される。
DDSPD_IUNKNOWNPOINTER
IpData のデータは、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 NT/2000 :Windows 2000 が必要。
  Windows 95/98 : Windows 98 が必要。
  ヘッダー : ddraw.h で宣言。

参照

IDirectDrawSurface7::GetPrivateDataIDirectDrawSurface7::FreePrivateData