As of DirectX 3, DirectPlay has the ability to allow applications to associate data with players and groups. Because DirectPlay already keeps track of players and groups, applications no longer have to implement their own player and group list manager to keep track of information. In addition, DirectPlay allows applications to store two types of information: local and remote. Local data is available only to the object that sets it. Remote data, on the other hand, is propagated to each computer in the session. In effect, it becomes shared memory between all remote computers. You should use remote data to store data that does not change often and that all computers need to access. You should use local data to keep track of data that no other computer needs access to.
Your application can set the data for a player by using the IDirectPlay2::SetPlayerData method. The application can specify whether the data is local or remote by passing the appropriate flags with the call. If the data is remote, the application can also specify whether to use guaranteed or nonguaranteed message passing to propagate the data. An application can retrieve data for a player by using the IDirectPlay2::GetPlayerData method, again specifying whether to retrieve the local or remote data. In a similar manner, you can use the IDirectPlay2::SetGroupData and IDirectPlay2::GetGroupData methods for group data.