次の方法で共有


IDirectPlay8Peer::GetLocalHostAddresses メソッド

IDirectPlay8Peer::GetLocalHostAddresses メソッド

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

構文

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

パラメータ

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

戻り値

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

DPNERR_BUFFERTOOSMALL 指定されたバッファが小さすぎて、要求されたデータを格納できない。
DPNERR_INVALIDOBJECT Microsoft® DirectPlay® オブジェクトのポインタは無効である。
DPNERR_INVALIDPARAM メソッドに渡された 1 つ以上のパラメータが無効である。
DPNERR_INVALIDPOINTER パラメータとして指定されたポインタが無効である。
DPNERR_UNINITIALIZED 要求されたオブジェクトが初期化されていない。
DPNERR_UNSUPPORTED 関数または機能を、この実装やこのサービス プロバイダで使用できない。
DPNERR_NOTHOST クライアントがホスト以外のコンピュータに接続しようとした。また、ホスト以外のコンピュータがアプリケーションの記述を設定しようとした場合に、このエラー値を返すことがある。

注意

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

呼び出し側がセッション ホストでない場合、メソッドは DPNERR_NOTHOST を返す。リモート プレーヤのアドレスを取得するには、IDirectPlay8Peer::GetPeerAddress を使う。

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