3.1.5.1 DPSP_MSG_REQUESTPLAYERREPLY

When a DirectPlay 4 client receives a DPSP_MSG_REQUESTPLAYERREPLY message (section 2.2.50), if the DirectPlay client does not have a DPSP_MSG_REQUESTPLAYERID (section 2.2.49) command outstanding, the DirectPlay client MUST ignore the message.

Otherwise, the DirectPlay client MUST remember the ID (contained in the DPSP_MSG_REQUESTPLAYERREPLY message) as the Player.ID for the newly created player.

If the player being created has the Player.SystemPlayer flag set and the Session.Authenticated flag is not set, then the client MUST format a DPSP_MSG_ADDFORWARDREQUEST message (section 2.2.11) with the PlayerID field set to the system player ID. The client MUST then start the reliable API timer and wait for a DPSP_MSG_SUPERENUMPLAYERSREPLY message (section 2.2.53). If no reply is received before the reliable API timer fires, then the client MUST return this information to the higher-level entity.

If the player being created has the Player.SystemPlayer flag set and the Session.Authenticated flag is set, then the client MUST format an NTLM NEGOTIATE packet as, specified in [MS-NLMP], using information provided by the higher-level entity (or the operating system, if applicable).<18>

The DirectPlay client MUST then format and transmit a DPSP_MSG_NEGOTIATE (section 2.2.38) to the game host with the SecurityToken of the message set to the NEGOTIATE message. It MUST start the Login Timer and wait for the game host to reply with a DPSP_MSG_CHALLENGE (section 2.2.17) message. If the Login timer expires before a DPSP_MSG_CHALLENGE (section 2.2.17) response is received, the DirectPlay client MUST indicate that the logon operation failed to the higher level.

If the player being created does not have the Player.SystemPlayer flag set, the DirectPlay client MUST format a DPSP_MSG_CREATEPLAYER (section 2.2.21) message. If the Session.MulticastServer flag is set, the DirectPlay client MUST wrap the DPSP_MSG_CREATEPLAYER message in a DPSP_MSG_ASK4MULTICAST message (section 2.2.14) and it MUST transmit the wrapped DPSP_MSG_CREATEPLAYER message to the game host. If the Session.MulticastServer flag is not set, the DirectPlay client MUST transmit the DPSP_MSG_CREATEPLAYER message to each of the computers currently joined to the game session. There is no response expected to this message.