IDirectPlay8Server::GetLocalHostAddress メソッド

IDirectPlay8Server::GetLocalHostAddress メソッド

セッションのホストになるために使われるローカル アドレスを取得する。

構文

HRESULT GetLocalHostAddresses(      
    IDirectPlay8Address **const prgpAddress,
    DWORD *const pcAddress,
    const DWORD dwFlags
);

パラメータ

  • prgpAddress
    [out] ローカル ホスト アドレスを指定する IDirectPlay8Address オブジェクトの配列へのポインタのアドレス。これらのオブジェクトは不要になったら解放しなければならない。解放しなかった場合、メモリ リークが発生する。
  • pcAddress
    [in, out] prgpAddress がポイントする配列に保持できるアドレス オブジェクトの最大数。バッファが小さすぎる場合、メソッドは DPNERR_BUFFERTOOSMALL を返し、pcAddress が必要な値に設定される。
  • dwFlags
    [in] 伝送制御プロトコル/インターネット プロトコル (TCP/IP) サービス プロバイダを使うとき、次のフラグを指定できる。このフラグを他のサービス プロバイダと共に使った場合、このメソッドは DPNERR_UNSUPPORTED を返す。
    • DPNGETLOCALHOSTADDRESSES_COMBINED
      すべての聴取アドレスを 1 つの IDirectPlay8Address オブジェクトに結合して返す。

戻り値

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

DPNERR_INVALIDOBJECT Microsoft® DirectPlay® オブジェクトのポインタは無効である。
DPNERR_BUFFERTOOSMALL 指定されたバッファが小さすぎて、要求されたデータを格納できない。
DPNERR_INVALIDPARAM メソッドに渡された 1 つあるいは複数のパラメータが無効である。
DPNERR_INVALIDPOINTER パラメータとして指定されたポインタが無効である。
DPNERR_UNINITIALIZED 要求されたオブジェクトが初期化されていない。
DPNERR_UNSUPPORTED 関数または機能を、この実装やこのサービス プロバイダで使うことができない。

注意

このメソッドを使う最も確実な方法は、最初は pcAddress を 0 に設定してこのメソッドを呼び出すことである。メソッドが戻ると、pcAddress が必要な値をポイントする。2 回目にこのメソッドを呼び出すときは、その値を使って情報を取得する。

DPNGETLOCALHOSTADDRESSES_COMBINED を指定すると、すべての聴取サーバー アドレスを格納したアドレス オブジェクトが返される。たとえば、サーバーは、ネットワーク アドレス変換 (NAT) デバイスの背後にあるか複数のネットワーク カードを搭載する場合に、複数のアドレスを持つことがある。この場合、プレーヤがすべてのアドレスを同時に試行できれば、サーバーへ接続する時間は短縮できる。アプリケーションは結合されたアドレス オブジェクトを接続するプレーヤに渡す独自の機構を提供しなければならない。1 つの方法は、IDirectPlay8Address::GetURLA または IDirectPlay8Address::GetURLW、および IDirectPlay8Address::BuildFromURLA または IDirectPlay8Address::BuildFromURLW を使い、Web ページかロビー機構を用いて渡す文字列を作成することである。