autobuild: Run the samba-minimal-smbd build jobs with -j 2
[samba4-gss.git] / librpc / idl / wsp.idl
blobfceaf0a85f2a5f1da5690621710fe86e9c85c3e9
1 #include "idl_types.h"
2 import "wsp_data.idl";
3 import "misc.idl";
6 version(1.0),
7 endpoint("ncacn_np:[\\pipe\\MsFteWds]"),
8 helpstring("Windows Search WSP Protocol"),
9 helper("../librpc/wsp/wsp_helper.h"),
10 pointer_default(unique)
13 interface msftewds
15 typedef [public] struct {
17 * hack to allow wsp_cbasestoragevariant to be used before
18 * it is defined
20 wsp_cbasestoragevariant variant[SINGLE_ITEM];
21 } vt_variant_wrap;
23 /* MS-WSP 2.2.1.1.1.1 DECIMAL */
24 typedef [public] struct {
25 uint32 hi32;
26 uint32 mid32;
27 uint32 lo32;
28 } vt_decimal;
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];
34 } vt_decimal_vec;
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;
46 } vt_bstr;
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];
52 } vt_bstr_vec;
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;
58 } vt_lpwstr;
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];
64 } vt_lpwstr_vec;
66 /* MS-WSP see vValue details in 2.2.1.1 (VT_COMPRESSED_LPWSTR) */
67 typedef [public] struct {
68 uint32 cclen;
69 uint8 bytes[cclen];
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];
83 } vt_i1_vec;
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];
89 } vt_ui1_vec;
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];
95 } vt_i2_vec;
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];
101 } vt_ui2_vec;
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];
107 } vt_i4_vec;
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];
113 } vt_ui4_vec;
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];
119 } vt_dlong_vec;
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];
125 } vt_udlong_vec;
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];
131 } vt_clsid_vec;
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 {
144 * uint32 num;
145 * variant_types vec[num];
146 *} vt_vector;
149 /* MS-WSP 2.2.1.1.1.4 SAFEARRAYBOUND */
150 typedef [public] struct {
151 uint32 celements;
152 uint32 ilbound;
153 } safearraybound;
155 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_I4) */
156 typedef [public] struct {
157 uint16 cdims;
158 uint16 ffeatures;
159 uint32 cbelements;
160 safearraybound rgsabound[cdims];
161 int32 vdata[calc_array_size(rgsabound, cdims)];
162 } vt_i4_safe_array;
164 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_UI4) */
165 typedef [public] struct {
166 uint16 cdims;
167 uint16 ffeatures;
168 uint32 cbelements;
169 safearraybound rgsabound[cdims];
170 uint32 vdata[calc_array_size(rgsabound, cdims)];
171 } vt_ui4_safe_array;
173 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_BSTR) */
174 typedef [public] struct {
175 uint16 cdims;
176 uint16 ffeatures;
177 uint32 cbelements;
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 {
185 uint16 cdims;
186 uint16 ffeatures;
187 uint32 cbelements;
188 safearraybound rgsabound[cdims];
189 int8 vdata[calc_array_size(rgsabound, cdims)];
190 } vt_i1_safe_array;
192 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_UI1) */
193 typedef [public] struct {
194 uint16 cdims;
195 uint16 ffeatures;
196 uint32 cbelements;
197 safearraybound rgsabound[cdims];
198 uint8 vdata[calc_array_size(rgsabound, cdims)];
199 } vt_ui1_safe_array;
202 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_I2) */
203 typedef [public] struct {
204 uint16 cdims;
205 uint16 ffeatures;
206 uint32 cbelements;
207 safearraybound rgsabound[cdims];
208 int16 vdata[calc_array_size(rgsabound, cdims)];
209 } vt_i2_safe_array;
212 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_UI2) */
213 typedef [public] struct {
214 uint16 cdims;
215 uint16 ffeatures;
216 uint32 cbelements;
217 safearraybound rgsabound[cdims];
218 uint16 vdata[calc_array_size(rgsabound, cdims)];
219 } vt_ui2_safe_array;
221 /* MS-WSP 2.2.1.1.1.4 SAFEARRAY (VT_I8) */
222 typedef [public] struct {
223 uint16 cdims;
224 uint16 ffeatures;
225 uint32 cbelements;
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 {
232 uint16 cdims;
233 uint16 ffeatures;
234 uint32 cbelements;
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;
322 [case(VT_NULL)];
323 [case(VT_EMPTY)];
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;
328 } variant_types;
331 * MS-WSP 2.2.1.1 CBaseStorageVariant
333 typedef [public] struct {
334 uint16 vtype;
335 uint8 vdata1;
336 uint8 vdata2;
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;
342 [default];
343 } wsp_cdbcolid_opt_name;
345 /* MS-WSP 2.2.1.29 CDbColId */
346 typedef [public] struct {
347 uint32 ekind;
348 [flag(NDR_ALIGN8)] DATA_BLOB _pad1;
349 GUID guid;
350 uint32 uiid;
351 [switch_is(ekind)] wsp_cdbcolid_opt_name vstring;
352 } wsp_cdbcolid;
355 /* MS-WSP 2.2.2 Message Headers */
356 typedef [public] struct {
357 uint32 msg;
358 uint32 status;
359 uint32 checksum;
360 uint32 ulreserved2;
361 } wsp_header;
363 /* MS-WSP 2.2.1.30 CDbProp */
364 typedef [public,flag(NDR_ALIGN4)] struct {
365 uint32 dbpropid;
366 uint32 dbpropoptions;
367 uint32 dbpropstatus;
368 wsp_cdbcolid colid;
369 wsp_cbasestoragevariant vvalue;
370 } wsp_cdbprop;
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;
376 uint32 cproperties;
377 wsp_cdbprop aprops[cproperties];
378 } wsp_cdbpropset;
380 /* MS-WSP 2.2.1.10 CSort */
381 typedef [public] struct {
382 uint32 pidcolumn;
383 uint32 dworder;
384 uint32 dwindividual;
385 uint32 locale;
386 } wsp_csort;
388 /* MS-WSP 2.2.1.42 CSortSet */
389 typedef [public] struct {
390 uint32 count;
391 wsp_csort sortarray[count];
392 } wsp_csortset;
395 * cPropSets, PropterySet1 & PropertySet2 (parts of CPMConnectIn)
397 typedef [public] struct {
398 uint32 cpropsets;
399 wsp_cdbpropset propertyset1;
400 wsp_cdbpropset propertyset2;
401 } connectin_propsets;
404 * cExtPropSet, aPropertySets (parts of CPMConnectIn)
406 typedef [public] struct {
407 uint32 cextpropset;
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;
415 uint32 cbblob1;
416 uint32 paddingcbblob2;
417 uint32 cbblob2;
418 uint8 padding[12];
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];
425 } wsp_cpmconnectin;
427 typedef [public] struct {
428 uint32 reserved;
429 uint32 dwwinvermajor;
430 uint32 dwwinverminor;
431 uint32 dwnlsvermajor;
432 uint32 dwnlsverminor;
433 } version_info;
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];
439 } version_dependant;
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;
445 } wsp_cpmconnectout;
447 /* MS-WSP 2.2.1.18 CColumnSet */
448 typedef [public] struct {
449 uint32 count;
450 uint32 indexes[count];
451 } wsp_ccolumnset;
454 /* MS-WSP 2.2.1.6 CNodeRestriction */
455 typedef [public] struct {
456 uint32 cnode;
457 [max_recursion(100)] wsp_crestriction panode[cnode];
458 } wsp_cnoderestriction;
460 typedef [public] struct {
461 uint32 len;
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 {
471 uint32 cclabel;
472 [charset(UTF16)] uint8 vstring[cclabel*2];
473 } wsp_labeldata;
475 typedef [public, nodiscriminant, switch_type(uint8)] union {
476 [case(0)];
477 [case(1)] wsp_labeldata data;
478 } opt_labeldata;
480 /* MS-WSP 2.2.1.23 RANGEBOUNDARY */
481 typedef [public] struct {
482 uint32 ultype;
483 wsp_cbasestoragevariant prval;
484 uint8 labelpresent;
485 [switch_is(labelpresent)] opt_labeldata opt_data;
486 } wsp_rangeboundary;
488 /* MS-WSP 2.2.1.22 CRangeCategSpec */
489 typedef [public] struct {
490 uint32 lcid;
491 uint32 crange;
492 wsp_rangeboundary arangebegin[crange + 1];
493 } wsp_crangecategspec;
495 typedef [public, nodiscriminant, switch_type(uint32)] union {
496 [case(0)];
497 [default] wsp_crangecategspec crangecategspec;
498 } opt_crangecatespec;
500 /* MS-WSP 2.2.1.21 CCategSpec */
501 typedef [public] struct {
502 uint32 ulcategtype;
503 wsp_csort sortkey;
504 [switch_is(ulcategtype)] opt_crangecatespec opt;
505 } wsp_ccategspec;
507 typedef [public] struct {
508 uint32 ulmaxnumtoret;
509 uint32 idrepresentitive;
510 } wsp_repofdata;
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;
516 [default];
517 } opt_type_data;
519 /* MS-WSP 2.2.1.25 CAggregSpec */
520 typedef [public] struct {
521 uint8 type;
522 [flag(NDR_ALIGN4)] DATA_BLOB _pad1;
523 uint32 ccalias;
524 [charset(UTF16)] uint8 alias[ccalias*2];
525 uint32 idcolumn;
526 [switch_is(type)] opt_type_data opt_data;
527 } wsp_caggregspec;
529 /* MS-WSP 2.2.1.24 CAggregSet */
530 typedef [public] struct {
531 uint32 ccount;
532 wsp_caggregspec aggregspecs[ccount];
533 } wsp_caggregset;
535 /* MS-WSP 2.2.1.27 CAggregSortKey */
536 typedef [public] struct {
537 uint32 order;
538 wsp_caggregspec columnspec;
539 } wsp_caggregsortkey;
541 /* MS-WSP 2.2.1.26 CSortAggregSet */
542 typedef [public] struct {
543 uint32 ccount;
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;
553 [default];
554 } wsp_opt_ingroupid;
556 typedef [public] struct {
557 uint8 type;
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 {
565 uint32 ccount;
566 wsp_cingroupsortaggregset sortsets[ccount];
567 } wsp_cingroupsortaggregsets;
569 /* MS-WSP 2.2.1.20 CCategorizationSpec */
570 typedef [public] struct {
571 wsp_ccolumnset cscolumns;
572 wsp_ccategspec spec;
573 wsp_caggregset aggregset;
574 wsp_csortaggregset sortaggregset;
575 wsp_cingroupsortaggregsets ingroupsortaggset;
576 uint32 cmaxresults;
577 } wsp_ccategorizationspec;
579 /* MS-WSP 2.2.1.19 CCategorizationSet */
580 typedef [public] struct {
581 uint32 size;
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;
588 GUID guidpropset;
589 uint32 ulkind;
590 [switch_is(ulkind)] wsp_propname_or_propid name_or_id;
591 } wsp_cfullpropspec;
593 /* MS-WSP 2.2.1.3 CContentRestriction */
594 typedef [public] struct {
595 wsp_cfullpropspec property;
596 [flag(NDR_ALIGN4)] DATA_BLOB _pad1;
597 uint32 cc;
598 [charset(UTF16)] uint8 pwcsphrase[cc*2];
599 [flag(NDR_ALIGN4)] DATA_BLOB _pad2;
600 uint32 lcid;
601 uint32 ulgeneratemethod;
602 } wsp_ccontentrestriction;
604 /* MS-WSP 2.2.1.7 CPropertyRestriction */
605 typedef [public] struct {
606 uint32 relop;
607 wsp_cfullpropspec property;
608 wsp_cbasestoragevariant prval;
609 [flag(NDR_ALIGN4)] DATA_BLOB _pad1;
610 uint32 lcid;
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;
617 uint32 cc;
618 [charset(UTF16)] uint8 pwcsphrase[cc*2];
619 [flag(NDR_ALIGN4)] DATA_BLOB _pad2;
620 uint32 lcid;
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 ?? */
631 /* float ffvalue; */
632 uint32 ffvalue;
633 wsp_crestriction childres[SINGLE_ITEM];
634 } wsp_ccoercionrestriction;
636 /* MS-WSP 2.2.1.11 CVectorRestriction */
637 typedef [public] struct {
638 uint32 pres;
639 [flag(NDR_ALIGN4)] DATA_BLOB padding;
640 uint32 uirankmethod;
641 } wsp_cvectorrestriction;
643 /* MS-WSP 2.2.1.9 CScopeRestriction */
644 typedef [public] struct {
645 uint32 cclowerpath;
646 [charset(UTF16)] uint8 lowerpath[cclowerpath*2];
647 [flag(NDR_ALIGN4)] DATA_BLOB padding;
648 uint32 length;
649 uint32 frecursive;
650 uint32 fvirtual;
651 } wsp_cscoperestriction;
653 /* MS-WSP 2.2.1.8 CReuseWhere */
654 typedef [public] struct {
655 uint32 whereid;
656 } wsp_creusewhere;
658 /* MS-WSP 2.2.1.4 CInternalPropertyRestriction */
659 typedef [public] struct {
660 uint32 relop;
661 uint32 pid;
662 wsp_cbasestoragevariant prval;
663 uint32 lcid;
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;
672 uint32 fik1;
673 uint32 fik2;
674 uint32 fik3;
675 uint32 flb;
676 uint32 cfeedbackdoc;
677 uint32 probquerypid;
678 } wsp_cprobrestriction;
680 /* MS-WSP 2.2.1.15 CFeedbackRestriction */
681 typedef [public] struct {
682 uint32 feedbackdoc;
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 {
692 [case(RTNONE)];
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;
712 } wsp_crestrictions;
715 /* MS-WSP 2.2.1.17 CRestriction */
716 typedef [public] struct {
717 uint32 ultype;
718 uint32 weight;
719 [switch_is(ultype)] wsp_crestrictions restriction;
720 } wsp_crestriction;
722 /* MS-WSP 2.2.1.16 CRestrictionArray */
723 typedef [flag(NDR_NOALIGN),public] struct {
724 uint8 count;
725 uint8 ispresent;
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;
735 uint32 cmaxresults;
736 uint32 ccmdtimeout;
737 } wsp_crowsetproperties;
739 /* MS-WSP 2.2.1.32 CPidMapper */
740 typedef [public] struct {
741 uint32 count;
742 [flag(NDR_ALIGN4)] DATA_BLOB _pad2;
743 wsp_cfullpropspec apropspec[count];
744 } wsp_cpidmapper;
746 /* MS-WSP 2.2.1.35 SProperty */
747 typedef [public] struct {
748 uint32 pid;
749 uint32 weight;
750 } wsp_sproperty;
752 /* MS-WSP 2.2.1.34 CColumnGroup */
753 typedef [public] struct {
754 uint32 count;
755 uint32 grouppid;
756 wsp_sproperty props[count];
757 } wsp_ccolumngroup;
759 /* MS-WSP 2.2.1.33 CColumnGroupArray */
760 typedef [public] struct {
761 uint32 count;
762 wsp_ccolumngroup agrouparray[count];
763 } wsp_ccolumngrouparray;
765 typedef [public,nodiscriminant,switch_type(uint8)] union {
766 [case(0)];
767 [default] wsp_cingroupsortaggregsets groupsortaggregsets;
768 }opt_wsp_cingroupsortaggregsets;
770 typedef [public,nodiscriminant,switch_type(uint8)] union {
771 [case(0)];
772 [default] wsp_crestrictionarray restrictionarray;
773 }opt_wsp_crestrictionarray;
775 typedef [public,nodiscriminant,switch_type(uint8)] union {
776 [case(0)];
777 [default] wsp_ccolumnset columnset;
778 }opt_wsp_ccolumnset;
780 typedef [public,nodiscriminant,switch_type(uint8)] union {
781 [case(0)];
782 [default] wsp_ccategorizationset ccategorizationset;
783 }opt_wsp_ccategorizationset;
785 typedef [public] struct {
786 uint32 size;
787 uint8 ccolumnsetpresent;
788 /* padding is not needed here (and below)
789 * as structures are default aligned to 4 byte
790 * boundaries.
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;
807 uint32 lcid;
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
820 * the request
822 } wsp_cpmcreatequeryout;
824 typedef [public, nodiscriminant, switch_type(uint8)] union {
825 [case(1)] uint8 value;
826 [case(0)];
827 } aggregatetype;
829 typedef [public, nodiscriminant, switch_type(uint8)] union {
830 [case(1)] uint16 value;
831 [case(0)];
832 } valueoffset;
834 typedef [public, nodiscriminant, switch_type(uint8)] union {
835 [case(1)] uint16 value;
836 [case(0)];
837 } valuesize;
839 typedef [public, nodiscriminant, switch_type(uint8)] union {
840 [case(1)] uint16 value;
841 [case(0)];
842 } lengthoffset;
844 typedef [public, nodiscriminant, switch_type(uint8)] union {
845 [case(1)] uint16 value;
846 [case(0)];
847 } statusoffset;
849 /* MS-WSP 2.2.1.43 CTableColumn */
850 typedef [public] struct {
851 wsp_cfullpropspec propspec;
852 uint32 vtype;
853 uint8 aggregateused;
854 [switch_is(aggregateused)] aggregatetype aggregatetype;
855 uint8 valueused;
856 [switch_is(valueused)] valueoffset valueoffset; /* auto aligned to 2 byte boundary */
857 [switch_is(valueused)] valuesize valuesize; /* auto aligned to 2 byte boundary */
858 uint8 statusused;
859 [switch_is(statusused)] statusoffset statusoffset; /* auto aligned to 2 byte boundary */
860 uint8 lengthused;
861 [switch_is(lengthused)] lengthoffset lengthoffset; /* auto aligned to 2 byte boundary */
862 } wsp_ctablecolumn;
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 {
870 uint32 type;
871 uint32 lcid;
872 uint32 ccomplstrings;
873 wsp_serializedpropertyvalue apszcomplstrings[ccomplstrings];
874 uint32 ccomplpids;
875 uint32 acomplpids[ccomplpids];
876 } wsp_ccompletioncategspec;
878 /* MS-WSP 2.2.3.10 CPMSetBindingsIn */
879 typedef [public] struct {
880 uint32 hcursor;
881 uint32 brow;
882 uint32 bbindingdesc;
883 uint32 dummy;
884 uint32 ccolumns;
885 wsp_ctablecolumn acolumns[ccolumns];
886 } wsp_cpmsetbindingsin;
888 /* MS-WSP 2.2.1.39 CRowSeekNext */
889 typedef [public] struct {
890 uint32 cskip;
891 } wsp_crowseeknext;
893 /* MS-WSP 2.2.1.36 CRowSeekAt */
894 typedef [public] struct {
895 uint32 bmkoffset;
896 uint32 cskip;
897 uint32 hregion;
898 } wsp_crowseekat;
900 /* MS-WSP 2.2.1.37 CRowSeekAtRatio */
901 typedef [public] struct {
902 uint32 ulnumerator;
903 uint32 uldenominator;
904 uint32 hregion;
905 } wsp_crowseekatratio;
907 /* MS-WSP 2.2.1.38 CRowSeekByBookmark */
908 typedef [public] struct {
909 uint32 cbookmarks;
910 uint32 abookmarks[cbookmarks];
911 uint32 maxret;
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 {
925 uint32 hcursor;
926 uint32 crowstotransfer;
927 uint32 cbrowWidth;
928 uint32 cbseek;
929 uint32 cbreserved;
930 uint32 cbreadbuffer;
931 uint32 ulclientbase;
932 uint32 fbwdfetch;
933 uint32 etype;
934 uint32 chapt;
935 [switch_is(etype)] wsp_seekdescription seekdescription;
936 } wsp_cpmgetrowsin;
938 /* MS-WSP 2.2.1.42 */
939 typedef [public] struct {
940 uint16 vtype;
941 uint16 reserved1;
942 uint32 reserved2;
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) */
946 } wsp_ctablevariant;
948 /* MS-WSP 2.2.3.12 CPMGetRowsOut */
949 typedef [public] struct {
950 uint32 rowsreturned;
951 uint32 etype;
952 uint32 chapt;
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.
959 } wsp_cpmgetrowsout;
961 /* MS-WSP 2.2.3.24 CPMFreeCursorIn */
962 typedef [public] struct {
963 uint32 hcursor;
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 {
973 uint32 hcursor;
974 } wsp_cpmgetquerystatusin;
976 /* MS-WSP 2.2.3.7 CPMGetQueryStatusOut */
977 typedef [public] struct {
978 uint32 qstatus;
979 } wsp_cpmgetquerystatusout;
981 /* MS-WSP 2.2.3.8 CPMGetQueryStatusExIn */
982 typedef [public] struct {
983 uint32 hcursor;
984 uint32 bmk;
985 } wsp_cpmgetquerystatusexin;
987 /* MS-WSP 2.2.3.9 CPMGetQueryStatusExOut */
988 typedef [public] struct {
989 uint32 qstatus;
990 uint32 cfiltereddocuments;
991 uint32 cdocumentstofilter;
992 uint32 dwratiofinisheddenominator;
993 uint32 dwratiofinishednumerator;
994 uint32 irowbmk;
995 uint32 crowstotal;
996 uint32 maxrank;
997 uint32 resultsfound;
998 uint32 whereid;
999 } wsp_cpmgetquerystatusexout;
1001 /* MS-WSP 2.2.3.23 CPMRestartPositionIn */
1002 typedef [public] struct {
1003 uint32 hcursor;
1004 uint32 chapter;
1005 } wsp_cpmrestartpositionin;
1007 /* MS-WSP 2.2.3.13 CPMRatioFinishedIn */
1008 typedef [public] struct {
1009 uint32 hcursor;
1010 uint32 fquick;
1011 } wsp_cpmratiofinishedin;
1013 /* MS-WSP 2.2.3.14 CPMRatioFinishedOut */
1014 typedef [public] struct {
1015 uint32 ulnumerator;
1016 uint32 uldenominator;
1017 uint32 crows;
1018 uint32 fnewrows;
1019 } wsp_cpmratiofinishedout;
1021 /* MS-WSP 2.2.3.15 CPMRatioFinishedOut */
1022 typedef [public] struct {
1023 uint32 wid;
1024 uint32 cbsofar;
1025 uint32 cbpropspec;
1026 uint32 cbchunk;
1027 wsp_cfullpropspec propspec;
1028 } wsp_cpmfetchvaluein;
1030 typedef [public] struct {
1031 uint16 cdims;
1032 safearraybound rgsabound[cdims];
1033 int8 vdata[calc_array_size(rgsabound, cdims)];
1034 } vt_i1_safe2_array;
1036 typedef [public] struct {
1037 uint16 cdims;
1038 safearraybound rgsabound[cdims];
1039 uint8 vdata[calc_array_size(rgsabound, cdims)];
1040 } vt_ui1_safe2_array;
1042 typedef [public] struct {
1043 uint16 cdims;
1044 safearraybound rgsabound[cdims];
1045 int16 vdata[calc_array_size(rgsabound, cdims)];
1046 } vt_i2_safe2_array;
1048 typedef [public] struct {
1049 uint16 cdims;
1050 safearraybound rgsabound[cdims];
1051 uint16 vdata[calc_array_size(rgsabound, cdims)];
1052 } vt_ui2_safe2_array;
1054 typedef [public] struct {
1055 uint16 cdims;
1056 safearraybound rgsabound[cdims];
1057 int32 vdata[calc_array_size(rgsabound, cdims)];
1058 } vt_i4_safe2_array;
1060 typedef [public] struct {
1061 uint16 cdims;
1062 safearraybound rgsabound[cdims];
1063 uint32 vdata[calc_array_size(rgsabound, cdims)];
1064 } vt_ui4_safe2_array;
1066 typedef [public] struct {
1067 uint16 cdims;
1068 safearraybound rgsabound[cdims];
1069 dlong vdata[calc_array_size(rgsabound, cdims)];
1070 } vt_dlong_safe2_array;
1072 typedef [public] struct {
1073 uint16 cdims;
1074 safearraybound rgsabound[cdims];
1075 vt_bstr vdata[calc_array_size(rgsabound, cdims)];
1076 } vt_bstr_safe2_array;
1078 typedef [public] struct {
1079 uint16 cdims;
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;
1167 [case(VT_NULL)];
1168 [case(VT_EMPTY)];
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;
1173 } serialised_types;
1175 /* MS-WSP 2.2.1.44 SERIALIZEDPROPERTYVALUE */
1176 typedef [public] struct {
1177 uint32 dwtype;
1178 [switch_is(dwtype)] serialised_types rgb;
1179 } wsp_serializedpropertyvalue;
1181 /* MS-WSP 2.2.3.16 CPMFetchValueOut */
1182 typedef [public] struct {
1183 uint32 cbvalue;
1184 uint32 fmoreexists;
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 {
1201 uint32 priority;
1202 uint32 eventfrequency;
1203 } wsp_cpmsetscopeprioritizationin;
1205 /* MS-WSP 2.2.3.18 CPMSendNotifyOut */
1206 typedef [public] struct {
1207 uint32 watchnotify;
1208 } wsp_cpmsendnotifyout;
1210 /* MS-WSP 2.2.3.30 CPMGetRowsetNotifyOut */
1211 typedef [public] struct {
1212 uint32 wid;
1213 uint8 eventinfo;
1214 uint8 rowitemstate;
1215 uint8 changeditemstate;
1216 uint8 rowsetevent;
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 {
1230 uint32 hcursor;
1231 uint32 chapt;
1232 uint32 bmk;
1233 } wsp_cpmgetapproximatepositionin;
1235 /* MS-WSP 2.2.3.20 CPMGetApproximatePositionOut */
1236 typedef [public] struct {
1237 uint32 numerator;
1238 uint32 denominator;
1239 } wsp_cpmgetapproximatepositionout;
1241 /* MS-WSP 2.2.3.21 CPMCompareBmkIn */
1242 typedef [public] struct {
1243 uint32 hcursor;
1244 uint32 chapt;
1245 uint32 bmkfirst;
1246 uint32 bmksecond;
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 {
1256 uint32 cbstruct;
1257 uint32 cwordlist;
1258 uint32 cpersistentindex;
1259 uint32 cqueries;
1260 uint32 cdocuments;
1261 uint32 cfreshtest;
1262 uint32 dwmergeprogress;
1263 uint32 estate;
1264 uint32 cfiltereddocuments;
1265 uint32 ctotaldocuments;
1266 uint32 cpendingscans;
1267 uint32 dwindexsize;
1268 uint32 cuniquekeys;
1269 uint32 csecqdocuments;
1270 uint32 dwpropcachesize;
1271 } wsp_cpmcistateinout;
1273 /* MS-WSP 2.2.3.27 CPMFindIndicesIn */
1274 typedef [public] struct {
1275 uint32 cwids;
1276 uint32 cdepthprev;
1277 uint32 pwids[cwids];
1278 uint32 prgirowprev[cdepthprev];
1279 } wsp_findindicesin;
1281 /* MS-WSP 2.2.3.28 CPMFindIndicesOut */
1282 typedef [public] struct {
1283 uint32 cdepthnext;
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;
1307 } req_message;
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;
1328 } resp_message;
1330 typedef [public] struct {
1331 wsp_header header;
1332 [switch_is(header.msg)] req_message message;
1333 } wsp_request;
1335 typedef [public] struct {
1336 wsp_header header;
1337 [switch_is(header.msg)] resp_message message;
1338 } wsp_response;