This section describes the DirectPlay interface and the DirectPlay service providers and how they interact with each other. See:
The DirectPlay interface is a common interface to the application for simple send and receive type messaging as well as higher-level services like player management, groups for multicast, data management and propagation, and lobby services for locating other players on a network.
The service providers furnish network-specific communications services as requested by DirectPlay. Online services and network operators can supply service providers to use specialized hardware, protocols, communications media, and network resources. A service provider can simply be a layer between DirectPlay and an existing transport like Winsock, or it can use specialized resources on an online service such as multicast servers, enhanced quality of service, or billing services. Microsoft includes four generic service providers with DirectPlay: head-to-head modem (TAPI), serial connection, Internet TCP/IP (using Winsock), and IPX (also using Winsock).
The DirectPlay interface hides the complexities and unique tasks required to establish an arbitrary communications link inside the DirectPlay provider implementation. An application using DirectPlay need only concern itself with the performance and capabilities of the virtual network presented by DirectPlay. It need not know whether a modem, network card, or online service is providing the medium.
DirectPlay will dynamically bind to any DirectPlay provider installed on the user's system. The application interacts with the DirectPlay object. The DirectPlay object interacts with one of the available DirectPlay service providers, and the selected service provider interacts with the transport, protocol, and other network resources.
The DirectPlay API is exposed to the application through several COM interfaces. (See DirectPlay Interfaces for a discussion of COM and DirectPlay.) Application sessions can talk to someone else on the network through the IDirectPlay3 and IDirectPlay3A interfaces. The first uses Unicode strings in all the DirectPlay structures, while the second uses ANSI strings. IDirectPlay, IDirectPlay2, and IDirectPlay2A still exist for backward compatibility with applications written to a previous version of the DirectPlay SDK.
Lobby clients can talk to another application on the same machine through the IDirectPlayLobby2 and IDirectPlayLobby2A interfaces. The first interface uses Unicode strings while the second uses ANSI strings. The IDirectPlayLobby interface still exists for backward compatibility.