2.2.33 TRANS_USERDATA_SEND_SESSION_INFO

The TRANS_USERDATA_SEND_SESSION_INFO packet is used by the game session server to relay game session information to the client. This packet begins with a TRANS_USERDATA_HEADER.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

dwPacketType

dwReplyOffset

dwReplySize

dwSize

dwFlags

dwMaxPlayers

dwCurrentPlayers

dwSessionNameOffset

dwSessionNameSize

dwPasswordOffset

dwPasswordSize

dwReservedDataOffset

dwReservedDataSize

dwApplicationReservedDataOffset

dwApplicationReservedDataSize

guidInstance (16 bytes)

...

...

applicationGUID (16 bytes)

...

...

dpnid

dwVersion

dwVersionNotUsed

dwEntryCount

dwMembershipCount

DN_NAMETABLE_ENTRY_INFO (variable)

...

DN_NAMETABLE_MEMBERSHIP_INFO (variable)

...

URL (variable)

...

Data (variable)

...

name (variable)

...

ApplicationReservedData (variable)

...

ReservedData (variable)

...

Password (variable)

...

SessionName (variable)

...

reply (variable)

...

dwPacketType (4 bytes): A 32-bit integer that indicates the packet type. This field MUST be set to 0x000000C2 to denote that this message is used by the game session server to relay game session information to the client.

dwReplyOffset (4 bytes): A 32-bit integer that provides the offset, in bytes, from the end of the dwPacketType field to the reply field. If dwReplyOffset is 0, the packet does not include a reply.

dwReplySize (4 bytes): A 32-bit integer that provides the size, in bytes, of the reply field.

dwSize (4 bytes): A 32-bit integer that provides the size, in bytes, of the application description information.

dwFlags (4 bytes): A 32-bit integer that specifies the application flags. Entries are OR'd together.<10>

Value

Meaning

0x00000004

Host migration is allowed.

0x00000040

The DirectPlay enumeration server is not running.

0x00000080

Password is REQUIRED.

0x00000100

No enumerations are allowed from the game session.

dwMaxPlayers (4 bytes): A 32-bit integer that specifies the maximum number of clients allowed in the game session.

dwCurrentPlayers (4 bytes): A 32-bit integer that specifies the current number of clients in the game session.

dwSessionNameOffset (4 bytes): A 32-bit integer that provides the offset, in bytes, from the end of the dwPacketType field to the sessionName field. If dwSessionNameOffset is 0, the packet does not include a game session name.

dwSessionNameSize (4 bytes): A 32-bit integer that provides the size, in bytes, of the sessionName field.

dwPasswordOffset (4 bytes): A 32-bit integer that provides the offset, in bytes, from the end of the dwPacketType field to the start of the password. When the packet does not include a password, this field MUST be set to 0.

dwPasswordSize (4 bytes): A 32-bit integer that provides the size, in bytes, of the password. When the packet does not include a password, this field MUST be set to 0.

dwReservedDataOffset (4 bytes): A 32-bit integer that provides the offset, in bytes, from the end of the dwPacketType field to the reservedData field. If dwReservedDataOffset is 0, the packet does not include reserved data.

dwReservedDataSize (4 bytes): A 32-bit integer that provides the size, in bytes, of the reservedData field.

dwApplicationReservedDataOffset (4 bytes): A 32-bit integer that provides the offset, in bytes, from the end of the dwPacketType field to the applicationReservedData field. If dwApplicationReservedDataOffset is 0, the packet does not include application reserved data.

dwApplicationReservedDataSize (4 bytes): A 32-bit integer that provides the size, in bytes, of the applicationReservedData field.

guidInstance (16 bytes): The instance GUID that identifies the game session. This field MUST be set to the value specified in the ApplicationInstanceGUID field of the EnumResponse message.

applicationGUID (16 bytes): The application GUID. This field MUST be set to 61EF80DA-691B-4247-9ADD-1C7BED2BC13E, which is the GUID for the DXDiag application.

dpnid (4 bytes): A 32-bit integer that provides the identifier for the new client joining the game session. This value MUST be calculated as described in section 2.2.1.

dwVersion (4 bytes): A 32-bit integer that specifies the current name table version.

dwVersionNotUsed (4 bytes): This field MUST be set to 0 when sending and ignored on receipt.

dwEntryCount (4 bytes): A 32-bit integer that provides the number of entries in the name table.

dwMembershipCount (4 bytes): A 32-bit integer that provides the number of memberships in the name table.

DN_NAMETABLE_ENTRY_INFO (variable): A dwEntryCount size array of structures that provides information on a name table entry, as specified in section 2.2.33.1.

DN_NAMETABLE_MEMBERSHIP_INFO (variable): A dwMembershipCount size array of structures that provide information on a name table membership, as specified in section 2.2.33.2.

URL (variable): A variable-length zero-terminated character array that contains the URL of a user in the chat session. This field's position is determined by dwURLOffset and the size stated in dwURLSize; both are fields in the corresponding DN_NAMETABLE_ENTRY_INFO structure. There can be multiple instances of the URL field, with an upper limit specified by the dwURLSize field. For more information about the structure of the URL, see DN_ADDRESSING_URL (section 2.2.34).

Data (variable): A variable-length zero-terminated character array that contains the user data. This field's position is determined by dwDataOffset and the size stated in dwDataSize; both are fields in the corresponding DN_NAMETABLE_ENTRY_INFO structure. There can be multiple instances of the Data field with an upper limit specified by the dwEntryCount field.

name (variable): A variable-length zero-terminated wide character array that contains the client name. This field's position is determined by the dwNameOffset field and the size stated in the dwNameSize field; both are fields in the DN_NAMETABLE_ENTRY_INFO structure. The last character indicated by dwNameSize SHOULD be treated as the terminating null character, even if the sender did not transmit it that way.

Note There can be multiple instances of the name field with an upper limit specified by the dwEntryCount field.

ApplicationReservedData (variable): A variable-length zero-terminated character array that contains the application reserved data. This field's position is determined by dwApplicationReservedDataOffset and the size stated in dwApplicationReservedDataSize.

ReservedData (variable): A variable-length zero-terminated character array that contains the reserved data. This field's position is determined by dwReservedDataOffset and the size stated in dwReservedDataSize.

Password (variable): A variable length, zero-terminated wide character array that contains the application password data. This field's position is determined by dwPasswordOffset and the size stated in dwPasswordSize. This data is passed in clear text to the protocol layer.

SessionName (variable): A variable-length zero-terminated wide character array that contains the game session name. This field's position is determined by the dwSessionNameOffset field and the size stated in the dwSessionNameSize field. The last character indicated by dwSessionNameSize SHOULD be treated as the terminating null character, even if the sender did not transmit it that way. If dwSessionNameSize is not an even multiple of two, the last odd byte SHOULD be ignored.

reply (variable): A variable-length zero-terminated character array that contains the reply. This field's position is determined by dwReplyOffset and the size stated in dwReplySize.