Platform SDK: DirectX |
DirectPlay プロトコルは、保証されていないサービス プロバイダ上における保証メッセージングの実装である。たとえば、IPX (Internetwork Packet Exchange) サービス プロバイダはその性質上、保証メッセージングをサポートしていない。アプリケーションが IPX 上で保証メッセージを送信しようとすると、DirectPlay プロトコルがメッセージの転送を保証するために必要な処理をすべて実行する。
DirectPlay プロトコルは、非同期メッセージングと、メッセージのスロットリングもサポートしている。ただし、サービス プロバイダがこれらの機能を最適化する場合もある。
アプリケーションは、セッションを作成するときに DPSESSION_DIRECTPLAYPROTOCOL フラグを設定して、DirectPlay プロトコルを起動する。
システム メッセージは、サービス プロバイダが保証メッセージをネイティブにサポートしているかどうかに関係なく、また、DirectPlay プロトコル フラグを設定してあるかどうかに関係なく、常に保証付きで送信される。システム メッセージを保証付きで送信する場合は、DirectPlay プロトコルが自動的に使用される。
システム メッセージ以外の場合は、アプリケーションが DirectPlay プロトコル フラグを設定し、(IDirectPlay4::SendEx で DPSEND_GUARANTEED フラグを設定することにより) メッセージを保証付きで送信すると、サービス プロバイダが保証メッセージをサポートしているかどうかに関係なく、メッセージは保証付きで送信される。
システム メッセージ以外の場合は、アプリケーションが DirectPlay プロトコル フラグを設定し、(DirectPlay4.SendEx で DPSEND_GUARANTEED フラグを設定することにより) メッセージを保証付きで送信すると、サービス プロバイダが保証メッセージをサポートしているかどうかに関係なく、メッセージは保証付きで送信される。
アプリケーションが DirectPlay フラグを設定せずにメッセージを保証付きで送信すると、DPSEND_GUARANTEED フラグに関係なく、サービス プロバイダが保証メッセージをサポートする場合に限り、転送が保証される。
アプリケーションは、サービス プロバイダによって実装されたデフォルトの保証メッセージングの代わりに、DirectPlay プロトコルを使用するように指定することもできる。この指定は、セッションを作成するときに DPSESSION_DIRECTPLAYPROTOCOL フラグを設定して行うこともできる。
以下は、システム メッセージ以外のメッセージが送信されるしくみをまとめたものである。
DirectPlay プロトコル フラグが設定されていない場合
サービス プロバイダ | 保証付きで送信されるメッセージが使用するもの | 保証なしで送信されるメッセージが使用するもの |
---|---|---|
IPX | IPX。保証付きでは送信されない | IPX |
TCP/IP | TCP | UDP |
モデム | モデム。保証付きでは送信されない | モデム |
DirectPlay プロトコル フラグが設定されている場合
サービス プロバイダ | 保証付きで送信されるメッセージが使用するもの | 保証なしで送信されるメッセージが使用するもの |
---|---|---|
IPX | DirectPlayProtocol/IPX | DirectPlayProtocol/IPX |
TCP/IP | DirectPlayProtocol/UDP | DirectPlayProtocol/UDP |
モデム | DirectPlayProtocol/モデム | DirectPlayProtocol/モデム |
DirectPlay プロトコル フラグが設定されていない場合、アプリケーションは (セッションが開いた後に) サービス プロバイダの能力を調べて、非同期メッセージング、メッセージのキャンセル、メッセージのタイムアウト、メッセージの優先順位などに関連して利用できる機能を判断する必要がある。DirectPlay プロトコル フラグが設定されている場合は、これらの機能をすべて利用できる。