|
[ms-wsp]: Windows Search Protocol Intellectual Property Rights Notice for Open Specifications Documentation
|
bet | 13/28 | Sana | 25.03.2020 | Hajmi | 349,46 Kb. | | #8793 |
CFeedbackRestriction
The CFeedbackRestriction structure contains the number of relevant documents and a property specification for a relevance feedback query.
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
|
_cFeedbackDoc
|
_Property (variable)
|
...
|
_cFeedbackDoc (4 bytes): A 32-bit unsigned integer specifying the count of relevant documents.
_Property (variable): A CFullPropSpec structure, specifying a property.
CRestrictionArray
The CRestrictionArray structure contains an array of restriction nodes. The first two fields (count and isPresent) are not padded and will start where the previous structure in the message ended (as indicated by the "previous structure" entry in the diagram below). The 1-byte length of "previous structure" is arbitrary and is not meant to suggest that count will begin on any particular boundary. However, the Restriction field MUST be aligned to begin at a multiple of 4 bytes from the beginning of the message, and hence the format is depicted as follows.
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
|
(previous structure)
|
count
|
isPresent
|
_padding (variable)
|
...
|
Restriction (variable)
|
...
|
count (1 byte): An 8-bit unsigned integer specifying the number of CRestriction records contained in the Restriction field.
Note This field MUST be set to 0x01.
isPresent (1 byte): An 8-bit unsigned integer. MUST be set to one of the following values.
Value
|
Meaning
|
0x00
|
The _padding and Restriction fields are omitted.
|
0x01
|
The _padding and Restriction fields are present.
|
_padding (variable): This field MUST be 0 to 3 bytes in length. The length of this field MUST be such that the following field begins at an offset that is a multiple of 4 bytes from the beginning of the message that contains this structure. If this field is present (that is, length nonzero), the value it contains is arbitrary. The content of this field MUST be ignored by the receiver.
Note This field MUST be omitted if the value of isPresent is set to 0x00.
Restriction (variable): A CRestriction structure, specifying a node of a query command tree.
Note Restriction MUST be omitted if the value of isPresent is set to 0x00.
CRestriction
The CRestriction structure contains a restriction node in a query command tree.
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
|
_ulType
|
Weight
|
Restriction (variable)
|
...
|
_ulType (4 bytes): A 32-bit unsigned integer indicating the restriction type used for the command tree node. The type determines what is found in the Restriction field of the structure as described below. MUST be set to one of the following values.
Value
|
Meaning
|
RTNone
0x00000000
|
The node contains an empty Restriction (no value). It represents a node that would evaluate to no results. If under an RTNot node, the RTNot node would evaluate to the entire set of documents. If under an RTAnd node, the RTAnd node would also evaluate to no results. If under an RTOr node, the RTOr node would evaluate to whatever it would have evaluated to if the RTNone node was not there.
|
RTAnd
0x00000001
|
The node contains a CNodeRestriction on which a logical AND operation is to be performed. The CNodeRestriction contains the other restrictions that this operation is performed on.
|
RTOr
0x00000002
|
The node contains a CNodeRestriction on which a logical OR (disjunction) operation is to be performed. The CNodeRestriction contains the other restrictions that this operation is performed on.
|
RTNot
0x00000003
|
The node contains a CRestriction on which a NOT operation is to be performed.
|
RTContent
0x00000004
|
The node contains a CContentRestriction.
|
RTProperty
0x00000005
|
The node contains a CPropertyRestriction.
|
RTProximity
0x00000006
|
The node contains a CNodeRestriction with an array of CContentRestriction structures. Any other kind of restriction is undefined. The restriction requires the words or phrases found in the CContentRestriction structures to be within the GSS defined range in order to be a match. The WSS implementation computes a rank based on how far apart the words or phrases are. Implementations of the GSS can choose to do the same.
|
RTVector
0x00000007
|
The node contains a CVectorRestriction.
|
RTNatLanguage
0x00000008
|
The node contains a CNatLanguageRestriction.
|
RTScope
0x00000009
|
The node contains a CScopeRestriction.
|
RTReuseWhere
0x00000011
|
The node contains a CReuseWhere restriction.
|
RTInternalProp
0x00FFFFFA
|
The node contains a CInternalPropertyRestriction.
|
RTPhrase
0x00FFFFFD
|
The node contains a CNodeRestriction on which a phrase match is to be performed. The restrictions in the CNodeRestriction can only be a RTContent node. Otherwise, an error MUST be returned.
|
RTCoerce_Add
0x0000000A
|
The node contains a CCoercionRestriction structure with operation ADD, as specified in section 2.2.1.12.
|
RTCoerce_Multiply
0x0000000B
|
The node contains a CCoercionRestriction with structure operation MULTIPLY, as specified in section 2.2.1.12.
|
RTCoerce_Absolute
0x0000000C
|
The node contains a CCoercionRestriction structure with operation ABSOLUTE, as specified in section 2.2.1.12.
|
RTProb
0x0000000D
|
The node contains a CProbRestriction structure.
|
RTFeedback
0x0000000E
|
The node contains a CFeedbackRestriction structure.
|
RTReldoc
0x0000000F
|
The node contains a CRelDocRestriction structure.
|
Weight (4 bytes): A 32-bit unsigned integer representing the weight of the node. Weight indicates the node's importance relative to other nodes in the query command tree. This weight is used to calculate the rank of each node, although the exact effect of the weight is undefined. The guidance is that results from higher-weighted nodes usually return a higher rank than results from nodes that are the same but weighted lower. Implementers of the GSS may choose the exact algorithm.
Restriction (variable): The restriction type for the command tree node. The syntax MUST be as indicated by the _ulType field.
CColumnSet
The CColumnSet structure specifies the column numbers to be returned. This structure is always used in reference to a specific CPidMapper structure.
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
|
count
|
indexes (variable)
|
...
|
count (4 bytes): A 32-bit unsigned integer specifying the number of elements in the indexes array.
indexes (variable): An array of 4-byte unsigned integers each representing a zero-based index into the aPropSpec array in the corresponding CPidMapper structure. The corresponding property values are returned as columns in the result set.
CCategorizationSet
The CCategorizationSet structure contains information on how the grouping is done at each level in a hierarchical result set.
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
|
count
|
categories (variable)
|
...
|
count (4 bytes): A 32-bit unsigned integer containing the number of elements in the categories array.
categories (variable): Array of CCategorizationSpec structures specifying the grouping for each level in a hierarchical query. The first structure specifies the top level.
CCategorizationSpec
The CCategorizationSpec structure specifies how grouping is done at one level in a hierarchical query.
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
|
_csColumns (variable)
|
...
|
_Spec (variable)
|
...
|
_AggregSet (variable)
|
...
|
_SortAggregSet (variable)
|
...
|
_InGroupSortAggregSets (variable)
|
...
|
_cMaxResults
|
_csColumns (variable): A CColumnSet structure indicating the columns to return at that level in a hierarchical result set.
_Spec (variable): A CCategSpec structure specifying the type of categorization and the column for the group.
_AggregSet (variable): A CAggregSet structure specifying aggregate information for the group.
_SortAggregSet (variable): A CSortAggregSet structure specifying default sorting for the group.
_InGroupSortAggregSets (variable): A CInGroupSortAggregSets structure specifying sorting for the group with regard to the parent group's range boundaries.
_cMaxResults (4 bytes): A 32-bit unsigned integer. Reserved.
Note MUST be set to 0x00000000.
CCategSpec
The CCategSpec structure contains information about which grouping to perform over query results.
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
|
_ulCategType
|
_sortKey (16 bytes)
|
...
|
...
|
CRangeCategSpec (variable)
|
...
|
_ulCategType (4 bytes): MUST be set to one of the following values that indicates the type of grouping to perform.
Value
|
Meaning
|
CATEGORIZE_UNIQUE
0x00000000
|
Unique categorization. Each unique value forms a category.
|
CATEGORIZE_RANGE
0x00000003
|
Range categorization. Ranges are explicitly specified in CRangeCategSpec.
|
CATEGORIZE_COMPLETION
0x00000004
|
Categorization by completion suggestions. All the parameters for specifying how these groups are built are in CCompletionCategSpec.
|
_sortKey (16 bytes): A CSort structure, specifying the sort order for the group.
CRangeCategSpec (variable): A CRangeCategSpec structure specifying the range values. This field MUST be omitted if _ulCategType is set to CATEGORIZE_UNIQUE; otherwise it MUST be present.
CRangeCategSpec
The CRangeCategSpec structure contains information about ranges for grouping into range-specified buckets.
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
|
_lcid
|
cRange
|
aRangeBegin (variable)
|
...
|
_lcid (4 bytes): A 32-bit unsigned integer. Reserved. This field can be set to any arbitrary value when sent.
cRange (4 bytes): A 32-bit unsigned integer, indicating the number of RANGEBOUNDARY structures in aRangeBegin.
aRangeBegin (variable): An array of RANGEBOUNDARY structures, specifying a set of ranges for which grouping is performed. Note that the first range is from minimum value to the boundary, represented by the first RANGEBOUNDARY structure. The next range is from where the first boundary cut off to the boundary represented by the second RANGEBOUNDARY structure, and so on. The last range includes all the items greater than the last RANGEBOUNDARY structure to the maximum value. There will be a total of cRange + 1 ranges. Values with vType set to VT_NULL and VT_EMPTY are always in the last group, regardless of sort order.
RANGEBOUNDARY
The RANGEBOUNDARY structure contains a single range.
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
|
ulType
|
prVal (variable)
|
...
|
labelPresent
|
_padding (variable)
|
...
|
ccLabel
|
Label (variable)
|
...
|
ulType (4 bytes): A 32-bit unsigned integer that indicates which type of boundary is represented by this structure.
Note MUST be set to one of the following values.
Value
|
Meaning
|
DBRANGEBOUNDTTYPE_BEFORE
0x00000000
|
MUST only be used for Unicode string values in prVal. Items with a value less than the Unicode string immediately preceding prVal lexicographically are included in the range.
|
DBRANGEBOUNDTTYPE_EXACT
0x00000001
|
Items with a value less than prVal are included in the range.
|
DBRANGEBOUNDTTYPE_AFTER
0x00000002
|
MUST only be used for Unicode string values in prVal. Items with a value less than the Unicode string immediately after prVal lexicographically are included in the range.
|
For example, two RANGEBOUNDARY structures of DBRANGEBOUND_EXACT with a prVal of "a" and DBRANGEBOUND_AFTER with a prVal of "z" could be used to partition the full Unicode range into three buckets:
1. x < "a"
2. "a" <= x <= "z"
3. x > "z"
prVal (variable): A CBaseStorageVariant structure.
Note Indicates the value for the range boundary. If ulType is set to DBRANGEBOUNDTTYPE_BEFORE or DBRANGEBOUNDTTYPE_AFTER, then the vType field of prVal MUST be set to a string type (VT_BSTR, VT_LPWSTR, or VT_COMPRESSED_LPWSTR).
labelPresent (1 byte): An 8-bit unsigned integer. MUST be set to one of the following values.
Value
|
Meaning
|
0x00
|
The _padding, ccLabel, and Label fields are omitted.
|
0x01
|
The _padding, ccLabel, and Label fields are present.
|
_padding (variable): This field MUST be 0 to 3 bytes in length. The length of this field MUST be such that the following field begins at an offset that is a multiple of 4 bytes from the beginning of the message that contains this structure. If this field is present (that is, length is nonzero), the value it contains is arbitrary. The content of this field MUST be ignored by the receiver.
Note This field MUST be omitted if labelPresent is set to 0x00.
ccLabel (4 bytes): A 32-bit unsigned integer representing the number of characters in the Label field.
Note ccLabel MUST be omitted if labelPresent is set to 0x00; otherwise, it MUST be greater than zero.
Label (variable): A non-null-terminated Unicode string representing the label for this range. The ccLabel field contains the length of the string.
Note Label MUST be omitted if labelPresent is set to 0x00; otherwise, it MUST NOT be empty.
CAggregSet
The CAggregSet structure contains information about aggregates. Aggregate is a database concept for a field calculated using the information retrieved from the query. The different aggregates that are supported by GSS are defined in the CAggregSpec's type field (specified in section 2.2.1.25).
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
|
cCount
|
AggregSpecs (variable)
|
...
|
cCount (4 bytes): A 32-bit unsigned integer specifying the number of entries in AggregSpecs.
AggregSpecs (variable): An array of CAggregSpec structures, each describing individual aggregation.
CAggregSpec
The CAggregSpec structure contains information about an individual aggregate.
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
|
type
|
padding
|
ccAlias
|
Alias (variable)
|
...
|
idColumn
|
ulMaxNumToReturn (optional)
|
idRepresentative (optional)
|
type (1 byte): An 8-bit unsigned integer specifying the type of aggregation used. The type MUST be one of the following values.
Value
|
Meaning
|
DBAGGTTYPE_BYNONE
0x00
|
No aggregation is used.
|
DBAGGTTYPE_SUM
0x01
|
Sum of the idColumn property value from each result in the group. Valid only for numeric properties.
|
DBAGGTTYPE_MAX
0x02
|
Maximum value of the idColumn property value from each result in the group. Valid only for numeric or filetime properties.
|
DBAGGTTYPE_MIN
0x03
|
Minimum value of the idColumn property value from each result in the group. Valid only for numeric or filetime properties.
|
DBAGGTTYPE_AVG
0x04
|
Average value of the idColumn property value from each result in the group. Valid only for numeric properties.
|
DBAGGTTYPE_COUNT
0x05
|
Count of the number of leaf results in the group.
|
DBAGGTTYPE_CHILDCOUNT
0x06
|
Count of immediate children of the group.
|
DBAGGTTYPE_BYFREQ
0x07
|
Most frequent N idColumn values from the results in the group. Additionally includes a count for how many times each value occurred and a document identifier for a result that has each returned value.
|
DBAGGTTYPE_FIRST
0x08
|
First N idColumn values from leaf results found in a group.
|
DBAGGTTYPE_DATERANGE
0x09
|
Lower and upper bounds of the idColumn values found in the group results group. Only valid for filetime properties.
|
DBAGGTTYPE_REPRESENTATIVEOF
0x0a
|
N idRepresentative values, each selected from one of the result subsets that have a unique idColumn value. Each value is also returned with a document identifier that has the idRepresentative value.
|
DBAGGTTYPE_EDITDISTANCE
0x0b
|
Edit distance between the results in a completion group and the primary query string in the Completions grouping clause, as specified in CCompletionCategSpec.
|
padding (3 bytes): This field MUST be 3 bytes in length, and the value it contains is arbitrary. The content of this field MUST be ignored by the receiver.
ccAlias (4 bytes): A 32-bit unsigned integer specifying the number of characters in the Alias field.
Alias (variable): A non-null-terminated Unicode string that represents the alias name for the aggregate. The ccAlias field contains the length of the string.
idColumn (4 bytes): Property ID for the column to be aggregated over.
ulMaxNumToReturn (4 bytes): An optional 32-bit unsigned integer that is the number of elements to return for First, ByFreq, and RepresentativeOf aggregates.
idRepresentative (4 bytes): An optional 32-bit unsigned integer that is the representative property ID requested for the RepresentativeOf aggregate.
CSortAggregSet
The CSortAggregSet structure contains information about group sorting.
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
|
cCount
|
SortKeys (variable)
|
...
|
cCount (4 bytes): A 32-bit unsigned integer specifying the number of entries in SortKeys.
SortKeys (variable): An array of CAggregSortKey structures, each describing a sort order.
CAggregSortKey
The CAggregSortKey structure contains information about sort order over single column.
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
|
order
|
ColumnSpec (variable)
|
...
|
order (4 bytes): A 32-bit unsigned integer specifying sort order. MUST be set to one of the following values.
Value
|
Meaning
|
QUERY_SORTASCEND
0x00000000
|
The rows are to be sorted in ascending order based on the values in the column specified.
|
QUERY_DESCEND
0x00000001
|
The rows are to be sorted in descending order based on the values in the column specified.
|
ColumnSpec (variable): A CAggregSpec structure specifying which column to sort by.
CInGroupSortAggregSets
The CInGroupSortAggregSets structure contains information on how the group is sorted with regard to the parent's group ranges.
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
|
cCount
|
SortSets (variable)
|
...
|
cCount (4 bytes): A 32-bit unsigned integer specifying the number of entries in SortSets.
SortSets (variable): An array of CInGroupSortAggregSet structures.
CInGroupSortAggregSet
A CInGroupSortAggregSet structure specifies a sort order for a single range in the parent's group.
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
|
type
|
Padding
|
_inGroupId (variable)
|
...
|
SortAggregSet (variable)
|
...
|
type (1 byte): An 8-bit unsigned integer specifying the type of range in the parent's group. type MUST be set to one of the following values.
Value
|
Meaning
|
GroupIdDefault
0x00
|
The default for all ranges.
|
GroupIdMinValue
0x01
|
The first range in the parent's group.
|
GroupIdNull
0x02
|
The last range in the parent's group.
|
GroupIdValue
0x03
|
The range with a particular range boundary value in the parent's group.
|
Padding (3 bytes): This field MUST be 3 bytes in length and the value it contains is arbitrary. The content of this field MUST be ignored by the receiver.
_inGroupId (variable): A CBaseStorageVariant structure that contains a value representing a range in the parent's group. This field MUST not be present if type is not equal to GroupIdValue.
SortAggregSet (variable): A CSortSet structure, specifying the sort order for the range in the parent's group.
CDbColId
The CDbColId structure contains a column identifier.
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
|
eKind
|
paddingGuidAlign (variable)
|
...
|
GUID (16 bytes)
|
...
|
...
|
ulId
|
vString (variable)
|
...
|
eKind (4 bytes): MUST be set to one of the following values that indicates the contents of GUID and vValue.
Value
|
Meaning
|
DBKIND_GUID_NAME
0x00000000
|
vString contains a property name.
|
DBKIND_GUID_PROPID
0x00000001
|
ulId contains a 4-byte integer indicating the property ID.
|
paddingGuidAlign (variable): This field MUST be 0 to 8 bytes in length. The length of this field MUST be such that the following field begins at an offset that is a multiple of 8 bytes from the beginning of the message that contains this structure. If this field is present (that is, length nonzero), the value it contains is arbitrary. The content of this field MUST be ignored by the receiver.
GUID (16 bytes): The property GUID.
ulId (4 bytes): If eKind is DBKIND_GUID_PROPID, this field contains an unsigned integer specifying the property ID. If eKind is DBKIND_GUID_NAME, this field contains an unsigned integer specifying the number of Unicode characters contained in the vString field.
vString (variable): A non-null-terminated Unicode string representing the property name. It MUST be omitted unless the eKind field is set to DBKIND_GUID_NAME.
CDbProp
The CDbProp structure contains a database property. These properties control how queries are interpreted by the GSS.
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
|
DBPROPID
|
DBPROPOPTIONS
|
DBPROPSTATUS
|
colid (variable)
|
...
|
vValue (variable)
|
...
|
DBPROPID (4 bytes): A 32-bit unsigned integer indicating the property ID. This field uniquely identifies each property in a particular query, but has no other interpretation.
DBPROPOPTIONS (4 bytes): Property options. This field MUST be set to 0x00000001 if the property is optional and to 0x00000000 otherwise.
DBPROPSTATUS (4 bytes): Property status.
Note DBPROPSTATUS MUST be set to 0x00000000.
colid (variable): A CDbColId structure that defines the database property being passed.
vValue (variable): A CBaseStorageVariant containing the property value.
Database Properties
This section details the properties that are used by the Windows Search Protocol to control the behavior of the GSS. These properties are grouped into three property sets, identified in the guidPropertySet field of the CDbPropSet structure.
The following table lists the properties that are part of the DBPROPSET_FSCIFRMWRK_EXT property set.
Value
|
Meaning
|
DBPROP_CI_CATALOG_NAME
0x00000002
|
Specifies the name of the catalog or catalogs to query. The value MUST be a VT_LPWSTR or a VT_VECTOR | VT_LPWSTR.
|
DBPROP_CI_INCLUDE_SCOPES
0x00000003
|
Specifies one or more paths to be included in the query. The value MUST be a VT_LPWSTR or a VT_VECTOR | VT_LPWSTR.
|
DBPROP_CI_SCOPE_FLAGS
0x00000004
|
Specifies how the paths specified by the DBPROP_CI_INCLUDE_SCOPES property are to be treated. The value MUST be a VT_I4 or a VT_VECTOR | VT_I4.
|
DBPROP_CI_QUERY_TYPE
0x00000007
|
Specifies the type of query using a CDbColId structure. The structure MUST be set such that the eKind field contains 0x00000001 and the GUID and ulID fields are filled with zeros.
|
The following table lists the flags for the DBPROP_CI_SCOPE_FLAGS property.
Value
|
Meaning
|
QUERY_DEEP
0x01
|
If set, indicates that files in the scope directory and all subdirectories are included in the results. If clear, only files in the scope directory are included in the results.
|
QUERY_VIRTUAL_Path
0x02
|
If set, indicates that the scope is a virtual path. If clear, indicates that the scope is a physical directory.
|
The following table lists the query types for the DBPROP_CI_QUERY_TYPE property.
Value
|
Meaning
|
CiNormal
0x00000000
|
A regular query.
|
The following table lists the properties that are part of the DBPROPSET_QUERYEXT property set.
Value
|
Meaning
|
DBPROP_USECONTENTINDEX
0x00000002
|
Use the inverted index to optimize the speed of evaluating content restrictions at the cost of the index possibly being out of date. The value MUST be a VT_BOOL. If TRUE, the server is allowed to fail these queries.
|
DBPROP_DEFERNONINDEXEDTRIMMING 0x00000003
|
Some operations, such as filtering by scope or security, can be expensive. This flag indicates that it is acceptable to defer this filtering until the results are actually requested. The value MUST be a VT_BOOL.
|
DBPROP_USEEXTENDEDDBTYPES 0x00000004
|
Indicates if the client supports VT_VECTOR data types. If TRUE, the client supports VT_VECTOR; if FALSE, the server is to convert VT_VECTOR data types to VT_ARRAY data types. The value MUST be a VT_BOOL.
|
DBPROP_FIRSTROWS
0x00000007
|
If TRUE, the GSS returns the first rows that match. If FALSE, then rows by default are returned in order of descending rank. The value MUST be a VT_BOOL.
|
DBPROP_ENABLEROWSETEVENTS
0x00000010
|
If TRUE, this indicates that the server generates rowset events that are relevant to the associated query.This value MUST be a VT_BOOL.
|
The following table lists the properties that are part of the DBPROPSET_CIFRMWRKCORE_EXT property set.
Value
|
Meaning
|
DBPROP_MACHINE
0x00000002
|
Specifies the names of the computers on which a query is to be processed. The value MUST be either VT_BSTR or VT_ARRAY | VT_BSTR.
|
DBPROP_CLIENT_CLSID
0x00000003
|
Specifies a connection constant for the GSS. The value MUST be a VT_CLSID containing 0x2A4880706FD911D0A80800A0C906241A.
|
CDbPropSet
The CDbPropSet structure contains a set of properties. The first field (guidPropertySet) is not padded and will start where the previous structure in the message ended (as indicated by the "previous structure" entry in the diagram below). The 1-byte length of "previous structure" is arbitrary and is not meant to suggest that guidPropertySet will begin on any particular boundary. However, the cProperties field MUST be aligned to begin at a multiple of 4 bytes from the beginning of the message, and hence the format, is depicted as follows.
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
|
(previous structure)
|
guidPropertySet (16 bytes)
|
...
|
...
|
...
|
_padding (variable)
|
...
|
cProperties
|
aProps (variable)
|
...
|
guidPropertySet (16 bytes): A GUID identifying the property set. MUST be set to the binary form corresponding to one of the following values (shown in string representation form), identifying the property set of the properties contained in the aProps field.
Value/GUID
|
Meaning
|
DBPROPSET_FSCIFRMWRK_EXT
A9BD1526-6A80-11D0-8C9D-0020AF1D740E
|
File system content index framework property set.
|
DBPROPSET_QUERYEXT
A7AC77ED-F8D7-11CE-A798-0020F8008025
|
Query extension property set.
|
DBPROPSET_CIFRMWRKCORE_EXT
AFAFACA5-B5D1-11D0-8C62-00C04FC2DB8D
|
Content index framework core property set.
|
_padding (variable): This field MUST be 0 to 3 bytes in length. The length of this field MUST be such that the following field begins at an offset that is a multiple of 4 bytes from the beginning of the message that contains this structure. If this field is present (that is, length nonzero), the value it contains is arbitrary. The content of this field MUST be ignored by the receiver.
cProperties (4 bytes): A 32-bit unsigned integer containing the number of elements in the aProps array.
aProps (variable): An array of CDbProp structures containing properties. Structures in the array MUST be separated by 0 to 3 padding bytes such that each structure begins at an offset that is a multiple of 4 bytes from the beginning of the message that contains this array. If padding bytes are present, the value they contain is arbitrary. The content of the padding bytes MUST be ignored by the receiver.
CPidMapper
The CPidMapper structure contains an array of property specifications and serves to map from a property offset to a full property specification. The more compact property offsets are used to name properties in other parts of the protocol. Since offsets are more compact, they allow shorter property references in other parts of the protocol.
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
|
count
|
paddingPropSpec (variable)
|
...
|
aPropSpec (variable)
|
...
|
count (4 bytes): A 32-bit unsigned integer containing the number of elements in the aPropSpec array.
paddingPropSpec (variable): This field MUST be 0 to 4 bytes in length. The length of this field MUST be such that the byte offset from the beginning of the message to the first structure contained in the aPropSpec field is a multiple of 8. The value of the bytes can be any arbitrary value and MUST be ignored by the receiver.
aPropSpec (variable): Array of CFullPropSpec structures indicating the properties to return. Each CFullPropSpec in the array MUST be separated by 0 to 3 padding bytes such that each structure has a 4-byte alignment from the beginning of a message. Such padding bytes can be set to any arbitrary value when sent and MUST be ignored on receipt.
CColumnGroupArray
The CColumnGroupArray structure contains a set of property groups with weights for each property.
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
|
count
|
aGroupArray (variable)
|
...
|
count (4 bytes): A 32-bit unsigned integer containing the number of elements in the aGroupArray array.
aGroupArray (variable): An array of CColumnGroup structures indicating individual weights for each property, which are used in probabilistic ranking. Structures in the array MUST be separated by 0 to 3 padding bytes such that each structure has a 4-byte alignment from the beginning of a message. Such padding bytes can be set to any arbitrary value when sent and MUST be ignored on receipt.
CColumnGroup
The CColumnGroup structure contains information about a property's weight in a single group.
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
|
count
|
_groupPid
|
Props (variable)
|
...
|
count (4 bytes): A 32-bit unsigned integer containing the number of elements in the Props array.
_groupPid (4 bytes): A 32-bit unsigned integer specifying group ID, a full property specification that can be used in the corresponding CProbRestriction. The value of _groupPid MUST satisfy the following result: (0xFFFF0000 & _groupPid) == 0x7FFF0000.
Props (variable): An array of SProperty structures, each specifying a PID and a weight for a property.
SProperty
The SProperty structure contains information about single property weight.
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
|
_pid
|
_weight
|
_pid (4 bytes): A 32-bit unsigned integer specifying a property identifier.
_weight (4 bytes): A 32-bit unsigned integer specifying the weight to be used in probabilistic ranking.
CRowSeekAt
The CRowSeekAt structure contains the offset at which to retrieve rows in a CPMGetRowsIn message.
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
|
_bmkOffset
|
_cskip
|
_hRegion
|
_bmkOffset (4 bytes): A 32-bit value representing the handle of the bookmark indicating the starting position from which to skip the number of rows specified in _cskip, before beginning retrieval.
_cskip (4 bytes): A 32-bit unsigned integer containing the number of rows to skip in the rowset.
_hRegion (4 bytes): A 32-bit unsigned integer.
Note This field MUST be set to 0x00000000 and MUST be ignored.
CRowSeekAtRatio
The CRowSeekAtRatio structure identifies the point at which to begin retrieval for a CPMGetRowsIn message.
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
|
_ulNumerator
|
_ulDenominator
|
_hRegion
|
_ulNumerator (4 bytes): A 32-bit unsigned integer representing the numerator of the ratio of rows in the chapter at which to begin retrieval.
_ulDenominator (4 bytes): A 32-bit unsigned integer representing the denominator of the ratio of rows in the chapter at which to begin retrieval. This MUST be greater than zero.
_hRegion (4 bytes): A 32-bit unsigned integer.
Note This field MUST be set to 0x00000000 and MUST be ignored.
CRowSeekByBookmark
The CRowSeekByBookmark structure identifies the bookmarks from which to begin retrieving rows for a CPMGetRowsIn message.
Note The bookmark handles are first retrieved with a CPMGetRowsOut message. Once retrieved, they can be used, as part of the CRowSeekByBookmark structure, to retrieve the bookmarked data using a CPMGetRowsIn message.
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
|
_cBookmarks
|
_aBookmarks (variable)
|
...
|
_maxRet
|
_ascRet (variable)
|
...
|
_cBookmarks (4 bytes): A 32-bit unsigned integer representing the number of elements in _aBookmarks array.
_aBookmarks (variable): An array of bookmark handles (each represented by 4 bytes), as obtained from a previous CPMGetRowsOut message.
_maxRet (4 bytes): A 32-bit unsigned integer representing the number of elements in the _ascRet array.
_ascRet (variable): An array of HRESULT values. When the CRowSeekByBookmark is sent as part of the CPMGetRowsIn request, the number of entries in the array MUST be equal to _maxRet. When sent by the client, MUST be set to zero when sent and MUST be ignored on receipt. When sent by the server (as part of the CPMGetRowsOut message), the values in the array indicate the result status for each row retrieval.
CRowSeekNext
The CRowSeekNext structure contains the number of rows to skip in a CPMGetRowsIn message.
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
|
_cskip
|
_cskip (4 bytes): A 32-bit unsigned integer representing the number of rows to skip in the rowset.
CRowsetProperties
The CRowsetProperties structure contains configuration information for a query.
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
|
_uBooleanOptions
|
_ulMaxOpenRows
|
_ulMemoryUsage
|
_cMaxResults
|
_cCmdTimeout
|
_uBooleanOptions (4 bytes): The least significant 3 bits of this field MUST contain one of the following three values.
Value
|
Meaning
|
eSequential
0x00000001
|
The cursor can only be moved forward.
|
eLocatable
0x00000003
|
The cursor can be moved to any position.
|
eScrollable
0x00000007
|
The cursor can be moved to any position and fetch in any direction.
|
The remaining bits can be clear or set to any combination of the following values logically ORed together.
Value
|
Meaning
|
eAsynchronous
0x00000008
|
The client will not wait for execution completion.
|
eFirstRows
0x00000080
|
Return the first rows encountered, not the best matches.
|
eHoldRows
0x00000200
|
The server MUST NOT discard rows until the client is done with a query.
|
eChaptered
0x00000800
|
The rowset supports chapters.
|
eUseCI
0x00001000
|
Use the inverted index to evaluate content restrictions even if it is out of date. If not set, the GSS can opt to execute the query by going directly against the file system.
|
eDeferTrimming
0x00002000
|
Non-indexed trimming operations like scoping or security checking can be expensive. This option gives the GSS the option of deferring these operations until rows are actually requested.
|
eEnableRowsetEvents
0x00800000
|
Enables storage of rowset events on the server side. (For information about how to retrieve stored events, see the CPMGetRowsetNotifyIn message.)
|
eDoNotComputeExpensiveProps
0x00400000
|
Prevents computation of expensive properties. Windows implementations treat cRowsTotal, _maxRank, and _cResultsFound (as specified in CPMGetQueryStatusExOut (section 2.2.3.9)) as expensive properties. Other implementations could choose different properties and mark them as expensive.
|
_ulMaxOpenRows (4 bytes): A 32-bit unsigned integer.
Note This field MUST be set to 0x00000000. It is not used and MUST be ignored.
_ulMemoryUsage (4 bytes): A 32-bit unsigned integer.
Note This field MUST be set to 0x00000000. It is not used and MUST be ignored.
_cMaxResults (4 bytes): A 32-bit unsigned integer specifying the maximum number of rows that are to be returned for the query.
_cCmdTimeout (4 bytes): A 32-bit unsigned integer, specifying the number of seconds at which a query is to time out and automatically terminate, counting from the time the query starts executing on the server.
Note A value of 0x00000000 means that the query is not to time out.
CRowVariant
The CRowVariant structure contains the fixed-size portion of a variable length data type stored in the CPMGetRowsOut message.
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
|
vType
|
reserved1
|
reserved2
|
Offset (variable)
|
...
|
vType (2 bytes): A type indicator, indicating the type of vValue. It MUST be one of the values under the vType field, as specified in section 2.2.1.1.
reserved1 (2 bytes): Not used. Can be set to any arbitrary value when sent and it MUST be ignored on receipt.
reserved2 (4 bytes): Not used. Can be set to any arbitrary value when sent and it MUST be ignored on receipt.
Offset (variable): An offset to variable length data (for example, a string). This MUST be a 32-bit value (4 bytes long) if 32-bit offsets are being used (per the rules in section 2.2.3.12), or a 64-byte value (8 bytes long) if 64-bit offsets are being used.
CSortSet
The CSortSet structure contains the sort order of the query.
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
|
count
|
sortArray (variable)
|
...
|
count (4 bytes): A 32-bit unsigned integer specifying the number of elements in sortArray.
sortArray (variable): An array of CSort structures describing the order in which to sort the results of the query. Structures in the array MUST be separated by 0 to 3 padding bytes such that each structure has a 4-byte alignment from the beginning of a message. Such padding bytes can be set to any arbitrary value when sent and MUST be ignored on receipt.
CTableColumn
The CTableColumn structure contains a column of a CPMSetBindingsIn message.
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
|
PropSpec (variable)
|
...
|
vType
|
AggregateUsed
|
AggregateType
|
ValueUsed
|
_padding1 (optional)
|
ValueOffset (optional)
|
ValueSize (optional)
|
StatusUsed
|
_padding2 (optional)
|
StatusOffset (optional)
|
LengthUsed
|
_padding3 (optional)
|
LengthOffset (optional)
|
PropSpec (variable): A CFullPropSpec structure.
vType (4 bytes): A 32-bit unsigned integer that specifies the type of data value contained in the column. See the vType field in section 2.2.1.1 for the list of values for this field.
AggregateUsed (1 byte): MUST be set to one of the following values.
Value
|
Meaning
|
0x00
|
No aggregation is used, and the AggregateType field MUST NOT be present.
|
0x01
|
This column is used to aggregate the values for query results, as specified in AggregateType.
|
AggregateType (1 byte): This field MUST be set to one of the aggregation type values specified under the type field in section 2.2.1.25.
ValueUsed (1 byte): A 1-byte field that MUST be set to one of the following values.
Value
|
Meaning
|
0x00
|
The value of the column is not transferred in the row.
|
0x01
|
The value of the column is transferred within the row.
|
_padding1 (1 byte): A padding field.
Note This field MUST be inserted before ValueOffset if, without it, ValueOffset would not begin at an even offset from the beginning of the message. The value of this byte is arbitrary and MUST be ignored. If ValueUsed is set to 0x00, this field MUST NOT be present.
ValueOffset (2 bytes): An unsigned 2-byte integer specifying the offset of the column value in the row. If ValueUsed is set to 0x00, this field MUST NOT be present.
ValueSize (2 bytes): An unsigned 2-byte integer specifying the size of the column value in bytes. If ValueUsed is set to 0x00, this field MUST NOT be present.
StatusUsed (1 byte): MUST be set to one of the following values.
Value
|
Meaning
|
0x00
|
The status of the column is not transferred within the row.
|
0x01
|
The status of the column is transferred within the row.
|
_padding2 (1 byte): A padding field.
Note This field MUST be inserted before StatusOffset if, without it, the StatusOffset field would not begin at an even offset from the beginning of the message. The value of this byte is arbitrary and MUST be ignored. If StatusUsed is set to 0x00, this field MUST NOT be present.
StatusOffset (2 bytes): An unsigned 2-byte integer.
Note Specifies the offset of the column status in the row. If StatusUsed is set to 0x00, this field MUST NOT be present.
LengthUsed (1 byte): A 1-byte field that MUST be set to one of the following values.
Value
|
Meaning
|
0x00
|
The length of the column MUST NOT be transferred within the row.
|
0x01
|
The length of the column is transferred within the row.
|
_padding3 (1 byte): A padding field.
Note This field MUST be inserted before LengthOffset if, without it, LengthOffset would not begin at an even offset from the beginning of a message. The value of this byte is arbitrary and MUST be ignored. If LengthUsed is set to 0x00, this field MUST NOT be present.
LengthOffset (2 bytes): An unsigned 2-byte integer specifying the offset of the column length in the row. In CPMGetRowsOut, length is represented by a 32-bit unsigned integer by the offset specified in LengthOffset. If LengthUsed is set to 0x00, this field MUST NOT be present.
SERIALIZEDPROPERTYVALUE
The SERIALIZEDPROPERTYVALUE structure contains a serialized value.
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
|
dwType
|
rgb (variable)
|
...
|
dwType (4 bytes): One of the variant types, as defined in section 2.2.1.1, that can be combined with variant type modifiers. For all variant types, except those combined with VT_ARRAY, SERIALIZEDPROPERTYVALUE has the same layout as CBaseStorageVariant. If the variant type is combined with the VT_ARRAY type modifier, SAFEARRAY2 is used instead of SAFEARRAY in the vValue field of CBaseStorageVariant.
rgb (variable): Serialized value. The serialization depends on the value of dwType, which is used identically to the vValue field in section 2.2.1.1. The process used to serialize rgb is the same as that described in section 2.2.1.1.
CCompletionCategSpec
The CCompletionCategSpec structure contains the specification for building groups of search completion suggestions.
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
|
type
|
lcid
|
cComplStrings
|
apszComplStrings (variable)
|
...
|
cComplPids
|
aComplPids (variable)
|
...
|
type (4 bytes): A 32-bit unsigned integer. 0 for fuzzy matching, 1 for exact. A match is exact if it is a prefix of any of the strings specified by apszComplStrings. Fuzzy matching specifies that the server should return results that are similar to the primary query string for a server-defined definition of "similar".
lcid (4 bytes): A 32-bit unsigned integer, indicating the locale ID of the query strings.
cComplStrings (4 bytes): A 32-bit unsigned integer, indicating how many query strings will follow.
apszComplStrings (variable): An array of SERIALIZEDPROPERTYVALUE structures. Each structure represents a single query string. The first is the primary query string, and it is the structure that will be fuzzy-matched if the type value indicates fuzzy matching. The rest of the query strings are always matched by exact prefix. There will be a total of cComplStrings values.
cComplPids (4 bytes): A 32-bit unsigned integer, indicating how many PIDs will follow.
aComplPids (variable): An array of 32-bit unsigned integers. Each one is a PID representing a property that can be matched against for search completion values. If no PIDs are provided, all PIDs that are included in the index of completion strings are considered for matches. There will be cComplPids PIDs.
|
| |