2.2.4.1 SQM Header
Every SQM session uploaded in the HTTP POST body MUST begin with a SQM session header.
The SQM section header describes the SQM section data BLOB. The SQM section header is composed of two fields: a SectionType field and a SectionLength field.
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Signature |
|||||||||||||||||||||||||||||||
|
HeaderLength |
|||||||||||||||||||||||||||||||
|
Flags |
|||||||||||||||||||||||||||||||
|
DataChecksum |
|||||||||||||||||||||||||||||||
|
SectionCount |
|||||||||||||||||||||||||||||||
|
DataLength |
|||||||||||||||||||||||||||||||
|
ApplicationIdentifier |
|||||||||||||||||||||||||||||||
|
ApplicationVersionHigh |
|||||||||||||||||||||||||||||||
|
ApplicationVersionLow |
|||||||||||||||||||||||||||||||
|
ManifestVersion |
|||||||||||||||||||||||||||||||
|
ClientUploadTime |
|||||||||||||||||||||||||||||||
|
... |
|||||||||||||||||||||||||||||||
|
Reserved |
|||||||||||||||||||||||||||||||
|
... |
|||||||||||||||||||||||||||||||
|
ClientSessionStartTime |
|||||||||||||||||||||||||||||||
|
... |
|||||||||||||||||||||||||||||||
|
ClientSessionEndTime |
|||||||||||||||||||||||||||||||
|
... |
|||||||||||||||||||||||||||||||
|
ClientUniqueIdentifier |
|||||||||||||||||||||||||||||||
|
… |
|||||||||||||||||||||||||||||||
|
… |
|||||||||||||||||||||||||||||||
|
… |
|||||||||||||||||||||||||||||||
|
UserUniqueIdentifier |
|||||||||||||||||||||||||||||||
|
… |
|||||||||||||||||||||||||||||||
|
… |
|||||||||||||||||||||||||||||||
|
… |
|||||||||||||||||||||||||||||||
|
StudyIdentifier |
|||||||||||||||||||||||||||||||
|
InternalFlags |
|||||||||||||||||||||||||||||||
|
RawDataLength |
|||||||||||||||||||||||||||||||
|
RawDataChecksum |
|||||||||||||||||||||||||||||||
Signature (4 bytes): A 32-bit unsigned integer.<2>
HeaderLength (4 bytes): A 32-bit unsigned integer that specifies the length of the SQM header, in bytes.
Flags (4 bytes): A 32-bit unsigned integer. Bit positions 0 through 10 are reserved.<3>
DataChecksum (4 bytes): A 32-bit unsigned integer value specifying the checksum result of the SQM section data (compressed or uncompressed). In the following figure, the checksum is computed over area A followed by area B. The SQM client and SQM server SHOULD use the same algorithm.<4>
-

-
Figure 4: Checksum byte area in a SQM Upload
SectionCount (4 bytes): A 32-bit unsigned integer specifying the number of SQM sections in the uploaded data. This value MUST be specified. A value of 0x0 indicates there are no SQM sections.
DataLength (4 bytes): A 32-bit unsigned integer specifying the length of the SQM section data (compressed or uncompressed), in bytes. This value MUST be specified. A value of 0x0 indicates there is no SQM section data.
ApplicationIdentifier (4 bytes: ): A 32-bit unsigned integer specifying an application-defined identifier value. This value MUST be specified.
ApplicationVersionHigh (4 bytes): A 32-bit unsigned integer specifying an application-defined high order version value. This value MUST be specified.
ApplicationVersionLow (4 bytes): A 32-bit unsigned integer specifying an application-defined low order version value. This value MUST be specified.
ManifestVersion (4 bytes: ): A 32-bit unsigned integer specifying the client version of the A-SQM manifest. This value MUST be specified. A value of 0x0 means there is no client A-SQM manifest.
ClientUploadTime (8 bytes): A 64-bit FILETIME value specifying the time the client uploaded the data. This value MUST be specified. FILETIME is defined in [MS-RPCE] section 6.
Reserved (8 bytes): A 64-bit value. A value of 0x0 MUST be specified.
ClientSessionStartTime (8 bytes): A 64-bit FILETIME value specifying the client SQM session start time. This value MUST be specified.
ClientSessionEndTime (8 bytes): A 64-bit FILETIME value specifying the client SQM session end time. This value MUST be specified.
ClientUniqueIdentifier (16 bytes): A 128-bit globally unique identifier (GUID) that uniquely identifies the sending computer. This value MUST be specified.
UserUniqueIdentifier (16 bytes): A 128-bit GUID that identifies the computer user. This value MUST be specified. The client MAY specify a value of {00000000-0000-0000-0000-000000000000} to represent that no user identifier is specified.
StudyIdentifier (4 bytes): A 32-bit unsigned integer specifying the SQM partner namespace-specific study identifier. The value allows the client to classify data. This value MUST be specified. A value of 0x0 specifies no study identifier.
InternalFlags (4 bytes): A 32-bit unsigned integer bit mask that specifies attributes of the upload. The following bit values MUST be specified.
-
0
1
2
3
4
5
6
7
8
91
0
1
2
3
4
5
6
7
8
92
0
1
2
3
4
5
6
7
8
93
0
1A
B
C
Reserved
-
A - IsSessionDataCompressed (1 bit): A bit value that specifies if the binary data is compressed. A value of 0x0 specifies that the data is not compressed. A value of 0x1 specifies that the data is compressed.
-
B - Reserved (2 bits): Reserved. Bits MUST be specified as 0x0.
-
C - RequestManifestVersion (1 bit): A bit value specifying if the A-SQM manifest version is requested to be returned in the response. A value of 0x0 specifies that the A-SQM version for the SQM partner namespace is not returned in the response.
-
Reserved (28 bits): Bits MUST be specified as 0x0.
-
RawDataLength (4 bytes): A 32-bit unsigned integer specifying the length of the SQM section data before data compression, in bytes. This value MUST be specified if bit zero of the InternalFlags field has a value of 0x1.
RawDataChecksum (4 bytes): A 32-bit unsigned integer value specifying the checksum result of the SQM section data before data compression. This value MUST be specified if bit zero of the InternalFlags field has a value of 0x1. The SQM client and SQM server SHOULD use the same algorithm as specified in the DataChecksum description.