7 endpoint("ncacn_np:[\\pipe\\MsFteWds]"),
8 helpstring("Windows Search WSP Protocol"),
9 helper
("../librpc/wsp/wsp_helper.h"),
10 pointer_default(unique)
15 typedef [public] struct {
17 * hack to allow wsp_cbasestoragevariant to be used before
20 wsp_cbasestoragevariant
variant[SINGLE_ITEM
];
23 /* MS-WSP 2.2.1.1.1.1 DECIMAL */
24 typedef [public] struct {
30 /* MS-WSP 2.2.1.1.1.2 VT_VECTOR (VT_DECIMAL) */
31 typedef [public] struct {
32 uint32 vvector_elements
;
33 vt_decimal vvector_data
[vvector_elements
];
37 * variant elements in a vector (and presumably safearray also)
38 * must be aligned to 4-byte boundary, think this is automatic for
39 * elements which are structures
42 /* MS-WSP see vValue details in 2.2.1.1 (VT_BSTR) */
43 typedef [public] struct {
44 [value
(strlen_m_term
(value
)*2)] uint32 nbytes
;
45 [flag
(STR_NULLTERM
)] string value
;
48 /* MS-WSP 2.2.1.1.1.2 VT_VECTOR (VT_BSTR) */
49 typedef [public] struct {
50 uint32 vvector_elements
;
51 vt_bstr vvector_data
[vvector_elements
];
54 /* MS-WSP see vValue details in 2.2.1.1 (VT_LPWSTR) */
55 typedef [public] struct {
56 [value
(strlen_m_term
(value
))] uint32 nbytes
;
57 [flag
(STR_NULLTERM
)] string value
;
60 /* MS-WSP 2.2.1.1.1.2 VT_VECTOR (VT_LPWSTR) */
61 typedef [public] struct {
62 uint32 vvector_elements
;
63 vt_lpwstr vvector_data
[vvector_elements
];
66 /* MS-WSP see vValue details in 2.2.1.1 (VT_COMPRESSED_LPWSTR) */
67 typedef [public] struct {
70 } vt_compressed_lpwstr
;
72 /* MS-WSP 2.2.1.1.1.2 VT_VECTOR (VT_COMPRESSED_LPWSTR) */
73 typedef [public] struct {
74 uint32 vvector_elements
;
75 vt_compressed_lpwstr vvector_data
[vvector_elements
];
76 } vt_compressed_lpwstr_vec
;
79 /* MS-WSP 2.2.1.1.1.2 VT_VECTOR (VT_I1) */
80 typedef [public] struct {
81 uint32 vvector_elements
;
82 int8 vvector_data
[vvector_elements
];
85 /* MS-WSP 2.2.1.1.1.2 VT_VECTOR (VT_UI1) */
86 typedef [public] struct {
87 uint32 vvector_elements
;
88 uint8 vvector_data
[vvector_elements
];
91 /* MS-WSP 2.2.1.1.1.2 VT_VECTOR (VT_I2) */
92 typedef [public] struct {
93 uint32 vvector_elements
;
94 int16 vvector_data
[vvector_elements
];
97 /* MS-WSP 2.2.1.1.1.2 VT_VECTOR (VT_UI2) */
98 typedef [public] struct {
99 uint32 vvector_elements
;
100 uint16 vvector_data
[vvector_elements
];
103 /* MS-WSP 2.2.1.1.1.2 VT_VECTOR (VT_I4) */
104 typedef [public] struct {
105 uint32 vvector_elements
;
106 int32 vvector_data
[vvector_elements
];
109 /* MS-WSP 2.2.1.1.1.2 VT_VECTOR (VT_UI4) */
110 typedef [public] struct {
111 uint32 vvector_elements
;
112 uint32 vvector_data
[vvector_elements
];
115 /* MS-WSP 2.2.1.1.1.2 VT_VECTOR (VT_I8) */
116 typedef [public] struct {
117 uint32 vvector_elements
;
118 dlong vvector_data
[vvector_elements
];
121 /* MS-WSP 2.2.1.1.1.2 VT_VECTOR (VT_UI8) */
122 typedef [public] struct {
123 uint32 vvector_elements
;
124 udlong vvector_data
[vvector_elements
];
127 /* MS-WSP 2.2.1.1.1.2 VT_VECTOR (VT_CLSID) */
128 typedef [public] struct {
129 uint32 vvector_elements
;
130 GUID vvector_data
[vvector_elements
];
133 /* MS-WSP 2.2.1.1.1.2 VT_VECTOR (VT_VARIANT) wrapped version */
134 typedef [public] struct {
135 uint32 vvector_elements
;
136 vt_variant_wrap vvector_data
[vvector_elements
];
137 } vt_variant_wrap_vec
;
140 * would be great if there some way to specify the above like below
141 * instead of having a vector
142 * for each element type e.g. see vt_lpwstr_vec, vt_bstr_vec & vt_i4_vec?
143 * typedef [public] struct {
145 * variant_types vec[num];
149 /* MS-WSP 2.2.1.1.1.4 SAFEARRAYBOUND */
150 typedef [public] struct {
155 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_I4) */
156 typedef [public] struct {
160 safearraybound rgsabound
[cdims
];
161 int32 vdata
[calc_array_size
(rgsabound
, cdims
)];
164 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_UI4) */
165 typedef [public] struct {
169 safearraybound rgsabound
[cdims
];
170 uint32 vdata
[calc_array_size
(rgsabound
, cdims
)];
173 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_BSTR) */
174 typedef [public] struct {
178 safearraybound rgsabound
[cdims
];
179 vt_bstr vdata
[calc_array_size
(rgsabound
, cdims
)];
180 } vt_bstr_safe_array
;
183 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_I1) */
184 typedef [public] struct {
188 safearraybound rgsabound
[cdims
];
189 int8 vdata
[calc_array_size
(rgsabound
, cdims
)];
192 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_UI1) */
193 typedef [public] struct {
197 safearraybound rgsabound
[cdims
];
198 uint8 vdata
[calc_array_size
(rgsabound
, cdims
)];
202 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_I2) */
203 typedef [public] struct {
207 safearraybound rgsabound
[cdims
];
208 int16 vdata
[calc_array_size
(rgsabound
, cdims
)];
212 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_UI2) */
213 typedef [public] struct {
217 safearraybound rgsabound
[cdims
];
218 uint16 vdata
[calc_array_size
(rgsabound
, cdims
)];
221 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_I8) */
222 typedef [public] struct {
226 safearraybound rgsabound
[cdims
];
227 dlong vdata
[calc_array_size
(rgsabound
, cdims
)];
228 } vt_dlong_safe_array
;
230 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_VARIANT) */
231 typedef [public] struct {
235 safearraybound rgsabound
[cdims
];
236 vt_variant_wrap vdata
[calc_array_size
(rgsabound
, cdims
)];
237 } vt_variant_wrap_safearray
;
239 typedef [public,nodiscriminant
,switch_type(uint16
)] union {
240 [case(VT_I1
)] int8 vt_i1
;
241 [case(VT_I1 | VT_ARRAY
)] vt_i1_safe_array vt_i1_array
;
242 [case(VT_I1 | VT_VECTOR
)] vt_i1_vec vt_i1_vec
;
244 [case(VT_UI1
)] uint8 vt_ui1
;
245 [case(VT_UI1 | VT_ARRAY
)] vt_ui1_safe_array vt_ui1_array
;
246 [case(VT_UI1 | VT_VECTOR
)] vt_ui1_vec vt_ui1_vec
;
248 [case(VT_I2
)] int16 vt_i2
;
249 [case(VT_I2 | VT_ARRAY
)] vt_i2_safe_array vt_i2_array
;
250 [case(VT_I2 | VT_VECTOR
)] vt_i2_vec vt_i2_vec
;
252 [case(VT_UI2
)] uint16 vt_ui2
;
253 [case(VT_UI2 | VT_ARRAY
)] vt_ui2_safe_array vt_ui2_array
;
254 [case(VT_UI2 | VT_VECTOR
)] vt_ui2_vec vt_ui2_vec
;
256 [case(VT_BOOL
)] uint16 vt_bool
;
257 [case(VT_BOOL | VT_ARRAY
)] vt_ui2_safe_array vt_bool_array
;
258 [case(VT_BOOL | VT_VECTOR
)] vt_ui2_vec vt_bool_vec
;
260 [case(VT_I4
)] int32 vt_i4
;
261 [case(VT_I4 | VT_VECTOR
)] vt_i4_vec vt_i4_vec
;
262 [case(VT_I4 | VT_ARRAY
)] vt_i4_safe_array vt_i4_array
;
264 [case(VT_UI4
)] uint32 vt_ui4
;
265 [case(VT_UI4 | VT_VECTOR
)] vt_ui4_vec vt_ui4_vec
;
266 [case(VT_UI4 | VT_ARRAY
)] vt_ui4_safe_array vt_ui4_array
;
268 [case(VT_R4
)] uint32 vt_r4
;
269 [case(VT_R4 | VT_VECTOR
)] vt_i4_vec vt_r4_vec
;
270 [case(VT_R4 | VT_ARRAY
)] vt_i4_safe_array vt_r4_array
;
272 [case(VT_INT
)] int32 vt_int
;
273 [case(VT_INT | VT_ARRAY
)] vt_i4_safe_array vt_int_array
;
275 [case(VT_UINT
)] uint32 vt_uint
;
276 [case(VT_UINT | VT_ARRAY
)] vt_ui4_safe_array vt_uint_array
;
278 [case(VT_ERROR
)] uint32 vt_error
;
279 [case(VT_ERROR | VT_VECTOR
)] vt_ui4_vec vt_error_vec
;
280 [case(VT_ERROR | VT_ARRAY
)] vt_ui4_safe_array vt_error_array
;
282 [case(VT_I8
)] dlong vt_i8
;
283 [case(VT_I8 | VT_VECTOR
)] vt_dlong_vec vt_i8_vec
;
285 [case(VT_UI8
)] udlong vt_ui8
;
286 [case(VT_UI8 | VT_VECTOR
)] vt_udlong_vec vt_ui8_vec
;
288 [case(VT_R8
)] dlong vt_r8
;
289 [case(VT_R8 | VT_VECTOR
)] vt_dlong_vec vt_r8_vec
;
290 [case(VT_R8 | VT_ARRAY
)] vt_dlong_safe_array vt_r8_array
;
292 [case(VT_CY
)] dlong vt_cy
;
293 [case(VT_CY | VT_VECTOR
)] vt_dlong_vec vt_cy_vec
;
294 [case(VT_CY | VT_ARRAY
)] vt_dlong_safe_array vt_cy_array
;
296 [case(VT_DATE
)] dlong vt_date
;
297 [case(VT_DATE | VT_VECTOR
)] vt_dlong_vec vt_date_vec
;
298 [case(VT_DATE| VT_ARRAY
)] vt_dlong_safe_array vt_date_array
;
300 [case(VT_FILETIME
)] udlong vt_filetime
;
301 [case(VT_FILETIME | VT_VECTOR
)] vt_udlong_vec vt_filetime_vec
;
303 [case(VT_BSTR
)] vt_bstr vt_bstr
;
304 [case(VT_BSTR | VT_VECTOR
)] vt_bstr_vec vt_bstr_v
;
305 [case(VT_BSTR | VT_ARRAY
)] vt_bstr_safe_array vt_bstr_array
;
307 [case(VT_LPWSTR
)] vt_lpwstr vt_lpwstr
;
308 [case(VT_LPWSTR | VT_VECTOR
)] vt_lpwstr_vec vt_lpwstr_v
;
310 [case(VT_COMPRESSED_LPWSTR
)] vt_compressed_lpwstr vt_compressed_lpwstr
;
311 [case(VT_COMPRESSED_LPWSTR | VT_VECTOR
)] vt_compressed_lpwstr_vec vt_compresseed_lpwstr_v
;
313 [case(VT_DECIMAL
)] vt_decimal vt_decimal
;
314 [case(VT_DECIMAL | VT_VECTOR
)] vt_decimal_vec vt_decimal_v
;
316 [case(VT_CLSID
)] GUID vt_clid
;
317 [case(VT_CLSID | VT_VECTOR
)] vt_clsid_vec vt_clsid_v
;
319 [case(VT_BLOB
)] DATA_BLOB vt_blob
;
320 [case(VT_BLOB_OBJECT
)] DATA_BLOB vt_blob_object
;
324 [case(VT_VARIANT
)] vt_variant_wrap vt_variant_wrap
;
326 [case(VT_VARIANT | VT_VECTOR
)] vt_variant_wrap_vec vt_variant_wrap_vec
;
327 [case(VT_VARIANT | VT_ARRAY
)] vt_variant_wrap_safearray vt_variant_wrap_array
;
331 * MS-WSP 2.2.1.1 CBaseStorageVariant
333 typedef [public] struct {
337 [max_recursion
(102), switch_is(vtype
)] variant_types vvalue
;
338 } wsp_cbasestoragevariant
;
340 typedef [public, nodiscriminant
, switch_type(uint32
)] union {
341 [case(DBKIND_GUID_NAME
)] string vstring
;
343 } wsp_cdbcolid_opt_name
;
345 /* MS-WSP 2.2.1.29 CDbColId */
346 typedef [public] struct {
348 [flag
(NDR_ALIGN8
)] DATA_BLOB _pad1
;
351 [switch_is(ekind
)] wsp_cdbcolid_opt_name vstring
;
355 /* MS-WSP 2.2.2 Message Headers */
356 typedef [public] struct {
363 /* MS-WSP 2.2.1.30 CDbProp */
364 typedef [public,flag
(NDR_ALIGN4
)] struct {
366 uint32 dbpropoptions
;
369 wsp_cbasestoragevariant vvalue
;
372 /* MS-WSP 2.2.1.31 CDbPropSet */
373 typedef [flag
(NDR_NOALIGN
),public] struct {
374 GUID guidpropertyset
;
375 [flag
(NDR_ALIGN4
)] DATA_BLOB _pad1
;
377 wsp_cdbprop aprops
[cproperties
];
380 /* MS-WSP 2.2.1.10 CSort */
381 typedef [public] struct {
388 /* MS-WSP 2.2.1.42 CSortSet */
389 typedef [public] struct {
391 wsp_csort sortarray
[count
];
395 * cPropSets, PropterySet1 & PropertySet2 (parts of CPMConnectIn)
397 typedef [public] struct {
399 wsp_cdbpropset propertyset1
;
400 wsp_cdbpropset propertyset2
;
401 } connectin_propsets
;
404 * cExtPropSet, aPropertySets (parts of CPMConnectIn)
406 typedef [public] struct {
408 wsp_cdbpropset apropertysets
[cextpropset
];
409 } connectin_extpropsets
;
411 /* MS-WSP 2.2.3.2 CPMConnectIn */
412 typedef [public] struct {
413 uint32 iclientversion
;
414 uint32 fclientisremote
;
416 uint32 paddingcbblob2
;
419 [flag
(STR_NULLTERM
)] string machinename
;
420 [flag
(STR_NULLTERM
)] string username
;
421 [flag
(NDR_ALIGN8
)] DATA_BLOB _pad1
;
422 uint8 propsets
[cbblob1
];
423 [flag
(NDR_ALIGN8
)] DATA_BLOB _pad2
;
424 uint8 extpropsets
[cbblob2
];
427 typedef [public] struct {
429 uint32 dwwinvermajor
;
430 uint32 dwwinverminor
;
431 uint32 dwnlsvermajor
;
432 uint32 dwnlsverminor
;
435 typedef [public, nodiscriminant
, switch_type(uint32
)] union {
436 [case(WINDOWS_7
)] version_info version_info
;
437 [case(WINDOWS_2008
)] version_info version_info
;
438 [default] uint32 reserved
[4];
441 /* MS-WSP 2.2.3.3 CPMConnectOut */
442 typedef [public] struct {
443 uint32 server_version
;
444 [switch_is(server_version
)] version_dependant version_dependant
;
447 /* MS-WSP 2.2.1.18 CColumnSet */
448 typedef [public] struct {
450 uint32 indexes
[count
];
454 /* MS-WSP 2.2.1.6 CNodeRestriction */
455 typedef [public] struct {
457 [max_recursion
(100)] wsp_crestriction panode
[cnode
];
458 } wsp_cnoderestriction
;
460 typedef [public] struct {
462 [charset
(UTF16
)] uint8 vstring
[len
*2];
463 } wsp_len_string_pair
;
465 typedef [public, nodiscriminant
, switch_type(uint32
)] union {
466 [case(PRSPEC_LPWSTR
)] wsp_len_string_pair propname
;
467 [case(PRSPEC_PROPID
)] uint32 prspec
;
468 } wsp_propname_or_propid
;
470 typedef [public] struct {
472 [charset
(UTF16
)] uint8 vstring
[cclabel
*2];
475 typedef [public, nodiscriminant
, switch_type(uint8
)] union {
477 [case(1)] wsp_labeldata data
;
480 /* MS-WSP 2.2.1.23 RANGEBOUNDARY */
481 typedef [public] struct {
483 wsp_cbasestoragevariant prval
;
485 [switch_is(labelpresent
)] opt_labeldata opt_data
;
488 /* MS-WSP 2.2.1.22 CRangeCategSpec */
489 typedef [public] struct {
492 wsp_rangeboundary arangebegin
[crange
+ 1];
493 } wsp_crangecategspec
;
495 typedef [public, nodiscriminant
, switch_type(uint32
)] union {
497 [default] wsp_crangecategspec crangecategspec
;
498 } opt_crangecatespec
;
500 /* MS-WSP 2.2.1.21 CCategSpec */
501 typedef [public] struct {
504 [switch_is(ulcategtype
)] opt_crangecatespec opt
;
507 typedef [public] struct {
508 uint32 ulmaxnumtoret
;
509 uint32 idrepresentitive
;
512 typedef [public,nodiscriminant
,switch_type(uint8
)] union {
513 [case(DBAGGTTYPE_FIRST
)] uint32 firstmaxnumret
;
514 [case(DBAGGTTYPE_BYFREQ
)] uint32 firstbyfreq
;
515 [case(DBAGGTTYPE_REPRESENTATIVEOF
)] wsp_repofdata repofdata
;
519 /* MS-WSP 2.2.1.25 CAggregSpec */
520 typedef [public] struct {
522 [flag
(NDR_ALIGN4
)] DATA_BLOB _pad1
;
524 [charset
(UTF16
)] uint8 alias
[ccalias
*2];
526 [switch_is(type
)] opt_type_data opt_data
;
529 /* MS-WSP 2.2.1.24 CAggregSet */
530 typedef [public] struct {
532 wsp_caggregspec aggregspecs
[ccount
];
535 /* MS-WSP 2.2.1.27 CAggregSortKey */
536 typedef [public] struct {
538 wsp_caggregspec columnspec
;
539 } wsp_caggregsortkey
;
541 /* MS-WSP 2.2.1.26 CSortAggregSet */
542 typedef [public] struct {
544 wsp_caggregsortkey sortkeys
[ccount
];
545 } wsp_csortaggregset
;
547 typedef [public, nodiscriminant
, switch_type(uint8
)] union {
549 * if type == GroupIdValue then wsp_cbasestoragevariant
550 * ingroupid is present
552 [case(0x03)] wsp_cbasestoragevariant ingroupid
;
556 typedef [public] struct {
558 [flag
(NDR_ALIGN4
)] DATA_BLOB _pad1
;
559 [switch_is(type
)] wsp_opt_ingroupid opt_groupid
;
560 wsp_csortset sortaggregset
;
561 } wsp_cingroupsortaggregset
;
563 /* MS-WSP 2.2.1.28 CInGroupSortAggregSets */
564 typedef [public] struct {
566 wsp_cingroupsortaggregset sortsets
[ccount
];
567 } wsp_cingroupsortaggregsets
;
569 /* MS-WSP 2.2.1.20 CCategorizationSpec */
570 typedef [public] struct {
571 wsp_ccolumnset cscolumns
;
573 wsp_caggregset aggregset
;
574 wsp_csortaggregset sortaggregset
;
575 wsp_cingroupsortaggregsets ingroupsortaggset
;
577 } wsp_ccategorizationspec
;
579 /* MS-WSP 2.2.1.19 CCategorizationSet */
580 typedef [public] struct {
582 wsp_ccategorizationspec categories
[size
];
583 } wsp_ccategorizationset
;
585 /* MS-WSP 2.2.1.2 CFullPropSpec */
586 typedef [flag
(NDR_NOALIGN
),public] struct {
587 [flag
(NDR_ALIGN8
)] DATA_BLOB _pad1
;
590 [switch_is(ulkind
)] wsp_propname_or_propid name_or_id
;
593 /* MS-WSP 2.2.1.3 CContentRestriction */
594 typedef [public] struct {
595 wsp_cfullpropspec property
;
596 [flag
(NDR_ALIGN4
)] DATA_BLOB _pad1
;
598 [charset
(UTF16
)] uint8 pwcsphrase
[cc
*2];
599 [flag
(NDR_ALIGN4
)] DATA_BLOB _pad2
;
601 uint32 ulgeneratemethod
;
602 } wsp_ccontentrestriction
;
604 /* MS-WSP 2.2.1.7 CPropertyRestriction */
605 typedef [public] struct {
607 wsp_cfullpropspec property
;
608 wsp_cbasestoragevariant prval
;
609 [flag
(NDR_ALIGN4
)] DATA_BLOB _pad1
;
611 } wsp_cpropertyrestriction
;
613 /* MS-WSP 2.2.1.5 CNatLanguageRestriction */
614 typedef [public] struct {
615 wsp_cfullpropspec property
;
616 [flag
(NDR_ALIGN4
)] DATA_BLOB _pad1
;
618 [charset
(UTF16
)] uint8 pwcsphrase
[cc
*2];
619 [flag
(NDR_ALIGN4
)] DATA_BLOB _pad2
;
621 } wsp_cnatlanguagerestriction
;
623 typedef [public] struct {
624 wsp_crestriction restriction
[SINGLE_ITEM
];
625 } wsp_wrap_crestriction
;
628 /* MS-WSP 2.2.1.12 CCoercionRestriction*/
629 typedef [public] struct {
630 /* no IEEE 754 implementation for float ?? */
633 wsp_crestriction childres
[SINGLE_ITEM
];
634 } wsp_ccoercionrestriction
;
636 /* MS-WSP 2.2.1.11 CVectorRestriction */
637 typedef [public] struct {
639 [flag
(NDR_ALIGN4
)] DATA_BLOB padding
;
641 } wsp_cvectorrestriction
;
643 /* MS-WSP 2.2.1.9 CScopeRestriction */
644 typedef [public] struct {
646 [charset
(UTF16
)] uint8 lowerpath
[cclowerpath
*2];
647 [flag
(NDR_ALIGN4
)] DATA_BLOB padding
;
651 } wsp_cscoperestriction
;
653 /* MS-WSP 2.2.1.8 CReuseWhere */
654 typedef [public] struct {
658 /* MS-WSP 2.2.1.4 CInternalPropertyRestriction */
659 typedef [public] struct {
662 wsp_cbasestoragevariant prval
;
664 uint8 restrictionpresent
;
665 wsp_crestriction nextrestriction
[SINGLE_ITEM
];
666 } wsp_cinternalpropertyrestriction
;
669 /* MS-WSP 2.2.1.14 CProbRestriction */
670 typedef [public] struct {
671 wsp_cfullpropspec property
;
678 } wsp_cprobrestriction
;
680 /* MS-WSP 2.2.1.15 CFeedbackRestriction */
681 typedef [public] struct {
683 wsp_cfullpropspec property
;
684 } wsp_cfeedbackrestriction
;
686 /* MS-WSP 2.2.1.13 CRelDocRestriction */
687 typedef [public] struct {
688 wsp_cbasestoragevariant vdocument
;
689 } wsp_creldocrestriction
;
691 typedef [public,nodiscriminant
,switch_type(uint32
)] union {
693 [case(RTNOT
)] wsp_wrap_crestriction restriction
;
694 [case(RTAND
)] wsp_cnoderestriction cnoderestriction
;
695 [case(RTOR
)] wsp_cnoderestriction orcnoderestriction
;
696 [case(RTCONTENT
)] wsp_ccontentrestriction ccontentrestriction
;
697 [case(RTPROPERTY
)] wsp_cpropertyrestriction cpropertyrestriction
;
698 [case(RTPROXIMITY
)] wsp_cnoderestriction proximityrestriction
;
699 [case(RTVECTOR
)] wsp_cvectorrestriction vectorrestriction
;
700 [case(RTNATLANGUAGE
)] wsp_cnatlanguagerestriction cnatlanguagerestriction
;
701 [case(RTSCOPE
)] wsp_cscoperestriction scoperestriction
;
702 [case(RTREUSEWHERE
)] wsp_creusewhere reusewhere
;
703 [case(RTINTERNALPROP
)] wsp_cinternalpropertyrestriction internalpropertyrestriction
;
704 [case(RTPHRASE
)] wsp_cnoderestriction phraserestriction
;
705 [case(RTCOERCE_ABSOLUTE
)] wsp_ccoercionrestriction ccoercionrestriction_abs
;
706 [case(RTCOERCE_ADD
)] wsp_ccoercionrestriction ccoercionrestriction_add
;
707 [case(RTCOERCE_MULTIPLY
)] wsp_ccoercionrestriction ccoercionrestriction_mul
;
708 [case(RTPROB
)] wsp_cprobrestriction probrestriction
;
709 [case(RTFEEDBACK
)] wsp_cfeedbackrestriction feedbackrestriction
;
710 [case(RTRELDOC
)] wsp_creldocrestriction reldocrestriction
;
715 /* MS-WSP 2.2.1.17 CRestriction */
716 typedef [public] struct {
719 [switch_is(ultype
)] wsp_crestrictions restriction
;
722 /* MS-WSP 2.2.1.16 CRestrictionArray */
723 typedef [flag
(NDR_NOALIGN
),public] struct {
726 [flag
(NDR_ALIGN4
)] DATA_BLOB _pad1
;
727 wsp_crestriction restrictions
[count
];
728 } wsp_crestrictionarray
;
730 /* MS-WSP 2.2.1.40 CRowsetProperties */
731 typedef [public] struct {
732 uint32 ubooleanoptions
;
733 uint32 ulmaxopenrows
;
734 uint32 ulmemoryusage
;
737 } wsp_crowsetproperties
;
739 /* MS-WSP 2.2.1.32 CPidMapper */
740 typedef [public] struct {
742 [flag
(NDR_ALIGN4
)] DATA_BLOB _pad2
;
743 wsp_cfullpropspec apropspec
[count
];
746 /* MS-WSP 2.2.1.35 SProperty */
747 typedef [public] struct {
752 /* MS-WSP 2.2.1.34 CColumnGroup */
753 typedef [public] struct {
756 wsp_sproperty props
[count
];
759 /* MS-WSP 2.2.1.33 CColumnGroupArray */
760 typedef [public] struct {
762 wsp_ccolumngroup agrouparray
[count
];
763 } wsp_ccolumngrouparray
;
765 typedef [public,nodiscriminant
,switch_type(uint8
)] union {
767 [default] wsp_cingroupsortaggregsets groupsortaggregsets
;
768 }opt_wsp_cingroupsortaggregsets
;
770 typedef [public,nodiscriminant
,switch_type(uint8
)] union {
772 [default] wsp_crestrictionarray restrictionarray
;
773 }opt_wsp_crestrictionarray
;
775 typedef [public,nodiscriminant
,switch_type(uint8
)] union {
777 [default] wsp_ccolumnset columnset
;
780 typedef [public,nodiscriminant
,switch_type(uint8
)] union {
782 [default] wsp_ccategorizationset ccategorizationset
;
783 }opt_wsp_ccategorizationset
;
785 typedef [public] struct {
787 uint8 ccolumnsetpresent
;
788 /* padding is not needed here (and below)
789 * as structures are default aligned to 4 byte
791 * commented out valued left for documentation
792 * and to match the actual structure definition
794 /*[flag(NDR_ALIGN4)] DATA_BLOB paddingCColumnSetPresent;*/
795 [switch_is(ccolumnsetpresent
)] opt_wsp_ccolumnset columnset
;
796 uint8 crestrictionpresent
;
797 [switch_is(crestrictionpresent
)] opt_wsp_crestrictionarray restrictionarray
;
798 uint8 csortsetpresent
;
799 /*[flag(NDR_ALIGN4)] DATA_BLOB paddingCSortSetPresent;*/
800 [switch_is(csortsetpresent
)] opt_wsp_cingroupsortaggregsets sortset
;
801 uint8 ccategorizationsetpresent
;
802 /*[flag(NDR_ALIGN4)] DATA_BLOB paddingCCategorizationSetPresent;*/
803 [switch_is(ccategorizationsetpresent
)] opt_wsp_ccategorizationset ccategorizationset
;
804 wsp_crowsetproperties rowsetproperties
;
805 wsp_cpidmapper pidmapper
;
806 wsp_ccolumngrouparray grouparray
;
808 } wsp_cpmcreatequeryin
;
810 /* MS-WSP 2.2.3.5 CPMCreateQueryOut */
811 typedef [public] struct {
812 uint32 ftruesequential
;
813 uint32 fWorkIdUnique
;
815 * uint32 acursors[SIZE];
817 * after fWorkIdUnique is an array of uint32 cursors,
818 * actually there is always at least 1 item in the array,
819 * SIZE is determined by the optional ccategorizationset field in
822 } wsp_cpmcreatequeryout
;
824 typedef [public, nodiscriminant
, switch_type(uint8
)] union {
825 [case(1)] uint8 value
;
829 typedef [public, nodiscriminant
, switch_type(uint8
)] union {
830 [case(1)] uint16 value
;
834 typedef [public, nodiscriminant
, switch_type(uint8
)] union {
835 [case(1)] uint16 value
;
839 typedef [public, nodiscriminant
, switch_type(uint8
)] union {
840 [case(1)] uint16 value
;
844 typedef [public, nodiscriminant
, switch_type(uint8
)] union {
845 [case(1)] uint16 value
;
849 /* MS-WSP 2.2.1.43 CTableColumn */
850 typedef [public] struct {
851 wsp_cfullpropspec propspec
;
854 [switch_is(aggregateused
)] aggregatetype aggregatetype
;
856 [switch_is(valueused
)] valueoffset valueoffset
; /* auto aligned to 2 byte boundary */
857 [switch_is(valueused
)] valuesize valuesize
; /* auto aligned to 2 byte boundary */
859 [switch_is(statusused
)] statusoffset statusoffset
; /* auto aligned to 2 byte boundary */
861 [switch_is(lengthused
)] lengthoffset lengthoffset
; /* auto aligned to 2 byte boundary */
865 * struct below is included for completeness but
866 * isn't currently referenced.
867 * MS-WSP 2.2.1.45 CCompletionCategSpec
869 typedef [public] struct {
872 uint32 ccomplstrings
;
873 wsp_serializedpropertyvalue apszcomplstrings
[ccomplstrings
];
875 uint32 acomplpids
[ccomplpids
];
876 } wsp_ccompletioncategspec
;
878 /* MS-WSP 2.2.3.10 CPMSetBindingsIn */
879 typedef [public] struct {
885 wsp_ctablecolumn acolumns
[ccolumns
];
886 } wsp_cpmsetbindingsin
;
888 /* MS-WSP 2.2.1.39 CRowSeekNext */
889 typedef [public] struct {
893 /* MS-WSP 2.2.1.36 CRowSeekAt */
894 typedef [public] struct {
900 /* MS-WSP 2.2.1.37 CRowSeekAtRatio */
901 typedef [public] struct {
903 uint32 uldenominator
;
905 } wsp_crowseekatratio
;
907 /* MS-WSP 2.2.1.38 CRowSeekByBookmark */
908 typedef [public] struct {
910 uint32 abookmarks
[cbookmarks
];
912 uint32 ascret
[maxret
];
913 } wsp_crowseekbybookmark
;
915 typedef [public,nodiscriminant
,switch_type(uint32
)] union {
916 [case(EROWSEEKNONE
)];
917 [case(EROWSEEKNEXT
)] wsp_crowseeknext crowseeknext
;
918 [case(EROWSEEKAT
)] wsp_crowseekat crowseekat
;
919 [case(EROWSEEKATRATIO
)] wsp_crowseekatratio crowseekatratio
;
920 [case(EROWSEEKBYBOOKMARK
)] wsp_crowseekbybookmark crowseekbybookmark
;
921 } wsp_seekdescription
;
923 /* MS-WSP 2.2.3.11 CPMGetRowsIn */
924 typedef [public] struct {
926 uint32 crowstotransfer
;
935 [switch_is(etype
)] wsp_seekdescription seekdescription
;
938 /* MS-WSP 2.2.1.42 */
939 typedef [public] struct {
943 /* followed by offset either 4 or 8 byte count (if VT_VECTOR) */
944 /* followed by offset either 4 or 8 byte offset (if variable size value)*/
945 /* followed by fixed value (if fixed size value) */
948 /* MS-WSP 2.2.3.12 CPMGetRowsOut */
949 typedef [public] struct {
953 [switch_is(etype
)] wsp_seekdescription seekdescription
;
955 * following rows data is not defined here, size is unknown
956 * in the context of this structure but is the size of
957 * breadbuffer defined in cpmgetrowsin.
961 /* MS-WSP 2.2.3.24 CPMFreeCursorIn */
962 typedef [public] struct {
964 } wsp_cpmfreecursorin
;
966 /* MS-WSP 2.2.3.25 CPMFreeCursorOut */
967 typedef [public] struct {
968 uint32 ccursorsremaining
;
969 } wsp_cpmfreecursorout
;
971 /* MS-WSP 2.2.3.6 CPMGetQueryStatusIn */
972 typedef [public] struct {
974 } wsp_cpmgetquerystatusin
;
976 /* MS-WSP 2.2.3.7 CPMGetQueryStatusOut */
977 typedef [public] struct {
979 } wsp_cpmgetquerystatusout
;
981 /* MS-WSP 2.2.3.8 CPMGetQueryStatusExIn */
982 typedef [public] struct {
985 } wsp_cpmgetquerystatusexin
;
987 /* MS-WSP 2.2.3.9 CPMGetQueryStatusExOut */
988 typedef [public] struct {
990 uint32 cfiltereddocuments
;
991 uint32 cdocumentstofilter
;
992 uint32 dwratiofinisheddenominator
;
993 uint32 dwratiofinishednumerator
;
999 } wsp_cpmgetquerystatusexout
;
1001 /* MS-WSP 2.2.3.23 CPMRestartPositionIn */
1002 typedef [public] struct {
1005 } wsp_cpmrestartpositionin
;
1007 /* MS-WSP 2.2.3.13 CPMRatioFinishedIn */
1008 typedef [public] struct {
1011 } wsp_cpmratiofinishedin
;
1013 /* MS-WSP 2.2.3.14 CPMRatioFinishedOut */
1014 typedef [public] struct {
1016 uint32 uldenominator
;
1019 } wsp_cpmratiofinishedout
;
1021 /* MS-WSP 2.2.3.15 CPMRatioFinishedOut */
1022 typedef [public] struct {
1027 wsp_cfullpropspec propspec
;
1028 } wsp_cpmfetchvaluein
;
1030 typedef [public] struct {
1032 safearraybound rgsabound
[cdims
];
1033 int8 vdata
[calc_array_size
(rgsabound
, cdims
)];
1034 } vt_i1_safe2_array
;
1036 typedef [public] struct {
1038 safearraybound rgsabound
[cdims
];
1039 uint8 vdata
[calc_array_size
(rgsabound
, cdims
)];
1040 } vt_ui1_safe2_array
;
1042 typedef [public] struct {
1044 safearraybound rgsabound
[cdims
];
1045 int16 vdata
[calc_array_size
(rgsabound
, cdims
)];
1046 } vt_i2_safe2_array
;
1048 typedef [public] struct {
1050 safearraybound rgsabound
[cdims
];
1051 uint16 vdata
[calc_array_size
(rgsabound
, cdims
)];
1052 } vt_ui2_safe2_array
;
1054 typedef [public] struct {
1056 safearraybound rgsabound
[cdims
];
1057 int32 vdata
[calc_array_size
(rgsabound
, cdims
)];
1058 } vt_i4_safe2_array
;
1060 typedef [public] struct {
1062 safearraybound rgsabound
[cdims
];
1063 uint32 vdata
[calc_array_size
(rgsabound
, cdims
)];
1064 } vt_ui4_safe2_array
;
1066 typedef [public] struct {
1068 safearraybound rgsabound
[cdims
];
1069 dlong vdata
[calc_array_size
(rgsabound
, cdims
)];
1070 } vt_dlong_safe2_array
;
1072 typedef [public] struct {
1074 safearraybound rgsabound
[cdims
];
1075 vt_bstr vdata
[calc_array_size
(rgsabound
, cdims
)];
1076 } vt_bstr_safe2_array
;
1078 typedef [public] struct {
1080 safearraybound rgsabound
[cdims
];
1081 vt_variant_wrap vdata
[calc_array_size
(rgsabound
, cdims
)];
1082 } vt_variant_wrap_safearray2
;
1084 typedef [public,nodiscriminant
,switch_type(uint32
)] union {
1085 [case(VT_I1
)] int8 vt_i1
;
1086 [case(VT_I1 | VT_ARRAY
)] vt_i1_safe2_array vt_i1_array
;
1087 [case(VT_I1 | VT_VECTOR
)] vt_i1_vec vt_i1_vec
;
1089 [case(VT_UI1
)] uint8 vt_ui1
;
1090 [case(VT_UI1 | VT_ARRAY
)] vt_ui1_safe2_array vt_ui1_array
;
1091 [case(VT_UI1 | VT_VECTOR
)] vt_ui1_vec vt_ui1_vec
;
1093 [case(VT_I2
)] int16 vt_i2
;
1094 [case(VT_I2 | VT_ARRAY
)] vt_i2_safe2_array vt_i2_array
;
1095 [case(VT_I2 | VT_VECTOR
)] vt_i2_vec vt_i2_vec
;
1097 [case(VT_UI2
)] uint16 vt_ui2
;
1098 [case(VT_UI2 | VT_ARRAY
)] vt_ui2_safe2_array vt_ui2_array
;
1099 [case(VT_UI2 | VT_VECTOR
)] vt_ui2_vec vt_ui2_vec
;
1101 [case(VT_BOOL
)] uint16 vt_bool
;
1102 [case(VT_BOOL | VT_ARRAY
)] vt_ui2_safe2_array vt_bool_array
;
1103 [case(VT_BOOL | VT_VECTOR
)] vt_ui2_vec vt_bool_vec
;
1105 [case(VT_I4
)] int32 vt_i4
;
1106 [case(VT_I4 | VT_VECTOR
)] vt_i4_vec vt_i4_vec
;
1107 [case(VT_I4 | VT_ARRAY
)] vt_i4_safe2_array vt_i4_array
;
1109 [case(VT_UI4
)] uint32 vt_ui4
;
1110 [case(VT_UI4 | VT_VECTOR
)] vt_ui4_vec vt_ui4_vec
;
1111 [case(VT_UI4 | VT_ARRAY
)] vt_ui4_safe2_array vt_ui4_array
;
1113 [case(VT_R4
)] uint32 vt_r4
;
1114 [case(VT_R4 | VT_VECTOR
)] vt_i4_vec vt_r4_vec
;
1115 [case(VT_R4 | VT_ARRAY
)] vt_i4_safe2_array vt_r4_array
;
1117 [case(VT_INT
)] int32 vt_int
;
1118 [case(VT_INT | VT_ARRAY
)] vt_i4_safe2_array vt_int_array
;
1120 [case(VT_UINT
)] uint32 vt_uint
;
1121 [case(VT_UINT | VT_ARRAY
)] vt_ui4_safe2_array vt_uint_array
;
1123 [case(VT_ERROR
)] uint32 vt_error
;
1124 [case(VT_ERROR | VT_VECTOR
)] vt_ui4_vec vt_error_vec
;
1125 [case(VT_ERROR | VT_ARRAY
)] vt_ui4_safe2_array vt_error_array
;
1127 [case(VT_I8
)] dlong vt_i8
;
1128 [case(VT_I8 | VT_VECTOR
)] vt_dlong_vec vt_i8_vec
;
1130 [case(VT_UI8
)] udlong vt_ui8
;
1131 [case(VT_UI8 | VT_VECTOR
)] vt_udlong_vec vt_ui8_vec
;
1133 [case(VT_R8
)] dlong vt_r8
;
1134 [case(VT_R8 | VT_VECTOR
)] vt_dlong_vec vt_r8_vec
;
1135 [case(VT_R8 | VT_ARRAY
)] vt_dlong_safe2_array vt_r8_array
;
1137 [case(VT_CY
)] dlong vt_cy
;
1138 [case(VT_CY | VT_VECTOR
)] vt_dlong_vec vt_cy_vec
;
1139 [case(VT_CY | VT_ARRAY
)] vt_dlong_safe2_array vt_cy_array
;
1141 [case(VT_DATE
)] dlong vt_date
;
1142 [case(VT_DATE | VT_VECTOR
)] vt_dlong_vec vt_date_vec
;
1143 [case(VT_DATE| VT_ARRAY
)] vt_dlong_safe2_array vt_date_array
;
1145 [case(VT_FILETIME
)] udlong vt_filetime
;
1146 [case(VT_FILETIME | VT_VECTOR
)] vt_udlong_vec vt_filetime_vec
;
1148 [case(VT_BSTR
)] vt_bstr vt_bstr
;
1149 [case(VT_BSTR | VT_VECTOR
)] vt_bstr_vec vt_bstr_v
;
1150 [case(VT_BSTR | VT_ARRAY
)] vt_bstr_safe2_array vt_bstr_array
;
1152 [case(VT_LPWSTR
)] vt_lpwstr vt_lpwstr
;
1153 [case(VT_LPWSTR | VT_VECTOR
)] vt_lpwstr_vec vt_lpwstr_v
;
1155 [case(VT_COMPRESSED_LPWSTR
)] vt_compressed_lpwstr vt_compressed_lpwstr
;
1156 [case(VT_COMPRESSED_LPWSTR | VT_VECTOR
)] vt_compressed_lpwstr_vec vt_compresseed_lpwstr_v
;
1158 [case(VT_DECIMAL
)] vt_decimal vt_decimal
;
1159 [case(VT_DECIMAL | VT_VECTOR
)] vt_decimal_vec vt_decimal_v
;
1161 [case(VT_CLSID
)] GUID vt_clid
;
1162 [case(VT_CLSID | VT_VECTOR
)] vt_clsid_vec vt_clsid_v
;
1164 [case(VT_BLOB
)] DATA_BLOB vt_blob
;
1165 [case(VT_BLOB_OBJECT
)] DATA_BLOB vt_blob_object
;
1170 [case(VT_VARIANT
)] vt_variant_wrap vt_variant_wrap
;
1171 [case(VT_VARIANT | VT_VECTOR
)] vt_variant_wrap_vec vt_variant_wrap_vec
;
1172 [case(VT_VARIANT | VT_ARRAY
)] vt_variant_wrap_safearray2 vt_variant_wrap_array
;
1175 /* MS-WSP 2.2.1.44 SERIALIZEDPROPERTYVALUE */
1176 typedef [public] struct {
1178 [switch_is(dwtype
)] serialised_types rgb
;
1179 } wsp_serializedpropertyvalue
;
1181 /* MS-WSP 2.2.3.16 CPMFetchValueOut */
1182 typedef [public] struct {
1185 uint32 fvalueexists
;
1187 * very nearly the same as wsp_cbasestoragevariant, only
1188 * different in how array types are represented, also only
1189 * a portion of the value (serializedpropertyvalue) is here
1191 * Additionally if the property doesn't exist (e.g.
1192 * fvalueexists == 0) cbvalue can still have value
1193 * so we can't define the 'vvalue' element below
1195 * uint8 value[cbvalue];
1197 } wsp_cpmfetchvalueout
;
1199 /* MS-WSP 2.2.3.31 CPMSetScopePrioritizationIn */
1200 typedef [public] struct {
1202 uint32 eventfrequency
;
1203 } wsp_cpmsetscopeprioritizationin
;
1205 /* MS-WSP 2.2.3.18 CPMSendNotifyOut */
1206 typedef [public] struct {
1208 } wsp_cpmsendnotifyout
;
1210 /* MS-WSP 2.2.3.30 CPMGetRowsetNotifyOut */
1211 typedef [public] struct {
1215 uint8 changeditemstate
;
1217 dlong rowseteventdata1
;
1218 dlong rowseteventdata2
;
1219 } wsp_cpmgetrowsetnotifyout
;
1221 /* MS-WSP 2.2.3.34 CPMGetScopeStatisticsOut */
1222 typedef [public] struct {
1223 uint32 dwindexeditems
;
1224 uint32 dwoutstandingadds
;
1225 uint32 dwoustandingmodifies
;
1226 } wsp_cpmgetscopestatisticsout
;
1228 /* MS-WSP 2.2.3.19 CPMGetApproximatePositionIn */
1229 typedef [public] struct {
1233 } wsp_cpmgetapproximatepositionin
;
1235 /* MS-WSP 2.2.3.20 CPMGetApproximatePositionOut */
1236 typedef [public] struct {
1239 } wsp_cpmgetapproximatepositionout
;
1241 /* MS-WSP 2.2.3.21 CPMCompareBmkIn */
1242 typedef [public] struct {
1247 } wsp_cpmcomparebmkin
;
1249 /* MS-WSP 2.2.3.22 CPMCompareBmkOut */
1250 typedef [public] struct {
1251 uint32 dwcomparison
;
1252 } wsp_cpmcomparebmkout
;
1254 /* MS-WSP 2.2.3.1 CPMCiStateInOut */
1255 typedef [public] struct {
1258 uint32 cpersistentindex
;
1262 uint32 dwmergeprogress
;
1264 uint32 cfiltereddocuments
;
1265 uint32 ctotaldocuments
;
1266 uint32 cpendingscans
;
1269 uint32 csecqdocuments
;
1270 uint32 dwpropcachesize
;
1271 } wsp_cpmcistateinout
;
1273 /* MS-WSP 2.2.3.27 CPMFindIndicesIn */
1274 typedef [public] struct {
1277 uint32 pwids
[cwids
];
1278 uint32 prgirowprev
[cdepthprev
];
1279 } wsp_findindicesin
;
1281 /* MS-WSP 2.2.3.28 CPMFindIndicesOut */
1282 typedef [public] struct {
1284 uint32 prgirownext
[cdepthnext
];
1285 } wsp_findindicesout
;
1287 typedef [public, nodiscriminant
, switch_type(uint32
)] union {
1288 [case(CPMCONNECT
)] wsp_cpmconnectin cpmconnect
;
1289 [case(CPMCREATEQUERY
)] wsp_cpmcreatequeryin cpmcreatequery
;
1290 [case(CPMFREECURSOR
)] wsp_cpmfreecursorin cpmfreecursor
;
1291 [case(CPMGETROWS
)] wsp_cpmgetrowsin cpmgetrows
;
1292 [case(CPMSETBINDINGSIN
)] wsp_cpmsetbindingsin cpmsetbindings
;
1293 [case(CPMRESTARTPOSITIONIN
)] wsp_cpmrestartpositionin cpmrrestartpos
;
1294 [case(CPMGETQUERYSTATUS
)] wsp_cpmgetquerystatusin cpmgetquerystatus
;
1295 [case(CPMGETQUERYSTATUSEX
)] wsp_cpmgetquerystatusexin cpmgetquerystatusex
;
1296 [case(CPMSETSCOPEPRIORITIZATION
)] wsp_cpmsetscopeprioritizationin cpmsetscopeprioritizationin
;
1297 [case(CPMGETNOTIFY
)]; /*header only*/
1298 [case(CPMGETROWSETNOTIFY
)]; /*header only*/
1299 [case(CPMDISCONNECT
)]; /*header only*/
1300 [case(CPMGETSCOPESTATISTICS
)]; /*header only*/
1301 [case(CPMGETAPPROXIMATEPOSITION
)] wsp_cpmgetapproximatepositionin getapproximateposition
;
1302 [case(CPMCOMPAREBMK
)] wsp_cpmcomparebmkin cpmcomparebmk
;
1303 [case(CPMCISTATEOUT
)] wsp_cpmcistateinout wsp_cpmcistate
;
1304 [case(CPMFINDINDICES
)] wsp_findindicesin wsp_findindices
;
1305 [case(CPMRATIOFINISHED
)] wsp_cpmratiofinishedin wsp_cpmratiofinished
;
1306 [case(CPMFETCHVALUE
)] wsp_cpmfetchvaluein cpmfetchvalue
;
1309 typedef [public, nodiscriminant
, switch_type(uint32
)] union {
1310 [case(CPMCONNECT
)] wsp_cpmconnectout cpmconnect
;
1311 [case(CPMCREATEQUERY
)] wsp_cpmcreatequeryout cpmcreatequery
;
1312 [case(CPMFREECURSOR
)] wsp_cpmfreecursorout cpmfreecursor
;
1313 [case(CPMGETROWS
)] wsp_cpmgetrowsout cpmgetrows
;
1314 [case(CPMSETBINDINGSIN
)]; /* just has header */
1315 [case(CPMRESTARTPOSITIONIN
)]; /* just has header */
1316 [case(CPMGETQUERYSTATUS
)] wsp_cpmgetquerystatusout cpmgetquerystatus
;
1317 [case(CPMSENDNOTIFYOUT
)] wsp_cpmsendnotifyout cpmsendnotifyoutcpmgetquerystatus
;
1318 [case(CPMGETQUERYSTATUSEX
)] wsp_cpmgetquerystatusexout cpmgetquerystatusex
;
1319 [case(CPMSETSCOPEPRIORITIZATION
)]; /* just had header */
1320 [case(CPMGETROWSETNOTIFY
)] wsp_cpmgetrowsetnotifyout cpmgetrowsetnotifyout
;
1321 [case(CPMGETAPPROXIMATEPOSITION
)] wsp_cpmgetapproximatepositionout getapproximateposition
;
1322 [case(CPMCOMPAREBMK
)] wsp_cpmcomparebmkout cpmcomparebmk
;
1323 [case(CPMCISTATEOUT
)] wsp_cpmcistateinout wsp_cpmcistate
;
1324 [case(CPMFINDINDICES
)] wsp_findindicesout wsp_findindices
;
1325 [case(CPMGETSCOPESTATISTICS
)] wsp_cpmgetscopestatisticsout cpmgetscopestatistics
;
1326 [case(CPMRATIOFINISHED
)] wsp_cpmratiofinishedout wsp_cpmratiofinished
;
1327 [case(CPMFETCHVALUE
)] wsp_cpmfetchvalueout cpmfetchvalue
;
1330 typedef [public] struct {
1332 [switch_is(header.msg
)] req_message
message;
1335 typedef [public] struct {
1337 [switch_is(header.msg
)] resp_message
message;