IDirectPlay8Peer::GetPeerInfo メソッド
IDirectPlay8Peer::GetPeerInfo メソッド
指定されたピアに設定されているピア情報を取得する。
構文
HRESULT GetPeerInfo(
const DPNID dpnid,
DPN_PLAYER_INFO *const pdpnPlayerInfo,
DWORD *const pdwSize,
const DWORD dwFlags
);
パラメータ
- dpnid
[in] 情報の取得対象となるピアの識別子を指定する DPNID 型の変数。 - pdpnPlayerInfo
[out] ピア情報を格納する DPN_PLAYER_INFO 構造体へのポインタ。pdwSize が NULL に設定されていない場合、pdpnPlayerInfo.dwSize に DPN_PLAYER_INFO 構造体のサイズを設定しなければならない。 - pdwSize
[in, out] pdpnPlayerInfo パラメータに返されるピア データのサイズを保持する DWORD 型の変数へのポインタ。バッファが小さすぎる場合、このメソッドは DPNERR_BUFFERTOOSMALL を返し、このパラメータには必要なバッファのサイズが入る。 - dwFlags
[in] 予約済み。0 に設定すること。
戻り値
成功した場合は S_OK を返し、失敗した場合は次のいずれかのエラー値を返す。
DPNERR_BUFFERTOOSMALL | 指定されたバッファが小さすぎて、要求されたデータを格納できない。 |
DPNERR_INVALIDFLAGS | このメソッドに渡されたフラグは無効である。 |
DPNERR_INVALIDPARAM | メソッドに渡された 1 つ以上のパラメータが無効である。 |
DPNERR_INVALIDPLAYER | プレーヤ ID が、このゲーム セッションに対する有効なプレーヤ ID として認識されていない。 |
DPNERR_CONNECTING | メソッドはネットワークへの接続処理中である。 |
注意
ピアが情報を更新したことを表す DPN_MSGID_PEER_INFO メッセージをアプリケーションから受信した後、このメソッドを呼び出す。
ホストが IDirectPlay8Peer::Host から返る前に IDirectPlay8Peer::GetPeerInfo を呼び出すと、このメソッドは DPNERR_CONNECTING で失敗する。この場合、もう一度 IDirectPlay8Peer::GetPeerInfo の呼び出しを試すこと。
Microsoft® DirectPlay® は DPN_PLAYER_INFO 構造体と、連続するバッファにある、この構造体の pwszName メンバと pvData メンバに割り当てられたポインタを返す。この 2 つのポインタが設定される場合、構造体に加えて 2 つのポインタにも十分なメモリを割り当てておく必要がある。このメソッドを使う最も確実な方法は、最初は pdwSize を NULL に設定してこのメソッドを呼び出すことである。メソッドが戻ると、pdwSize が正しい値をポイントしている。その値を使って構造体にメモリを割り当て、もう一度メソッドを呼び出して情報を取得する。
メソッドが戻ると、対応するポインタが NULL に設定されている場合でも、DPN_PLAYER_INFO 構造体の dwInfoFlags メンバには常に DPNINFO_DATA フラグと DPNINFO_NAME フラグが設定されている。これらのフラグは IDirectPlay8Peer::SetPeerInfo を呼び出すときに使われ、DirectPlay に変更された値を通知する。
IDirectPlay8Peer::SetPeerInfo メソッドを使うと処理に負担がかかるため、非静的情報は IDirectPlay8Peer::SendTo メソッドを使って転送すること。