次の方法で共有


アドレスの処理

アドレスの処理

IDirectPlay8PeerIDirectPlay8Client、または IDirectPlay8Server が公開する HostEnumHosts、または Connect メソッドを呼び出す場合は、アドレス オブジェクトをパラメータとして渡す必要がある。Microsoft® DirectPlay® に十分なアドレス情報がないと、呼び出したメソッドは失敗し、DPNERR_ADDRESSING を返す。ただし、メソッドを呼び出すときに、アドレス オブジェクト内の情報がすべて揃っている必要はない。

どのアドレス オブジェクトも、サービス プロバイダの GUID (Globally Unique Identifier) セットを持たなければならない。その他のデータ値は省略可能である。

  • サービス プロバイダがすべてのアダプタをサポートしていれば、デバイスを省略できる。
  • HostEnumHostsConnect メソッドでは、インターネット プロトコル (IP) および Internetwork Packet Exchange (IPX) サービス プロバイダのポート番号を省略できる。ポート番号は、DirectPlay が割り当てる。この番号は状況によって異なる。
  • OKTOQUERYFORADDRESSING フラグを設定すると、アドレスに足りない情報をユーザーにたずねるダイアログ ボックスを、サービス プロバイダが表示できる。ユーザーが十分な情報を提供しなければ、メソッドは失敗する。OKTOQUERYFORADDRESSING フラグを設定しなかった場合、このダイアログ ボックスは表示されない。メソッドに渡したアドレスが足りなければ、メソッドは失敗する。最後の 2 つの場合、返されるエラー値は DPNERR_ADDRESSING となる。

IP および IPX サービス プロバイダに関しては、重要な注意事項が 2 つある。これらの処理が適切でないと、アプリケーションが失敗する可能性がある。

  • 列挙メソッドを呼び出すときに NOBROADCASTFALLBACK フラグを設定する場合は、ホスト名を渡す必要がある。そうしないと、メソッドが失敗し、DPNERR_ADDRESSING が返される。
  • ポートを指定しない場合、DirectPlay により常に同じポート番号が選択されると考えてはならない。特定のポート番号を使う唯一の方法は、アドレスでそのポート番号を指定することである。ポート番号を指定しない場合は、後でコマンドの進行中に実際の値を取得する必要がある。

  Transmission Control Protocol/Internet Protocol (TCP/IP) 用のデフォルトの DirectPlay 8 ダイアログをオーバーライドする場合、接続または列挙に使うポートをユーザーがオーバーライドできる方法を実装することを強く推奨する。1 つの可能な解決策として、DirectPlay 8 TCP/IP プロトコル のデフォルト ダイアログ ボックスで実装されるように、ユーザーがホスト名に続いてコロンとポートを指定できるようにする方法がある。たとえば、「host.domain.com:8090」のように指定する。 他の可能な解決策としては、ユーザーがポートを入力できるようにするユーザー インターフェイス (UI) にフィールドを追加する方法がある。