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.
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
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.