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