2.2.5 EnumResponse

The EnumResponse packet is sent from the game session server to the client in response to the EnumQuery packet that was sent from the client.

Note When a serial or modem link is used, the _MESSAGE_HEADER (section 2.2.2) header replaces the first 32 bits of the EnumResponse payload (the LeadByte, CommandByte, and EnumPayload fields).


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

LeadByte

CommandByte

EnumPayload

ReplyOffset

ResponseSize

ApplicationDescSize

ApplicationDescFlags

MaxPlayers

CurrentPlayers

SessionNameOffset

SessionNameSize

PasswordOffset

PasswordSize

ReservedDataOffset

ReservedDataSize

ApplicationReservedDataOffset

ApplicationReservedDataSize

ApplicationInstanceGUID (16 bytes)

...

...

ApplicationGUID (16 bytes)

...

...

SessionName (variable)

...

Password (variable)

...

ReservedData (variable)

...

ApplicationReservedData (variable)

...

ApplicationData (variable)

...

LeadByte (1 byte): The leading zero byte for the packet. This field MUST be set to 0 to denote that this is a session packet.

CommandByte (1 byte): An 8-bit integer that indicates the command code for the message. This field MUST be set to 0x03 to denote that this is an EnumResponse message.

EnumPayload (2 bytes): A 16-bit integer value selected by the sender of the EnumQuery message.

An EnumResponse message is generated for every EnumQuery message received. The EnumPayload field in the EnumResponse message MUST match the EnumPayload field in the corresponding EnumQuery message.

ReplyOffset (4 bytes): A 32-bit integer that provides the offset in bytes from the end of EnumPayload to the start of the reply. If this field is 0, the packet does not contain a reply.

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

ApplicationDescSize (4 bytes): A 32-bit integer that provides the size of the application description.

ApplicationDescFlags (4 bytes): A 32-bit integer that provides the characteristics of the session specified as a combination of the following flags.<3>

Value

Meaning

DPNSESSION_MIGRATE_HOST

0x00000004

Host migration is allowed.

DPNSESSION_NODPNSVR

0x00000040

Not using DirectPlay Name Server (DPNSVR) (game session is not enumerable via well-known port 6073).

DPNSESSION_REQUIREPASSWORD

0x00000080

Password required to join game session.

DPNSESSION_NOENUMS

0x00000100

Enumerations are not allowed. This flag will never be set in an EnumResponse message.

MaxPlayers (4 bytes): A 32-bit integer that specifies the maximum number of clients allowed in the game session. A value of 0x00000000 denotes that an unlimited number of clients is allowed.

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

SessionNameOffset (4 bytes): A 32-bit integer that specifies the offset in bytes from the end of EnumPayload to the start of the game session name.

SessionNameSize (4 bytes): A 32-bit integer that specifies the size in bytes of the game session name.

PasswordOffset (4 bytes): This field is 32 bits in length. A password is never used in the EnumResponse message; therefore, the PasswordOffset field will always be 0.

PasswordSize (4 bytes): This field is 32 bits in length. Passwords are not used in EnumResponse messages transmitted in the DirectPlay DxDiag Usage Protocol; therefore, the PasswordSize field will always be 0.

ReservedDataOffset (4 bytes): A 32-bit field that specifies the offset, in bytes, from the end of the EnumPayload field to the ReservedData field. Since the ReservedData field is never used, ReservedDataOffset will always be 0.

ReservedDataSize (4 bytes): A 32-bit field that specifies the size, in bytes, of the ReservedData field. Since the ReservedData field is never used, ReservedDataSize will always be 0.

ApplicationReservedDataOffset (4 bytes): The ApplicationReservedData field is not used by the DirectPlay DxDiag Usage Protocol, and therefore, the ApplicationReservedDataOffset field will always have a value of 0.

ApplicationReservedDataSize (4 bytes): The ApplicationReservedData field is not used by the DirectPlay DxDiag Usage Protocol, and therefore, the ApplicationReservedDataSize field will always have a value of 0.

ApplicationInstanceGUID (16 bytes): The instance GUID that identifies the game session.

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.

SessionName (variable): An array of Unicode characters that describes the game session name with the size specified by SessionSize and the offset from the beginning of the packet specified by SessionOffset.

Password (variable): The EnumResponse message will never contain a password as passwords are not utilized in the DirectPlay DxDiag Usage Protocol; therefore, this field is unused.

ReservedData (variable): This field was intended to be used for future extensions to the DirectPlay 8 Protocol, but was never used.

ApplicationReservedData (variable): This field is not used by the DirectPlay DxDiag Usage Protocol.

ApplicationData (variable): This field MUST be filled with zeroes on sending and MUST be ignored upon receipt.