2.2.1.4 HARD_DISCONNECT

The HARD_DISCONNECT packet is used to quickly disconnect or acknowledge quick disconnection without waiting for remaining packets to be delivered.


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

bCommand

bExtOpCode

bMsgID

bRspId

dwCurrentProtocolVersion

dwSessID

tTimestamp

ullSignature (optional)

...

bCommand (1 byte): The command-code bitmask that contains values that are combined by using the bitwise OR operation from the following table. The PACKET_COMMAND_CFRAME flag MUST be set. The PACKET_COMMAND_POLL flag SHOULD NOT be set. All other bits MUST be set to zero and the packet MUST be ignored if they are not.

Value

Meaning

0x80

PACKET_COMMAND_CFRAME (command frame (CFRAME))

0x08

PACKET_COMMAND_POLL (acknowledge immediately)

bExtOpCode (1 byte): An extended operation code. It MUST be set to the following value:

Value

Meaning

0x04

FRAME_EXOPCODE_HARD_DISCONNECT

bMsgID (1 byte): The message identifier. The value SHOULD be the next  incremented value after the bMsgID value used when sending the previous CFRAME message of any type other than SACK, but the actual value used by a sender MUST be ignored on receipt.

bRspId (1 byte): The response identifier. This value SHOULD be set to zero, unless the connection is using PACKET_SIGNING_FULL; in which case, it MUST be set to the sequence ID of the next data frame (DFRAME) that would have been sent had HARD_DISCONNECT not occurred.

dwCurrentProtocolVersion (4 bytes): The version number, in little-endian byte order, of the requestor's DirectPlay 8 Protocol. The value SHOULD match the value previously sent in a CONNECT, CONNECTED, or CONNECTED_SIGNED packet, and MUST be ignored on receipt.

dwSessID (4 bytes): The session identifier. This value MUST be set to the same dwSessID value that is specified in the CONNECT message originally associated with the connection.

tTimestamp (4 bytes): The sender's computer system tick count, in millisecond units, specified in little-endian byte order.

ullSignature (8 bytes): If the connection was established using signing, this MUST be the signature of the packet using the agreed-upon signing algorithm. The packet sequence ID to be used in the calculation is the value in bRspId. This field MUST NOT be present if signing is not enabled for the connection.