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 ページかロビー メカニズムを用いて渡す文字列を作成することである。