Platform SDK: DirectX |
IDirectPlay4::CreatePlayer メソッドは、カレント セッションにローカル プレーヤーを作成する。
HRESULT CreatePlayer( LPDPID lpidPlayer, LPDPNAME lpPlayerName, HANDLE hEvent, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags );
成功した場合は DP_OK を返す。失敗した場合は、次のエラー値のいずれかを返す。
DPERR_CANTADDPLAYER |
DPERR_CANTCREATEPLAYER |
DPERR_CONNECTIONLOST |
DPERR_INVALIDFLAGS |
DPERR_INVALIDPARAMS |
DPERR_NOCONNECTION |
1 つのプロセスで、複数のローカル プレーヤーが、同じコンピュータの他のプレーヤーやリモート コンピュータのプレーヤーと DirectPlay オブジェクトを介して通信することが可能である。
処理が正常に終了すると、このメソッドは、新規プレーヤーがセッションに参加したことを知らせる DPMSG_CREATEPLAYERORGROUP システム メッセージをセッションの他のすべてのプレーヤーに送信する。デフォルトでは、すべてのローカル プレーヤーはすべてのシステム メッセージのコピーを受信する。
メッセージの受け渡しやデータの関連付けでプレーヤーを識別するときは、アプリケーションに返されるプレーヤー ID を使用する。DirectPlay により割り当てられたプレーヤー ID やグループ ID はセッション内で常に一意である。
プレーヤーを作成したアプリケーションでのみ、次の処理が可能である。
アプリケーションがセッションを閉じた場合、作成されたローカル プレーヤーはすべて自動的に破棄される。IDirectPlay4::DestroyPlayer を使用すると、プレーヤーを作成したセッション ホストやアプリケーションはいつでもそれを破棄できる。
アプリケーションが DirectPlay メッセージを取得するのに別のスレッドを使用した場合、NULL以外の hEvent を指定して、それを同期処理で使用することを強く推奨する。このイベントは、プレーヤーがメッセージを受信すると設定される。メッセージ受信スレッド内で、プレーヤーがメッセージを持っているかどうかを判定するには、スレッド内の Win32® API WaitForSingleObject を使用する (または、複数のイベントが使用されている場合は WaitForMultipleObjects を使用する)。メッセージを待っている別のスレッド内の IDirectPlay4::Receive でループ処理を行うのは非効率的である。すべてのローカル プレーヤーで同じイベントを使用することも、プレーヤーごとに別のイベントをアプリケーションで指定することも可能である。イベントの作成、破棄は、アプリケーションの役割である。詳細については、「同期」を参照すること。
Windows NT/2000 : Windows 2000 が必要。
Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
ヘッダー : dplay.h で宣言。
インポート ライブラリ : dplayx.lib を使用。
DPNAME、DPMSG_CREATEPLAYERORGROUP、IDirectPlay4::DestroyPlayer、IDirectPlay4::EnumPlayers、IDirectPlay4::Receive、IDirectPlay4::Send、IDirectPlay4::SetPlayerData、IDirectPlay4::SetPlayerName、IDirectPlay4::GetPlayerFlags