Platform SDK: DirectX

IDirectPlay4::SetPlayerData

IDirectPlay4::SetPlayerData メソッドは、アプリケーション固有のデータ ブロックをプレーヤー ID に関連付ける。

HRESULT SetPlayerData(
  DPID idPlayer,
  LPVOID lpData,
  DWORD dwDataSize,
  DWORD dwFlags
);

パラメータ

idPlayer
データを設定するプレーヤーの ID。
lpData
設定するデータへのポインタ。既存のプレーヤー データをクリアするには、このパラメータに NULL を、dwDataSize に 0 を設定する。
dwDataSize
データ バッファのサイズ。lpData が NULL であり、このパラメータが 0 でない場合、メソッドは DPERR_INVALIDPARAMS を返す。
dwFlags
このパラメータに 0 を設定した場合、リモート プレーヤー データは保証なしメッセージ方式で設定および伝播される。
DPSET_GUARANTEED
保証付きメッセージ方式 (可能な場合) によりデータを伝播する。このフラグは、DPSET_REMOTE でのみ使用できる。
DPSET_LOCAL
このデータはローカルにしか使用されず、伝播されない。
DPSET_REMOTE
このデータは、すべてのアプリケーションにより使用されるので、セッション内のその他すべてのアプリケーションに伝播される。

戻り値

成功した場合は DP_OK を返す。失敗した場合は、次のエラー値のいずれかを返す。

DPERR_ACCESSDENIED
DPERR_CONNECTIONLOST
DPERR_INVALIDFLAGS
DPERR_INVALIDOBJECT
DPERR_INVALIDPARAMS
DPERR_INVALIDPLAYER

注意

SetPlayerData を使用すると、オーバヘッドが生じるので、リアルタイムの情報 (位置の更新など) を更新する場合は使用しないこと。このような処理には、Send の方が有効である。また、あまり頻繁に変更されず、時間を重視しない (プレーヤーの名前など) 共有状態の情報については、SetPlayerData の方が適している。

DirectPlay では、ローカルとリモートの両方のプレーヤー データを保守できる。ローカル データは、ローカル コンピュータのアプリケーションでのみ使用できる。リモート データは、セッション内のその他すべてのアプリケーションに伝播される。リモート プレーヤーのプレーヤー データを設定しようとすると、DPERR_ACCESSDENIED が返される。セッション記述で DPSESSION_NODATAMESSAGES が設定されている場合を除き、すべてのプレーヤー (送信元のプレーヤーを含む) に、変更を知らせる DPMSG_SETPLAYERORGROUPDATA システム メッセージが送信される。リソースへのポインタは、ローカル データに保存すれば安全である。プレーヤーが壊れてもローカル データ ブロックは使用できる (DPMSG_DESTROYPLAYERORGROUP システム メッセージにおいて) ので、アプリケーションはそのリソースを解放できる。システム メッセージのリストについては、「システム メッセージの使用」を参照すること。

必要条件

  Windows NT/2000 : Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  ヘッダー : dplay.h で宣言。
  インポート ライブラリ : dplayx.lib を使用。

参照

DPMSG_SETPLAYERORGROUPDATAIDirectPlay4::GetPlayerDataIDirectPlay4::Send