/src/wireshark/epan/dissectors/packet-mswsp.c
Line | Count | Source |
1 | | /* packet-mswsp.c |
2 | | * Routines for Windows Search Protocol dissection |
3 | | * Copyright 2012, Gregor Beck <gregor.beck@sernet.de> |
4 | | * Copyright 2015, Noel Power <noel.power@suse.com> |
5 | | * |
6 | | * Wireshark - Network traffic analyzer |
7 | | * By Gerald Combs <gerald@wireshark.org> |
8 | | * Copyright 1998 Gerald Combs |
9 | | * |
10 | | * SPDX-License-Identifier: GPL-2.0-or-later |
11 | | */ |
12 | | |
13 | | # include "config.h" |
14 | | |
15 | | #include <epan/packet.h> |
16 | | #include <epan/expert.h> |
17 | | #include <epan/proto_data.h> |
18 | | #include <epan/exceptions.h> |
19 | | #include <epan/to_str.h> |
20 | | |
21 | | #include <wsutil/ws_roundup.h> |
22 | | |
23 | | #include "packet-smb.h" |
24 | | #include "packet-smb2.h" |
25 | | #include "packet-dcom.h" /* HRESULT */ |
26 | | #include "packet-dcerpc-nt.h" |
27 | | |
28 | | void proto_register_mswsp(void); |
29 | | |
30 | 0 | #define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x)) |
31 | | |
32 | | enum vType { |
33 | | VT_EMPTY = 0x00, |
34 | | VT_NULL = 0x01, |
35 | | VT_I2 = 0x02, |
36 | | VT_I4 = 0x03, |
37 | | VT_R4 = 0x04, |
38 | | VT_R8 = 0x05, |
39 | | VT_CY = 0x06, |
40 | | VT_DATE = 0x07, |
41 | | VT_BSTR = 0x08, |
42 | | VT_ERROR = 0x0a, |
43 | | VT_BOOL = 0x0b, |
44 | | VT_VARIANT = 0x0c, |
45 | | VT_DECIMAL = 0x0e, |
46 | | VT_I1 = 0x10, |
47 | | VT_UI1 = 0x11, |
48 | | VT_UI2 = 0x12, |
49 | | VT_UI4 = 0x13, |
50 | | VT_I8 = 0x14, |
51 | | VT_UI8 = 0x15, |
52 | | VT_INT = 0x16, |
53 | | VT_UINT = 0x17, |
54 | | VT_LPSTR = 0x1e, |
55 | | VT_LPWSTR = 0x1f, |
56 | | VT_COMPRESSED_LPWSTR = 0x23, |
57 | | VT_FILETIME = 0x40, |
58 | | VT_BLOB = 0x41, |
59 | | VT_BLOB_OBJECT = 0x46, |
60 | | VT_CLSID = 0x48, |
61 | | VT_VECTOR = 0x1000, |
62 | | VT_ARRAY = 0x2000 |
63 | | }; |
64 | | |
65 | | struct data_blob { |
66 | | uint8_t *data; |
67 | | uint32_t size; |
68 | | }; |
69 | | |
70 | | struct data_str { |
71 | | const char *str; |
72 | | uint32_t len; |
73 | | }; |
74 | | |
75 | | struct vt_decimal { |
76 | | uint32_t hi, lo, mid; |
77 | | }; |
78 | | |
79 | | |
80 | | struct vt_vector { |
81 | | uint32_t len; |
82 | | union { |
83 | | int8_t *vt_i1; |
84 | | uint8_t *vt_ui1; |
85 | | int16_t *vt_i2; |
86 | | uint16_t *vt_ui2, *vt_bool; |
87 | | int32_t *vt_i4; |
88 | | uint32_t *vt_ui4, *vt_error; |
89 | | int64_t *vt_i8, *vt_cy, *vt_filetime; |
90 | | uint64_t *vt_ui8; |
91 | | float *vt_r4; |
92 | | double *vt_r8, *vt_date; |
93 | | e_guid_t *vt_clsid; |
94 | | struct data_blob *vt_blob, *vt_blob_object; |
95 | | struct data_str *vt_lpstr, *vt_lpwstr, *vt_compressed_lpwstr, *vt_bstr; |
96 | | } u; |
97 | | }; |
98 | | |
99 | | struct SAFEARRAYBOUNDS { |
100 | | uint32_t cElements, lLbound; |
101 | | }; |
102 | | |
103 | | struct vt_array { |
104 | | struct vt_vector vData; |
105 | | uint16_t cDims, fFeature; |
106 | | uint32_t cbElements; |
107 | | |
108 | | struct SAFEARRAYBOUNDS *Rgsabound; |
109 | | }; |
110 | | |
111 | | union vt_single |
112 | | { |
113 | | int8_t vt_i1; |
114 | | uint8_t vt_ui1; |
115 | | int16_t vt_i2; |
116 | | uint16_t vt_ui2, vt_bool; |
117 | | int32_t vt_i4, vt_int; |
118 | | uint32_t vt_ui4, vt_uint, vt_error; |
119 | | int64_t vt_i8, vt_cy, vt_filetime; |
120 | | uint64_t vt_ui8; |
121 | | double vt_r8, vt_date; |
122 | | e_guid_t vt_clsid; |
123 | | float vt_r4; |
124 | | struct vt_decimal vt_decimal; |
125 | | struct data_blob vt_blob, vt_blob_object; |
126 | | struct data_str vt_lpstr, vt_lpwstr, vt_compressed_lpwstr, vt_bstr; |
127 | | }; |
128 | | |
129 | | union vValue { |
130 | | union vt_single vt_single; |
131 | | struct vt_vector vt_vector; |
132 | | struct vt_array vt_array; |
133 | | }; |
134 | | |
135 | | struct vtype_data { |
136 | | enum vType tag; /* base type, high bits cleared */ |
137 | | const char *str; /* string rep of base type */ |
138 | | int size; /* -1 for variable length */ |
139 | | int (*tvb_get)(tvbuff_t*, packet_info*, int, void*);/* read StorageVariant */ |
140 | | int (*tvb_get_value_only)(tvbuff_t*, packet_info*, int, int, void*);/*read StorageVariant value*/ |
141 | | void (*strbuf_append)(wmem_strbuf_t*, void*); |
142 | | }; |
143 | | |
144 | | /* 2.2.1.1 */ |
145 | | struct CBaseStorageVariant { |
146 | | uint16_t vType; /* value enum vType */ |
147 | | uint16_t vData1; |
148 | | uint16_t vData2; |
149 | | union vValue vValue; |
150 | | |
151 | | struct vtype_data *type; |
152 | | }; |
153 | | |
154 | | /*****************************************************/ |
155 | | |
156 | | |
157 | | enum rType { |
158 | | RTNone = 0, |
159 | | RTAnd, |
160 | | RTOr, |
161 | | RTNot, |
162 | | RTContent, |
163 | | RTProperty, |
164 | | RTProximity, |
165 | | RTVector, |
166 | | RTNatLanguage, |
167 | | RTScope, |
168 | | RTCoerce_Add, |
169 | | RTCoerce_Multiply, |
170 | | RTCoerce_Absolute, |
171 | | RTProb, |
172 | | RTFeedback, |
173 | | RTReldoc, |
174 | | RTReuseWhere = 0x11, |
175 | | RTInternalProp = 0x00fffffa, |
176 | | RTPhrase = 0x00fffffd |
177 | | }; |
178 | | |
179 | | |
180 | | struct CRestriction; |
181 | | |
182 | | enum relop { |
183 | | PRLT = 0, |
184 | | PRLE, |
185 | | PRGT, |
186 | | PRGE, |
187 | | PREQ, |
188 | | PRNE, |
189 | | PRRE, |
190 | | PRAllBits, |
191 | | PRSomeBits, |
192 | | PRAll = 0x100, |
193 | | PRAny = 0x200 |
194 | | }; |
195 | | |
196 | | enum PRSPEC_Kind { |
197 | | PRSPEC_LPWSTR = 0, |
198 | | PRSPEC_PROPID |
199 | | }; |
200 | | |
201 | | /* 2.2.1.2 */ |
202 | | struct CFullPropSpec { |
203 | | e_guid_t guid; |
204 | | enum PRSPEC_Kind kind; |
205 | | union { |
206 | | uint32_t propid; |
207 | | const uint8_t *name; |
208 | | } u; |
209 | | }; |
210 | | |
211 | | /* 2.2.1.7 */ |
212 | | struct CPropertyRestriction { |
213 | | uint32_t relop; /*with value enum relop*/ |
214 | | struct CFullPropSpec property; |
215 | | struct CBaseStorageVariant prval; |
216 | | uint32_t lcid; |
217 | | }; |
218 | | |
219 | | /* 2.2.1.6 */ |
220 | | struct CNodeRestriction { |
221 | | uint32_t cNode; |
222 | | struct CRestriction *paNode; |
223 | | }; |
224 | | |
225 | | /* 2.2.1.17 */ |
226 | | struct CRestriction { |
227 | | enum rType ulType; |
228 | | uint32_t Weight; |
229 | | union { |
230 | | struct CNodeRestriction *RTAnd, *RTOr, *RTProximity, *RTPhrase; |
231 | | struct CRestriction *RTNot; |
232 | | struct CContentRestriction *RTContent; |
233 | | struct CPropertyRestriction *RTProperty; |
234 | | struct CVectorRestriction *RTVector; |
235 | | struct CNatLanguageRestriction *RTNatLanguage; |
236 | | struct CScopeRestriction *RTScope; |
237 | | struct CReuseWhere *RTReuseWhere; |
238 | | struct CInternalPropertyRestriction *RTInternalProp; |
239 | | struct CCoercionRestriction *RTCoerce_Add, *RTCoerce_Multiply, *RTCoerce_Absolute; |
240 | | } u; |
241 | | }; |
242 | | |
243 | | |
244 | | /* 2.2.1.12 */ |
245 | | struct CCoercionRestriction { |
246 | | float value; |
247 | | struct CRestriction child; |
248 | | }; |
249 | | |
250 | | /* 2.2.1.3 */ |
251 | | struct CContentRestriction { |
252 | | struct CFullPropSpec property; |
253 | | const uint8_t *phrase; |
254 | | uint32_t lcid; |
255 | | uint32_t method; |
256 | | }; |
257 | | |
258 | | /* 2.2.1.8 */ |
259 | | struct CReuseWhere /*Restriction*/ { |
260 | | uint32_t whereId; |
261 | | }; |
262 | | |
263 | | /* 2.2.1.5 */ |
264 | | struct CNatLanguageRestriction { |
265 | | struct CFullPropSpec property; |
266 | | const uint8_t *phrase; |
267 | | uint32_t lcid; |
268 | | }; |
269 | | |
270 | | #define PROP_LENGTH 255 |
271 | | |
272 | | enum aggtype { |
273 | | DBAGGTTYPE_BYNONE = 0x0, |
274 | | DBAGGTTYPE_SUM, |
275 | | DBAGGTTYPE_MAX, |
276 | | DBAGGTTYPE_MIN, |
277 | | DBAGGTTYPE_AVG, |
278 | | DBAGGTTYPE_COUNT, |
279 | | DBAGGTTYPE_CHILDCOUNT, |
280 | | DBAGGTTYPE_BYFREQ, |
281 | | DBAGGTTYPE_FIRST, |
282 | | DBAGGTTYPE_DATERANGE, |
283 | | DBAGGTTYPE_REPRESENTATIVEOF, |
284 | | DBAGGTTYPE_EDITDISTANCE, |
285 | | }; |
286 | | |
287 | | static const value_string DBAGGTTYPE[] = { |
288 | | {DBAGGTTYPE_BYNONE, "DBAGGTTYPE_BYNONE"}, |
289 | | {DBAGGTTYPE_SUM, "DBAGGTTYPE_SUM"}, |
290 | | {DBAGGTTYPE_MAX, "DBAGGTTYPE_MAX"}, |
291 | | {DBAGGTTYPE_MIN, "DBAGGTTYPE_MIN"}, |
292 | | {DBAGGTTYPE_AVG, "DBAGGTTYPE_AVG"}, |
293 | | {DBAGGTTYPE_COUNT, "DBAGGTTYPE_COUNT"}, |
294 | | {DBAGGTTYPE_CHILDCOUNT, "DBAGGTTYPE_CHILDCOUNT"}, |
295 | | {DBAGGTTYPE_BYFREQ, "DBAGGTTYPE_BYFREQ"}, |
296 | | {DBAGGTTYPE_FIRST, "DBAGGTTYPE_FIRST"}, |
297 | | {DBAGGTTYPE_DATERANGE, "DBAGGTTYPE_DATERANGE"}, |
298 | | {DBAGGTTYPE_REPRESENTATIVEOF, "DBAGGTTYPE_REPRESENTATIVEOF"}, |
299 | | {DBAGGTTYPE_EDITDISTANCE, "DBAGGTTYPE_EDITDISTANCE"}, |
300 | | {0, NULL} |
301 | | }; |
302 | | |
303 | | /* 2.2.1.44 */ |
304 | | struct CTableColumn { |
305 | | /*struct CFullPropSpec propspec;*/ |
306 | | uint32_t vtype; |
307 | | uint8_t aggregateused; |
308 | | uint8_t aggregatetype; |
309 | | uint8_t valueused; |
310 | | uint16_t valueoffset; |
311 | | uint16_t valuesize; |
312 | | uint8_t statusused; |
313 | | uint16_t statusoffset; |
314 | | uint8_t lengthused; |
315 | | uint16_t lengthoffset; |
316 | | char* name; |
317 | | }; |
318 | | /* Minimum size in bytes on the wire CTableColumn can be */ |
319 | 0 | #define MIN_CTABLECOL_SIZE 32 |
320 | | /* Maximum sane size in bytes on the wire CTableColumn can be. Arbitrary. */ |
321 | 0 | #define MAX_CTABLECOL_SIZE 5000 |
322 | | |
323 | | /* 2.2.3.10 */ |
324 | | |
325 | | struct CPMSetBindingsIn { |
326 | | uint32_t hcursor; |
327 | | uint32_t brow; |
328 | | uint32_t bbindingdesc; |
329 | | uint32_t dummy; |
330 | | uint32_t ccolumns; |
331 | | struct CTableColumn *acolumns; |
332 | | }; |
333 | | |
334 | | struct vector_or_array_64 { |
335 | | uint64_t count; |
336 | | uint64_t array_address; |
337 | | }; |
338 | | |
339 | | struct vector_or_array_32 { |
340 | | uint32_t count; |
341 | | uint32_t array_address; |
342 | | }; |
343 | | |
344 | | /* 2.2.1.42 */ |
345 | | struct CRowVariant { |
346 | | uint16_t vtype; |
347 | | uint16_t reserved1; |
348 | | uint32_t reserved2; |
349 | | union { |
350 | | uint8_t byte; |
351 | | uint16_t shortw; |
352 | | uint32_t longw; |
353 | | uint64_t hyperw; |
354 | | union { |
355 | | struct vector_or_array_64 i64; |
356 | | struct vector_or_array_32 i32; |
357 | | } array_vector; |
358 | | } content; |
359 | | }; |
360 | | |
361 | | static int SMB1 = 1; |
362 | | static int SMB2 = 2; |
363 | | |
364 | | void proto_reg_handoff_mswsp(void); |
365 | | |
366 | | static expert_field ei_mswsp_invalid_variant_type; |
367 | | static expert_field ei_missing_msg_context; |
368 | | static expert_field ei_mswsp_msg_cpmsetbinding_ccolumns; |
369 | | |
370 | | static int proto_mswsp; |
371 | | static int hf_mswsp_msg; |
372 | | static int hf_mswsp_hdr; |
373 | | static int hf_mswsp_hdr_msg; |
374 | | static int hf_mswsp_hdr_status; |
375 | | static int hf_mswsp_hdr_checksum; |
376 | | static int hf_mswsp_hdr_reserved; |
377 | | static int hf_mswsp_msg_Connect_Version; |
378 | | static int hf_mswsp_msg_ConnectIn_ClientIsRemote; |
379 | | static int hf_mswsp_msg_ConnectIn_Blob1; |
380 | | static int hf_mswsp_msg_ConnectIn_MachineName; |
381 | | static int hf_mswsp_msg_ConnectIn_UserName; |
382 | | static int hf_mswsp_msg_ConnectIn_PropSets_num; |
383 | | static int hf_mswsp_bool_options; |
384 | | static int hf_mswsp_bool_options_cursor; |
385 | | static int hf_mswsp_bool_options_async; |
386 | | static int hf_mswsp_bool_options_firstrows; |
387 | | static int hf_mswsp_bool_options_holdrows; |
388 | | static int hf_mswsp_bool_options_chaptered; |
389 | | static int hf_mswsp_bool_options_useci; |
390 | | static int hf_mswsp_bool_options_defertrim; |
391 | | static int hf_mswsp_bool_options_rowsetevents; |
392 | | static int hf_mswsp_bool_options_dontcomputeexpensive; |
393 | | static int hf_mswsp_guid_time_low; |
394 | | static int hf_mswsp_guid_time_mid; |
395 | | static int hf_mswsp_guid_time_high; |
396 | | static int hf_mswsp_guid_time_clock_hi; |
397 | | static int hf_mswsp_guid_time_clock_low; |
398 | | static int hf_mswsp_guid_node; |
399 | | static int hf_mswsp_lcid; |
400 | | static int hf_mswsp_lcid_sortid; |
401 | | static int hf_mswsp_lcid_langid; |
402 | | static int hf_mswsp_cscort_column; |
403 | | static int hf_mswsp_cscort_order; |
404 | | static int hf_mswsp_cscort_individual; |
405 | | static int hf_mswsp_cscortset_count; |
406 | | static int hf_mswsp_ctablecolumn_vtype; |
407 | | static int hf_mswsp_ctablecolumn_aggused; |
408 | | static int hf_mswsp_ctablecolumn_aggtype; |
409 | | static int hf_mswsp_ctablecolumn_valused; |
410 | | static int hf_mswsp_ctablecolumn_valoffset; |
411 | | static int hf_mswsp_ctablecolumn_valsize; |
412 | | static int hf_mswsp_ctablecolumn_statused; |
413 | | static int hf_mswsp_ctablecolumn_statoffset; |
414 | | static int hf_mswsp_ctablecolumn_lenused; |
415 | | static int hf_mswsp_ctablecolumn_lenoffset; |
416 | | static int hf_mswsp_cfullpropspec_kind; |
417 | | static int hf_mswsp_cfullpropspec_propid; |
418 | | static int hf_mswsp_cfullpropspec_propname; |
419 | | static int hf_mswsp_cproprestrict_relop; |
420 | | static int hf_mswsp_ccoercerestrict_value; |
421 | | static int hf_mswsp_ccontentrestrict_cc; |
422 | | static int hf_mswsp_ccontentrestrict_phrase; |
423 | | static int hf_mswsp_ccontentrestrict_method; |
424 | | static int hf_mswsp_natlangrestrict_cc; |
425 | | static int hf_mswsp_natlangrestrict_phrase; |
426 | | static int hf_mswsp_crestrict_ultype; |
427 | | static int hf_mswsp_crestrict_weight; |
428 | | static int hf_mswsp_crestrictarray_count; |
429 | | static int hf_mswsp_crestrictarray_present; |
430 | | static int hf_mswsp_cnoderestrict_cnode; |
431 | | static int hf_mswsp_cbasestorvariant_vtype; |
432 | | static int hf_mswsp_cbasestorvariant_vvalue; |
433 | | static int hf_mswsp_cbasestorvariant_vdata1; |
434 | | static int hf_mswsp_cbasestorvariant_vdata2; |
435 | | static int hf_mswsp_cbasestorvariant_num; |
436 | | static int hf_mswsp_cbasestorvariant_cdims; |
437 | | static int hf_mswsp_cbasestorvariant_ffeatures; |
438 | | static int hf_mswsp_cbasestorvariant_cbelements; |
439 | | static int hf_mswsp_cbasestorvariant_rgsabound; |
440 | | static int hf_mswsp_cdbcolid_ekind; |
441 | | static int hf_mswsp_cdbcolid_ulid; |
442 | | static int hf_mswsp_cdbcolid_vstring; |
443 | | static int hf_mswsp_cdbprop_id; |
444 | | static int hf_mswsp_cdbprop_options; |
445 | | static int hf_mswsp_cdbprop_status; |
446 | | static int hf_mswsp_cdbpropset_cprops; |
447 | | static int hf_mswsp_rangeboundry_ultype; |
448 | | static int hf_mswsp_rangeboundry_labelpresent; |
449 | | static int hf_mswsp_rangeboundry_cclabel; |
450 | | static int hf_mswsp_rangeboundry_label; |
451 | | static int hf_mswsp_crangecategspec_crange; |
452 | | static int hf_mswsp_ccategspec_type; |
453 | | static int hf_mswsp_caggregspec_type; |
454 | | static int hf_mswsp_caggregspec_ccalias; |
455 | | static int hf_mswsp_caggregspec_alias; |
456 | | static int hf_mswsp_caggregspec_idcolumn; |
457 | | static int hf_mswsp_caggregspec_ulmaxnumtoreturn; |
458 | | static int hf_mswsp_caggregspec_idrepresentative; |
459 | | static int hf_mswsp_caggregset_count; |
460 | | static int hf_mswsp_caggregsortkey_order; |
461 | | static int hf_mswsp_csortaggregset_count; |
462 | | static int hf_mswsp_cingroupsortaggregset_type; |
463 | | static int hf_mswsp_cingroupsortaggregsets_count; |
464 | | static int hf_mswsp_categorizationspec_cmaxres; |
465 | | static int hf_mswsp_crowsetprops_ulmaxopenrows; |
466 | | static int hf_mswsp_crowsetprops_ulmemusage; |
467 | | static int hf_mswsp_crowsetprops_cmaxresults; |
468 | | static int hf_mswsp_crowsetprops_ccmdtimeout; |
469 | | static int hf_mswsp_cpidmapper_count; |
470 | | static int hf_mswsp_ccolumngroup_count; |
471 | | static int hf_mswsp_ccolumngroup_grouppid; |
472 | | static int hf_mswsp_ccolumngroup_pid; |
473 | | static int hf_mswsp_ccolumngrouparray_count; |
474 | | static int hf_mswsp_int32array_value; |
475 | | static int hf_mswsp_crowseeknext_cskip; |
476 | | static int hf_mswsp_crowseekat_bmkoffset; |
477 | | static int hf_mswsp_crowseekat_skip; |
478 | | static int hf_mswsp_crowseekat_hregion; |
479 | | static int hf_mswsp_crowseekatratio_ulnumerator; |
480 | | static int hf_mswsp_crowseekatratio_uldenominator; |
481 | | static int hf_mswsp_crowseekatratio_hregion; |
482 | | static int hf_mswsp_crowseekbybookmark_cbookmarks; |
483 | | static int hf_mswsp_crowseekbybookmark_maxret; |
484 | | static int hf_mswsp_crowvariantinfo_count64; |
485 | | static int hf_mswsp_arrayvector_address64; |
486 | | static int hf_mswsp_crowvariantinfo_count32; |
487 | | static int hf_mswsp_arrayvector_address32; |
488 | | static int hf_mswsp_rowvariant_item_address64; |
489 | | static int hf_mswsp_rowvariant_item_address32; |
490 | | static int hf_mswsp_rowvariant_item_value; |
491 | | static int hf_mswsp_rowvariant_vtype; |
492 | | static int hf_mswsp_rowvariant_reserved1; |
493 | | static int hf_mswsp_rowvariant_reserved2; |
494 | | static int hf_mswsp_ctablecolumn_status; |
495 | | static int hf_mswsp_ctablecolumn_length; |
496 | | static int hf_mswsp_msg_cpmcreatequery_size; |
497 | | static int hf_mswsp_msg_cpmcreatequery_ccolumnsetpresent; |
498 | | static int hf_mswsp_msg_cpmcreatequery_crestrictionpresent; |
499 | | static int hf_mswsp_msg_cpmcreatequery_csortpresent; |
500 | | static int hf_mswsp_msg_cpmcreatequery_ccategpresent; |
501 | | static int hf_mswsp_msg_cpmcreatequery_ccateg_count; |
502 | | static int hf_mswsp_msg_cpmcreatequery_trueseq; |
503 | | static int hf_mswsp_msg_cpmcreatequery_workid; |
504 | | static int hf_mswsp_msg_cpmcreatequery_cursors; |
505 | | static int hf_mswsp_msg_cpmgetrows_hcursor; |
506 | | static int hf_mswsp_msg_cpmgetrows_rowstotransfer; |
507 | | static int hf_mswsp_msg_cpmgetrows_rowwidth; |
508 | | static int hf_mswsp_msg_cpmgetrows_cbseek; |
509 | | static int hf_mswsp_msg_cpmgetrows_cbreserved; |
510 | | static int hf_mswsp_msg_cpmgetrows_cbreadbuffer; |
511 | | static int hf_mswsp_msg_cpmgetrows_ulclientbase; |
512 | | static int hf_mswsp_msg_cpmgetrows_fbwdfetch; |
513 | | static int hf_mswsp_msg_cpmgetrows_etype; |
514 | | static int hf_mswsp_msg_cpmgetrows_chapt; |
515 | | static int hf_mswsp_msg_cpmgetrows_crowsreturned; |
516 | | static int hf_mswsp_msg_cpmratiofinished_hcursor; |
517 | | static int hf_mswsp_msg_cpmratiofinished_fquick; |
518 | | static int hf_mswsp_msg_cpmratiofinished_ulnumerator; |
519 | | static int hf_mswsp_msg_cpmratiofinished_uldenominator; |
520 | | static int hf_mswsp_msg_cpmratiofinished_crows; |
521 | | static int hf_mswsp_msg_cpmratiofinished_fnewrows; |
522 | | static int hf_mswsp_msg_cpmcomparebmk_hcursor; |
523 | | static int hf_mswsp_msg_cpmcomparebmk_chapt; |
524 | | static int hf_mswsp_msg_cpmcomparebmk_bmkfirst; |
525 | | static int hf_mswsp_msg_cpmcomparebmk_bmksecond; |
526 | | static int hf_mswsp_msg_cpmcomparebmk_dwcomparison; |
527 | | static int hf_mswsp_msg_cpmgetapproxpos_hcursor; |
528 | | static int hf_mswsp_msg_cpmgetapproxpos_chapt; |
529 | | static int hf_mswsp_msg_cpmgetapproxpos_bmk; |
530 | | static int hf_mswsp_msg_cpmgetapproxpos_numerator; |
531 | | static int hf_mswsp_msg_cpmgetapproxpos_denominator; |
532 | | static int hf_mswsp_msg_cpmsetbinding_hcursor; |
533 | | static int hf_mswsp_msg_cpmsetbinding_cbrow; |
534 | | static int hf_mswsp_msg_cpmsetbinding_desc; |
535 | | static int hf_mswsp_msg_cpmsetbinding_dummy; |
536 | | static int hf_mswsp_msg_cpmsetbinding_ccolumns; |
537 | | static int hf_mswsp_msg_cpmsetbinding_acolumns; |
538 | | static int hf_mswsp_msg_cpmsendnotify_watchnotify; |
539 | | static int hf_mswsp_msg_cpmgetquerystatus_hcursor; |
540 | | static int hf_mswsp_msg_cpmgetquerystatus_qstatus; |
541 | | static int hf_mswsp_msg_cpmcistate_cbstruct; |
542 | | static int hf_mswsp_msg_cpmcistate_cwordlist; |
543 | | static int hf_mswsp_msg_cpmcistate_cpersistindex; |
544 | | static int hf_mswsp_msg_cpmcistate_cqueries; |
545 | | static int hf_mswsp_msg_cpmcistate_cfreshtest; |
546 | | static int hf_mswsp_msg_cpmcistate_dwmergeprogress; |
547 | | static int hf_mswsp_msg_cpmcistate_estate; |
548 | | static int hf_mswsp_msg_cpmcistate_cfiltereddocs; |
549 | | static int hf_mswsp_msg_cpmcistate_ctotaldocs; |
550 | | static int hf_mswsp_msg_cpmcistate_cpendingscans; |
551 | | static int hf_mswsp_msg_cpmcistate_dwindexsize; |
552 | | static int hf_mswsp_msg_cpmcistate_cuniquekeys; |
553 | | static int hf_mswsp_msg_cpmcistate_csecqdocuments; |
554 | | static int hf_mswsp_msg_cpmcistate_dwpropcachesize; |
555 | | static int hf_mswsp_msg_cpmfetchvalue_wid; |
556 | | static int hf_mswsp_msg_cpmfetchvalue_cbsofar; |
557 | | static int hf_mswsp_msg_cpmfetchvalue_cbpropspec; |
558 | | static int hf_mswsp_msg_cpmfetchvalue_cbchunk; |
559 | | static int hf_mswsp_msg_cpmfetchvalue_cbvalue; |
560 | | static int hf_mswsp_msg_cpmfetchvalue_fmoreexists; |
561 | | static int hf_mswsp_msg_cpmfetchvalue_fvalueexists; |
562 | | static int hf_mswsp_msg_cpmfetchvalue_vvalue; |
563 | | static int hf_mswsp_msg_cpmquerystatusex_hcursor; |
564 | | static int hf_mswsp_msg_cpmquerystatusex_bmk; |
565 | | static int hf_mswsp_msg_cpmquerystatusex_qstatus; |
566 | | static int hf_mswsp_msg_cpmquerystatusex_cfiltereddocs; |
567 | | static int hf_mswsp_msg_cpmquerystatusex_cdocstofilter; |
568 | | static int hf_mswsp_msg_cpmquerystatusex_dwratiodenom; |
569 | | static int hf_mswsp_msg_cpmquerystatusex_dwrationumer; |
570 | | static int hf_mswsp_msg_cpmquerystatusex_irowbmk; |
571 | | static int hf_mswsp_msg_cpmquerystatusex_crowstotal; |
572 | | static int hf_mswsp_msg_cpmquerystatusex_maxrank; |
573 | | static int hf_mswsp_msg_cpmquerystatusex_cresultsfound; |
574 | | static int hf_mswsp_msg_cpmquerystatusex_whereid; |
575 | | static int hf_mswsp_msg_cpmrestartposition_hcursor; |
576 | | static int hf_mswsp_msg_cpmrestartposition_chapt; |
577 | | static int hf_mswsp_msg_cpmgetrowsetnotify_wid; |
578 | | static int hf_mswsp_msg_cpmgetrowsetnotify_moreevents; |
579 | | static int hf_mswsp_msg_cpmgetrowsetnotify_eventtype; |
580 | | static int hf_mswsp_msg_cpmgetrowsetnotify_rowsetitemstate; |
581 | | static int hf_mswsp_msg_cpmgetrowsetnotify_changeditemstate; |
582 | | static int hf_mswsp_msg_cpmgetrowsetnotify_rowsetevent; |
583 | | static int hf_mswsp_msg_cpmgetrowsetnotify_rowseteventdata1; |
584 | | static int hf_mswsp_msg_cpmgetrowsetnotify_rowseteventdata2; |
585 | | static int hf_mswsp_msg_cpmfindindices_cwids; |
586 | | static int hf_mswsp_msg_cpmfindindices_cdepthprev; |
587 | | static int hf_mswsp_msg_cpmfindindices_cdepthnext; |
588 | | static int hf_mswsp_msg_cpmsetscopeprioritization_priority; |
589 | | static int hf_mswsp_msg_cpmsetscopeprioritization_eventfreq; |
590 | | static int hf_mswsp_msg_cpmsetscopestatisics_dwindexitems; |
591 | | static int hf_mswsp_msg_cpmsetscopestatisics_dwoutstandingadds; |
592 | | static int hf_mswsp_msg_cpmsetscopestatisics_dwoutstandingmodifies; |
593 | | |
594 | | static int ett_mswsp; |
595 | | static int ett_mswsp_hdr; |
596 | | static int ett_mswsp_msg; |
597 | | static int ett_mswsp_pad; |
598 | | |
599 | | static int ett_mswsp_property_restriction; |
600 | | static int ett_CRestrictionArray; |
601 | | static int ett_CBaseStorageVariant; |
602 | | static int ett_CBaseStorageVariant_Vector; |
603 | | static int ett_CBaseStorageVariant_Array; |
604 | | static int ett_CDbColId; |
605 | | static int ett_GUID; |
606 | | static int ett_CDbProp; |
607 | | static int ett_CDbPropSet; |
608 | | static int ett_CDbPropSet_Array; |
609 | | static int ett_CRestriction; |
610 | | static int ett_CNodeRestriction; |
611 | | static int ett_CPropertyRestriction; |
612 | | static int ett_CCoercionRestriction; |
613 | | static int ett_CContentRestriction; |
614 | | static int ett_RANGEBOUNDARY; |
615 | | static int ett_CRangeCategSpec; |
616 | | static int ett_CCategSpec; |
617 | | static int ett_CAggregSpec; |
618 | | static int ett_CAggregSet; |
619 | | static int ett_CCategorizationSpec; |
620 | | static int ett_CAggregSortKey; |
621 | | static int ett_CSortAggregSet; |
622 | | static int ett_CInGroupSortAggregSet; |
623 | | static int ett_CInGroupSortAggregSets; |
624 | | static int ett_CRowsetProperties; |
625 | | static int ett_CFullPropSpec; |
626 | | static int ett_CPidMapper; |
627 | | static int ett_CSort; |
628 | | static int ett_CSortSet; |
629 | | static int ett_CNatLanguageRestriction; |
630 | | static int ett_CColumnGroup; |
631 | | static int ett_CColumnGroupArray; |
632 | | static int ett_LCID; |
633 | | static int ett_CTableColumn; |
634 | | static int ett_Array; |
635 | | static int ett_SeekDescription; |
636 | | static int ett_CRowsSeekNext; |
637 | | static int ett_CRowsSeekAt; |
638 | | static int ett_CRowsSeekAtRatio; |
639 | | static int ett_CRowsSeekByBookmark; |
640 | | static int ett_GetRowsRow; |
641 | | static int ett_GetRowsColumn; |
642 | | static int ett_CRowVariant; |
643 | | static int ett_CRowVariant_Vector; |
644 | | static int ett_mswsp_bool_options; |
645 | | static int ett_mswsp_uin32_array; |
646 | | static int ett_mswsp_msg_padding; |
647 | | static int ett_mswsp_msg_creusewhere; |
648 | | |
649 | | static struct vtype_data *vType_get_type(uint16_t t); |
650 | | |
651 | | /* conversation related data */ |
652 | | struct rows_data { |
653 | | uint32_t ulclientbase; |
654 | | uint32_t cbreserved; |
655 | | }; |
656 | | |
657 | | |
658 | | struct message_data { |
659 | | uint32_t fid; |
660 | | unsigned frame; |
661 | | uint16_t msg_id; |
662 | | bool is_request; |
663 | | int smb_level; |
664 | | union { |
665 | | struct CPMSetBindingsIn bindingsin;/* CPMBindingIn request */ |
666 | | struct rows_data rowsin; /*CPMGetRowsIn request*/ |
667 | | uint32_t version; /*CPMConnectIn request/response */ |
668 | | } content; |
669 | | }; |
670 | | |
671 | | struct mswsp_ct { |
672 | | GSList *GSL_message_data; |
673 | | }; |
674 | | |
675 | | static int msg_data_find(struct message_data *a, struct message_data *b) |
676 | 0 | { |
677 | 0 | if (a->fid == b->fid |
678 | 0 | && a->frame == b->frame |
679 | 0 | && a->msg_id == b->msg_id |
680 | 0 | && a->smb_level == b->smb_level |
681 | 0 | && a->is_request == b->is_request) { |
682 | 0 | return 0; |
683 | 0 | } |
684 | 0 | return 1; |
685 | 0 | } |
686 | | static smb_fid_info_t *find_fid_info(smb_info_t *si) |
687 | 32 | { |
688 | 32 | smb_fid_info_t *fid_info = NULL; |
689 | 32 | smb_transact_info_t *tri = (smb_transact_info_t *)((si->sip && (si->sip->extra_info_type == SMB_EI_TRI)) ? si->sip->extra_info : NULL); |
690 | 32 | GSList *iter; |
691 | 32 | uint32_t fid = 0; |
692 | | |
693 | 32 | if (tri == NULL) { |
694 | | /* fallback to try search visited RWINFO (for AndX request/response) */ |
695 | 32 | if (si->sip && (si->sip->extra_info_type == SMB_EI_RWINFO)) { |
696 | 31 | fid = si->sip->fid; |
697 | 31 | } |
698 | 32 | } else { |
699 | 0 | fid = tri->fid; |
700 | 0 | } |
701 | | |
702 | | |
703 | 32 | if (!fid) { |
704 | 4 | return NULL; |
705 | 4 | } |
706 | 47 | for (iter = si->ct->GSL_fid_info; iter; iter = iter->next) { |
707 | 19 | smb_fid_info_t *info = (smb_fid_info_t *)iter->data; |
708 | 19 | if ((info->tid == si->tid) && (info->fid == fid)) { |
709 | 0 | fid_info = info; |
710 | 0 | break; |
711 | 0 | } |
712 | 19 | } |
713 | 28 | return fid_info; |
714 | 32 | } |
715 | | |
716 | | static bool get_fid_and_frame(packet_info *pinfo, uint32_t *fid, unsigned *frame, |
717 | | void *data) |
718 | 0 | { |
719 | 0 | bool result = true; |
720 | 0 | int *p_smb_level = (int*)p_get_proto_data(wmem_file_scope(), pinfo, proto_mswsp, 0); |
721 | 0 | if (!p_smb_level) { |
722 | 0 | return false; |
723 | 0 | } |
724 | 0 | *frame = pinfo->num; |
725 | 0 | if (*p_smb_level == SMB1) { |
726 | 0 | smb_info_t *si = (smb_info_t*)data; |
727 | 0 | smb_fid_info_t *info; |
728 | 0 | info = find_fid_info(si); |
729 | 0 | if (!info) { |
730 | 0 | return false; |
731 | 0 | } |
732 | 0 | *fid = info->fid; |
733 | 0 | } else { |
734 | 0 | smb2_info_t *si2 = (smb2_info_t*)data; |
735 | 0 | uint32_t open_frame = 0, close_frame = 0; |
736 | 0 | char *fid_name = NULL; |
737 | 0 | if (si2->saved) { |
738 | 0 | dcerpc_fetch_polhnd_data(&si2->saved->policy_hnd, &fid_name, NULL, &open_frame, &close_frame, pinfo->num); |
739 | 0 | *fid = open_frame; |
740 | 0 | } else { |
741 | 0 | result = false; |
742 | 0 | } |
743 | 0 | } |
744 | 0 | return result; |
745 | 0 | } |
746 | | |
747 | | static struct message_data *find_or_create_message_data(struct mswsp_ct *conv_data, packet_info *pinfo, uint16_t msg_id, bool is_request, void *data) |
748 | 0 | { |
749 | 0 | struct message_data to_find; |
750 | 0 | struct message_data* msg_data = NULL; |
751 | 0 | GSList *result = NULL; |
752 | 0 | int *p_smb_level = (int*)p_get_proto_data(wmem_file_scope(), pinfo, proto_mswsp, 0); |
753 | 0 | to_find.is_request = is_request; |
754 | 0 | to_find.msg_id = msg_id; |
755 | 0 | to_find.smb_level = *p_smb_level; |
756 | 0 | if (!get_fid_and_frame(pinfo, &to_find.fid, &to_find.frame, data) || !conv_data) { |
757 | 0 | return msg_data; |
758 | 0 | } |
759 | 0 | result = g_slist_find_custom(conv_data->GSL_message_data, |
760 | 0 | &to_find, (GCompareFunc)msg_data_find); |
761 | 0 | if (!result) { |
762 | 0 | msg_data = wmem_new(wmem_file_scope(), struct message_data); |
763 | 0 | *msg_data = to_find; |
764 | 0 | conv_data->GSL_message_data = g_slist_prepend(conv_data->GSL_message_data, msg_data); |
765 | 0 | } else { |
766 | 0 | msg_data = (struct message_data*)result->data; |
767 | 0 | } |
768 | 0 | return msg_data; |
769 | 0 | } |
770 | | |
771 | | static struct mswsp_ct *get_create_converstation_data(packet_info *pinfo) |
772 | 0 | { |
773 | 0 | struct mswsp_ct *ct = NULL; |
774 | 0 | conversation_t *conversation; |
775 | |
|
776 | 0 | conversation = find_or_create_conversation(pinfo); |
777 | 0 | if (!conversation) { |
778 | 0 | return NULL; |
779 | 0 | } |
780 | 0 | ct = (struct mswsp_ct*)conversation_get_proto_data(conversation, proto_mswsp); |
781 | 0 | if (!ct) { |
782 | 0 | ct = wmem_new(wmem_file_scope(), struct mswsp_ct); |
783 | 0 | ct->GSL_message_data = NULL; |
784 | 0 | conversation_add_proto_data(conversation, proto_mswsp, ct); |
785 | 0 | } |
786 | |
|
787 | 0 | return ct; |
788 | 0 | } |
789 | | |
790 | | static struct message_data * |
791 | | find_matching_request_by_fid(struct mswsp_ct *ct, packet_info *pinfo, uint32_t msg, bool in, void *private_data) |
792 | 0 | { |
793 | 0 | uint32_t fid = 0; |
794 | 0 | unsigned frame = 0; |
795 | 0 | GSList *iter; |
796 | 0 | int *p_smb_level = (int*)p_get_proto_data(wmem_file_scope(), pinfo, proto_mswsp, 0); |
797 | |
|
798 | 0 | struct message_data *result = NULL; |
799 | 0 | get_fid_and_frame(pinfo, &fid, &frame, private_data); |
800 | 0 | for (iter = ct->GSL_message_data; iter; iter = iter->next) { |
801 | 0 | struct message_data* data = (struct message_data*)iter->data; |
802 | 0 | if (data->frame < frame && data->fid == fid && data->is_request == in |
803 | 0 | && data->msg_id == msg && data->smb_level == *p_smb_level) { |
804 | 0 | result = data; |
805 | 0 | break; |
806 | 0 | } |
807 | 0 | } |
808 | 0 | return result; |
809 | 0 | } |
810 | | |
811 | | static struct CPMSetBindingsIn * |
812 | | find_binding_msg_data(struct mswsp_ct *ct, packet_info *pinfo, void *private_data) |
813 | 0 | { |
814 | 0 | struct CPMSetBindingsIn *result = NULL; |
815 | 0 | struct message_data *data = find_matching_request_by_fid(ct, pinfo, 0xD0, true, private_data); |
816 | 0 | if (data) { |
817 | 0 | result = &data->content.bindingsin; |
818 | 0 | } |
819 | 0 | return result; |
820 | 0 | } |
821 | | |
822 | | static struct rows_data * |
823 | | find_rowsin_msg_data(struct mswsp_ct *ct, packet_info *pinfo, void *private_data) |
824 | 0 | { |
825 | 0 | struct rows_data *result = NULL; |
826 | 0 | struct message_data *data = find_matching_request_by_fid(ct, pinfo, 0xCC, true, private_data); |
827 | 0 | if (data) { |
828 | 0 | result = &data->content.rowsin; |
829 | 0 | } |
830 | 0 | return result; |
831 | 0 | } |
832 | | |
833 | | static bool is_64bit_mode(struct mswsp_ct *ct, packet_info *pinfo, bool *result, void *private_data) |
834 | 0 | { |
835 | 0 | uint32_t client_ver = 0; |
836 | 0 | uint32_t server_ver = 0; |
837 | 0 | struct message_data *data = find_matching_request_by_fid(ct, pinfo, 0xC8, |
838 | 0 | true, private_data); |
839 | 0 | if (data) { |
840 | 0 | client_ver = data->content.version; |
841 | 0 | data = find_matching_request_by_fid(ct, pinfo, 0xC8, false, private_data); |
842 | 0 | if (data) { |
843 | 0 | server_ver = data->content.version; |
844 | 0 | *result = (server_ver & 0xffff0000) && (client_ver & 0xffff0000); |
845 | 0 | return true; |
846 | 0 | } |
847 | 0 | } |
848 | 0 | return false; |
849 | 0 | } |
850 | | |
851 | | #define eSequential 0x00000001 |
852 | | #define eLocateable 0x00000003 |
853 | | #define eScrollable 0x00000007 |
854 | 14 | #define eAsynchronous 0x00000008 |
855 | 14 | #define eFirstRows 0x00000080 |
856 | 14 | #define eHoldRows 0x00000200 |
857 | 14 | #define eChaptered 0x00000800 |
858 | 14 | #define eUseCI 0x00001000 |
859 | 14 | #define eDeferTrimming 0x00002000 |
860 | 14 | #define eEnableRowsetEvents 0x00800000 |
861 | 14 | #define eDoNotComputeExpensiveProps 0x00400000 |
862 | | |
863 | | static const value_string cursor_vals[] = { |
864 | | { eSequential, "eSequential" }, |
865 | | { eLocateable, "eLocateable" }, |
866 | | { eScrollable, "eScrollable" }, |
867 | | { 0, NULL } |
868 | | }; |
869 | | |
870 | | |
871 | | |
872 | | /******************************************************************************/ |
873 | | struct GuidPropertySet { |
874 | | e_guid_t guid; |
875 | | const char *def; |
876 | | const char *desc; |
877 | | const value_string *id_map; |
878 | | }; |
879 | | |
880 | | /* 2.2.1.31.1 */ |
881 | | static const value_string DBPROPSET_FSCIFRMWRK_EXT_IDS[] = { |
882 | | {0x02, "DBPROP_CI_CATALOG_NAME"}, |
883 | | {0x03, "DBPROP_CI_INCLUDE_SCOPES"}, |
884 | | {0x04, "DBPROP_CI_SCOPE_FLAGS"}, |
885 | | {0x07, "DBPROP_CI_QUERY_TYPE"}, |
886 | | {0, NULL} |
887 | | }; |
888 | | |
889 | | static const value_string DBPROPSET_QUERYEXT_IDS[] = { |
890 | | {0x02, "DBPROP_USECONTENTINDEX"}, |
891 | | {0x03, "DBPROP_DEFERNONINDEXEDTRIMMING"}, |
892 | | {0x04, "DBPROP_USEEXTENDEDDBTYPES"}, |
893 | | {0x05, "DBPROP_IGNORENOISEONLYCLAUSES"}, |
894 | | {0x06, "DBPROP_GENERICOPTIONS_STRING"}, |
895 | | {0x07, "DBPROP_FIRSTROWS"}, |
896 | | {0x08, "DBPROP_DEFERCATALOGVERIFICATION"}, |
897 | | {0x0a, "DBPROP_GENERATEPARSETREE"}, |
898 | | {0x0c, "DBPROP_FREETEXTANYTERM"}, |
899 | | {0x0d, "DBPROP_FREETEXTUSESTEMMING"}, |
900 | | {0x0e, "DBPROP_IGNORESBRI"}, |
901 | | {0x10, "DBPROP_ENABLEROWSETEVENTS"}, |
902 | | {0, NULL} |
903 | | }; |
904 | | |
905 | | static const value_string DBPROPSET_CIFRMWRKCORE_EXT_IDS[] = { |
906 | | {0x02, "DBPROP_MACHINE"}, |
907 | | {0x03, "DBPROP_CLIENT_CLSID"}, |
908 | | {0, NULL} |
909 | | }; |
910 | | |
911 | | static const value_string DBPROPSET_MSIDXS_ROWSETEXT_IDS[] = { |
912 | | {0x02, "MSIDXSPROP_ROWSETQUERYSTATUS"}, |
913 | | {0x03, "MSIDXSPROP_COMMAND_LOCALE_STRING"}, |
914 | | {0x04, "MSIDXSPROP_QUERY_RESTRICTION"}, |
915 | | {0x05, "MSIDXSPROP_PARSE_TREE"}, |
916 | | {0x06, "MSIDXSPROP_MAX_RANK"}, |
917 | | {0x07, "MSIDXSPROP_RESULTS_FOUND"}, |
918 | | {0, NULL} |
919 | | }; |
920 | | |
921 | | /* 2.2.5.1 */ |
922 | | static const value_string QueryGuid_IDS[] = { |
923 | | {0x02, "RankVector"}, |
924 | | {0x03, "System.Search.Rank"}, |
925 | | {0x04, "System.Search.HitCount"}, |
926 | | {0x05, "System.Search.EntryID"}, |
927 | | {0x06, "All"}, |
928 | | {0x08, "System.Search.ReverseFileName"}, |
929 | | {0x09, "System.ItemURL"}, |
930 | | {0x0a, "System.ContentUrl"}, |
931 | | {0, NULL} |
932 | | }; |
933 | | |
934 | | /* 2.2.5.2 */ |
935 | | static const value_string StorageGuid_IDS[] = { |
936 | | {0x02, "System.ItemFolderNameDisplay"}, |
937 | | {0x03, "ClassId"}, |
938 | | {0x04, "System.ItemTypeText"}, |
939 | | {0x08, "FileIndex"}, |
940 | | {0x09, "USN"}, |
941 | | {0x0a, "System.ItemNameDisplay"}, |
942 | | {0x0b, "Path"}, |
943 | | {0x0c, "System.Size"}, |
944 | | {0x0d, "System.FileAttributes"}, |
945 | | {0x0e, "System.DateModified"}, |
946 | | {0x0f, "System.DateCreated"}, |
947 | | {0x10, "System.DateAccessed"}, |
948 | | {0x12, "AllocSize"}, |
949 | | {0x13, "System.Search.Contents"}, |
950 | | {0x14, "ShortFilename"}, |
951 | | {0x15, "System.FileFRN"}, |
952 | | {0x16, "Scope"}, |
953 | | {0, NULL} |
954 | | }; |
955 | | |
956 | | static const value_string DocPropSetGuid_IDS[] = { |
957 | | {0x02, "System.Title"}, |
958 | | {0x03, "System.Subject"}, |
959 | | {0x04, "System.Author"}, |
960 | | {0x05, "System.Keywords"}, |
961 | | {0x06, "System.Comment"}, |
962 | | {0x07, "DocTemplate"}, |
963 | | {0x08, "System.Document.LastAuthor"}, |
964 | | {0x09, "System.Document.RevisionNumber"}, |
965 | | {0x0a, "System.Document.TotalEditTime"}, |
966 | | {0x0b, "System.Document.DatePrinted"}, |
967 | | {0x0c, "System.Document.DateCreated"}, |
968 | | {0x0d, "System.Document.DateSaved"}, |
969 | | {0x0e, "System.Document.PageCount"}, |
970 | | {0x0f, "System.Document.WordCount"}, |
971 | | {0x10, "System.Document.CharacterCount"}, |
972 | | {0x11, "DocThumbnail"}, |
973 | | {0x12, "System.ApplicationName"}, |
974 | | {0, NULL} |
975 | | }; |
976 | | |
977 | | static const value_string ShellDetails_IDS[] = { |
978 | | { 5, "System.ComputerName"}, |
979 | | { 8, "System.ItemPathDisplayNarrow"}, |
980 | | { 9, "PerceivedType"}, |
981 | | {11, "System.ItemType"}, |
982 | | {12, "FileCount"}, |
983 | | {14, "TotalFileSize"}, |
984 | | {24, "System.ParsingName"}, |
985 | | {25, "System.SFGAOFlags"}, |
986 | | {0, NULL} |
987 | | }; |
988 | | |
989 | | static const value_string PropSet1_IDS[] = { |
990 | | {100, "System.ThumbnailCacheId"}, |
991 | | {0, NULL} |
992 | | }; |
993 | | |
994 | | static const value_string PropSet2_IDS[] = { |
995 | | {3, "System.Kind"}, |
996 | | {0, NULL} |
997 | | }; |
998 | | |
999 | | static const value_string MusicGuid_IDS[] = { |
1000 | | {0x2, "System.Music.Artist"}, |
1001 | | {0x4, "System.Music.AlbumTitle"}, |
1002 | | {0x5, "System.Media.Year"}, |
1003 | | {0x7, "System.Music.TrackNumber"}, |
1004 | | {0xb, "System.Music.Genre"}, |
1005 | | {0xc, "System.Music.Lyrics"}, |
1006 | | {0xd, "System.Music.AlbumArtist"}, |
1007 | | {0x21, "System.Music.ContentGroupDescription"}, |
1008 | | {0x22, "System.Music.InitialKey"}, |
1009 | | {0x23, "System.Music.BeatsPerMinute"}, |
1010 | | {0x24, "System.Music.Conductor"}, |
1011 | | {0x25, "System.Music.PartOfSet"}, |
1012 | | {0x26, "System.Media.SubTitle"}, |
1013 | | {0x27, "System.Music.Mood"}, |
1014 | | {0x64, "System.Music.AlbumID"}, |
1015 | | {0, NULL} |
1016 | | }; |
1017 | | |
1018 | | static const value_string PropSet3_IDS[] = { |
1019 | | { 2, "System.Message.BccAddress"}, |
1020 | | { 3, "System.Message.BccName"}, |
1021 | | { 4, "System.Message.CcAddress"}, |
1022 | | { 5, "System.Message.CcName"}, |
1023 | | { 6, "System.ItemFolderPathDisplay"}, |
1024 | | { 7, "System.ItemPathDisplay"}, |
1025 | | { 9, "System.Communication.AccountName"}, |
1026 | | {10, "System.IsRead"}, |
1027 | | {11, "System.Importance"}, |
1028 | | {12, "System.FlagStatus"}, |
1029 | | {13, "System.Message.FromAddress"}, |
1030 | | {14, "System.Message.FromName"}, |
1031 | | {15, "System.Message.Store"}, |
1032 | | {16, "System.Message.ToAddress"}, |
1033 | | {17, "System.Message.ToName"}, |
1034 | | {18, "System.Contact.WebPage"}, |
1035 | | {19, "System.Message.DateSent"}, |
1036 | | {20, "System.Message.DateReceived"}, |
1037 | | {21, "System.Message.AttachmentNames"}, |
1038 | | {0, NULL} |
1039 | | }; |
1040 | | |
1041 | | static const value_string PropSet4_IDS[] = { |
1042 | | {100, "System.ItemFolderPathDisplayNarrow"}, |
1043 | | {0, NULL} |
1044 | | }; |
1045 | | |
1046 | | static const value_string PropSet5_IDS[] = { |
1047 | | {100, "System.Contact.FullName"}, |
1048 | | {0, NULL} |
1049 | | }; |
1050 | | |
1051 | | static const value_string PropSet6_IDS[] = { |
1052 | | {100, "System.ItemAuthors"}, |
1053 | | {0, NULL} |
1054 | | }; |
1055 | | |
1056 | | static const value_string PropSet7_IDS[] = { |
1057 | | {2, "System.Shell.OmitFromView"}, |
1058 | | {0, NULL} |
1059 | | }; |
1060 | | |
1061 | | static const value_string PropSet8_IDS[] = { |
1062 | | {2, "System.Shell.SFGAOFlagsStrings"}, |
1063 | | {3, "System.Link.TargetSFGAOFlagsStrings"}, |
1064 | | {0, NULL} |
1065 | | }; |
1066 | | |
1067 | | static const value_string PropSet9_IDS[] = { |
1068 | | {100, "System.ItemDate"}, |
1069 | | {0, NULL} |
1070 | | }; |
1071 | | |
1072 | | static const value_string PropSet10_IDS[] = { |
1073 | | { 5, "System.MIMEType"}, |
1074 | | { 8, "System.Search.GatherTime"}, |
1075 | | { 9, "System.Search.AccessCount"}, |
1076 | | {11, "System.Search.LastIndexedTotalTime"}, |
1077 | | {0, NULL} |
1078 | | }; |
1079 | | |
1080 | | static const value_string PropSet11_IDS[] = { |
1081 | | {5, "System.Priority"}, |
1082 | | {8, "System.Message.HasAttachments"}, |
1083 | | {0, NULL} |
1084 | | }; |
1085 | | |
1086 | | static const value_string DocCharacter_IDS[] = { |
1087 | | {2, "System.Search.Autosummary"}, |
1088 | | {0, NULL} |
1089 | | }; |
1090 | | |
1091 | | static const value_string PropSet12_IDS[] = { |
1092 | | {100, "System.IsDeleted"}, |
1093 | | {0, NULL} |
1094 | | }; |
1095 | | |
1096 | | static const value_string PropSet13_IDS[] = { |
1097 | | {100, "System.IsAttachment"}, |
1098 | | {0, NULL} |
1099 | | }; |
1100 | | |
1101 | | static const value_string PropSet14_IDS[] = { |
1102 | | {100, "System.Message.ConversationID"}, |
1103 | | {101, "System.Message.ConversationIndex"}, |
1104 | | {0, NULL} |
1105 | | }; |
1106 | | |
1107 | | static const value_string DocPropSetGuid2_IDS[] = { |
1108 | | {0x02, "System.Category"}, |
1109 | | {0x03, "System.Document.PresentationFormat"}, |
1110 | | {0x04, "System.Document.ByteCount"}, |
1111 | | {0x05, "System.Document.LineCount"}, |
1112 | | {0x06, "System.Document.ParagraphCount"}, |
1113 | | {0x07, "System.Document.SlideCount"}, |
1114 | | {0x08, "DocNoteCount"}, |
1115 | | {0x09, "System.Document.HiddenSlideCount"}, |
1116 | | {0x0D, "DocPartTitles"}, |
1117 | | {0x0E, "System.Document.Manager"}, |
1118 | | {0x0F, "System.Company"}, |
1119 | | {0x1A, "System.ContentType"}, |
1120 | | {0x1B, "System.ContentStatus"}, |
1121 | | {0x1C, "System.Language"}, |
1122 | | {0x1D, "System.Document.Version"}, |
1123 | | {0, NULL} |
1124 | | }; |
1125 | | |
1126 | | static const value_string SystemContact_IDS[] = { |
1127 | | { 6, "System.Contact.JobTitle"}, |
1128 | | { 7, "System.Contact.OfficeLocation"}, |
1129 | | {20, "System.Contact.HomeTelephone"}, |
1130 | | {25, "System.Contact.PrimaryTelephone"}, |
1131 | | {35, "System.Contact.MobileTelephone"}, |
1132 | | {47, "System.Contact.Birthday"}, |
1133 | | {48, "System.Contact.PrimaryEmailAddress"}, |
1134 | | {65, "System.Contact.HomeAddressCity"}, |
1135 | | {69, "System.Contact.PersonalTitle"}, |
1136 | | {71, "System.Contact.MiddleName"}, |
1137 | | {73, "System.Contact.Suffix"}, |
1138 | | {74, "System.Contact.NickName"}, |
1139 | | {0, NULL} |
1140 | | }; |
1141 | | |
1142 | | static const value_string PropSet15_IDS[] = { |
1143 | | {0x64, "System.Calendar.IsOnline"}, |
1144 | | {0,NULL} |
1145 | | }; |
1146 | | |
1147 | | static const value_string PropSet16_IDS[] = { |
1148 | | {0x64, "System.Contact.OtherAddressStreet"}, |
1149 | | {0,NULL} |
1150 | | }; |
1151 | | |
1152 | | static const value_string PropSet17_IDS[] = { |
1153 | | {0x2, "System.DRM.IsProtected"}, |
1154 | | {0,NULL} |
1155 | | }; |
1156 | | |
1157 | | static const value_string PropSet18_IDS[] = { |
1158 | | {0x64, "System.Calendar.OptionalAttendeeNames"}, |
1159 | | {0,NULL} |
1160 | | }; |
1161 | | |
1162 | | static const value_string PropSet19_IDS[] = { |
1163 | | {0x64, "System.Calendar.ShowTimeAs"}, |
1164 | | {0,NULL} |
1165 | | }; |
1166 | | |
1167 | | static const value_string PropSet20_IDS[] = { |
1168 | | {0x64, "System.ParentalRatingReason"}, |
1169 | | {0,NULL} |
1170 | | }; |
1171 | | |
1172 | | static const value_string PropSet21_IDS[] = { |
1173 | | {0x64, "System.Project"}, |
1174 | | {0,NULL} |
1175 | | }; |
1176 | | |
1177 | | static const value_string PropSet22_IDS[] = { |
1178 | | {0x64, "System.Contact.OtherAddressCountry"}, |
1179 | | {0,NULL} |
1180 | | }; |
1181 | | |
1182 | | static const value_string PropSet23_IDS[] = { |
1183 | | {0x9, "System.Status"}, |
1184 | | {0,NULL} |
1185 | | }; |
1186 | | |
1187 | | static const value_string PropSet24_IDS[] = { |
1188 | | {0x64, "System.DateArchived"}, |
1189 | | {0,NULL} |
1190 | | }; |
1191 | | |
1192 | | static const value_string PropSet25_IDS[] = { |
1193 | | {0x64, "System.Contact.CarTelephone"}, |
1194 | | {0,NULL} |
1195 | | }; |
1196 | | |
1197 | | static const value_string PropSet26_IDS[] = { |
1198 | | {0x64, "System.Calendar.ResponseStatus"}, |
1199 | | {0,NULL} |
1200 | | }; |
1201 | | |
1202 | | static const value_string PropSet27_IDS[] = { |
1203 | | {0x64, "System.Task.BillingInformation"}, |
1204 | | {0,NULL} |
1205 | | }; |
1206 | | |
1207 | | static const value_string PropSet28_IDS[] = { |
1208 | | {0x64, "System.Media.AverageLevel"}, |
1209 | | {0,NULL} |
1210 | | }; |
1211 | | |
1212 | | static const value_string PropSet29_IDS[] = { |
1213 | | {0x64, "System.Contact.SpouseName"}, |
1214 | | {0,NULL} |
1215 | | }; |
1216 | | |
1217 | | static const value_string PropSet30_IDS[] = { |
1218 | | {0x64, "System.Document.DocumentID"}, |
1219 | | {0,NULL} |
1220 | | }; |
1221 | | |
1222 | | static const value_string PropSet31_IDS[] = { |
1223 | | {0x64, "System.RecordedTV.NetworkAffiliation"}, |
1224 | | {0,NULL} |
1225 | | }; |
1226 | | |
1227 | | static const value_string PropSet32_IDS[] = { |
1228 | | {0x64, "System.PriorityText"}, |
1229 | | {0,NULL} |
1230 | | }; |
1231 | | |
1232 | | static const value_string PropSet33_IDS[] = { |
1233 | | {0x64, "System.Contact.Children"}, |
1234 | | {0,NULL} |
1235 | | }; |
1236 | | |
1237 | | static const value_string PropSet34_IDS[] = { |
1238 | | {0x64, "System.RecordedTV.RecordingTime"}, |
1239 | | {0,NULL} |
1240 | | }; |
1241 | | |
1242 | | static const value_string PropSet35_IDS[] = { |
1243 | | {0x64, "System.FlagColorText"}, |
1244 | | {0,NULL} |
1245 | | }; |
1246 | | |
1247 | | static const value_string PropSet36_IDS[] = { |
1248 | | {0x64, "System.Contact.OtherAddressPostalCode"}, |
1249 | | {0,NULL} |
1250 | | }; |
1251 | | |
1252 | | static const value_string PropSet37_IDS[] = { |
1253 | | {0x64, "System.Photo.SharpnessText"}, |
1254 | | {0,NULL} |
1255 | | }; |
1256 | | |
1257 | | static const value_string PropSet38_IDS[] = { |
1258 | | {0x64, "System.Contact.OtherAddress"}, |
1259 | | {0,NULL} |
1260 | | }; |
1261 | | |
1262 | | static const value_string PropSet40_IDS[] = { |
1263 | | {0x64, "System.Contact.BusinessAddress"}, |
1264 | | {0,NULL} |
1265 | | }; |
1266 | | |
1267 | | static const value_string PropSet41_IDS[] = { |
1268 | | {0x64, "System.IsIncomplete"}, |
1269 | | {0,NULL} |
1270 | | }; |
1271 | | |
1272 | | static const value_string PropSet42_IDS[] = { |
1273 | | {0x64, "System.Contact.EmailAddress2"}, |
1274 | | {0,NULL} |
1275 | | }; |
1276 | | |
1277 | | static const value_string PropSet43_IDS[] = { |
1278 | | {0x64, "System.Contact.BusinessTelephone"}, |
1279 | | {0,NULL} |
1280 | | }; |
1281 | | |
1282 | | static const value_string PropSet45_IDS[] = { |
1283 | | {0x64, "System.Image.CompressionText"}, |
1284 | | {0,NULL} |
1285 | | }; |
1286 | | |
1287 | | static const value_string PropSet46_IDS[] = { |
1288 | | {0x64, "System.Contact.HomeAddressState"}, |
1289 | | {0,NULL} |
1290 | | }; |
1291 | | |
1292 | | static const value_string PropSet47_IDS[] = { |
1293 | | {0x64, "System.Contact.EmailAddress3"}, |
1294 | | {0,NULL} |
1295 | | }; |
1296 | | |
1297 | | static const value_string PropSet48_IDS[] = { |
1298 | | {0x64, "System.Communication.FollowupIconIndex"}, |
1299 | | {0,NULL} |
1300 | | }; |
1301 | | |
1302 | | static const value_string PropSet49_IDS[] = { |
1303 | | {0x64, "System.Photo.TagViewAggregate"}, |
1304 | | {0,NULL} |
1305 | | }; |
1306 | | |
1307 | | static const value_string PropSet50_IDS[] = { |
1308 | | {0x64, "System.Search.Store"}, |
1309 | | {0,NULL} |
1310 | | }; |
1311 | | |
1312 | | static const value_string PropSet51_IDS[] = { |
1313 | | {0x64, "System.FileName"}, |
1314 | | {0,NULL} |
1315 | | }; |
1316 | | |
1317 | | static const value_string PropSet52_IDS[] = { |
1318 | | {0x64, "System.Contact.HomeAddressStreet"}, |
1319 | | {0,NULL} |
1320 | | }; |
1321 | | |
1322 | | static const value_string PropSet53_IDS[] = { |
1323 | | {0x64, "System.Contact.HomeAddressPostalCode"}, |
1324 | | {0,NULL} |
1325 | | }; |
1326 | | |
1327 | | static const value_string PropSet54_IDS[] = { |
1328 | | {0x64, "System.Contact.BusinessHomePage"}, |
1329 | | {0,NULL} |
1330 | | }; |
1331 | | |
1332 | | static const value_string PropSet55_IDS[] = { |
1333 | | {0x64, "System.Calendar.RequiredAttendeeNames"}, |
1334 | | {0,NULL} |
1335 | | }; |
1336 | | |
1337 | | static const value_string PropSet56_IDS[] = { |
1338 | | {0x64, "System.FlagColor"}, |
1339 | | {0,NULL} |
1340 | | }; |
1341 | | |
1342 | | static const value_string PropSet57_IDS[] = { |
1343 | | {0x64, "System.Message.ProofInProgress"}, |
1344 | | {0,NULL} |
1345 | | }; |
1346 | | |
1347 | | static const value_string PropSet58_IDS[] = { |
1348 | | {0x64, "System.Contact.PrimaryAddressPostOfficeBox"}, |
1349 | | {0,NULL} |
1350 | | }; |
1351 | | |
1352 | | static const value_string PropSet59_IDS[] = { |
1353 | | {0x64, "System.Calendar.IsRecurring"}, |
1354 | | {0,NULL} |
1355 | | }; |
1356 | | |
1357 | | static const value_string PropSet60_IDS[] = { |
1358 | | {0x64, "System.Contact.HomeAddress"}, |
1359 | | {0,NULL} |
1360 | | }; |
1361 | | |
1362 | | static const value_string PropSet61_IDS[] = { |
1363 | | {0x64, "System.Photo.MaxAperture"}, |
1364 | | {0,NULL} |
1365 | | }; |
1366 | | |
1367 | | static const value_string PropSet62_IDS[] = { |
1368 | | {0x64, "System.ItemParticipants"}, |
1369 | | {0,NULL} |
1370 | | }; |
1371 | | |
1372 | | static const value_string PropSet63_IDS[] = { |
1373 | | {0x64, "System.Media.DateReleased"}, |
1374 | | {0,NULL} |
1375 | | }; |
1376 | | |
1377 | | static const value_string PropSet64_IDS[] = { |
1378 | | {0x64, "System.Journal.Contacts"}, |
1379 | | {0,NULL} |
1380 | | }; |
1381 | | |
1382 | | static const value_string PropSet65_IDS[] = { |
1383 | | {0x64, "System.Calendar.Resources"}, |
1384 | | {0,NULL} |
1385 | | }; |
1386 | | |
1387 | | static const value_string PropSet66_IDS[] = { |
1388 | | {0x67, "System.Message.MessageClass"}, |
1389 | | {0,NULL} |
1390 | | }; |
1391 | | |
1392 | | static const value_string PropSet67_IDS[] = { |
1393 | | {0x9, "System.Rating"}, |
1394 | | {0xb, "System.Copyright"}, |
1395 | | {0xd, "System.Media.ClassPrimaryID"}, |
1396 | | {0xe, "System.Media.ClassSecondaryID"}, |
1397 | | {0xf, "System.Media.DVDID"}, |
1398 | | {0x10, "System.Media.MCDI"}, |
1399 | | {0x11, "System.Media.MetadataContentProvider"}, |
1400 | | {0x12, "System.Media.ContentDistributor"}, |
1401 | | {0x13, "System.Music.Composer"}, |
1402 | | {0x14, "System.Video.Director"}, |
1403 | | {0x15, "System.ParentalRating"}, |
1404 | | {0x16, "System.Media.Producer"}, |
1405 | | {0x17, "System.Media.Writer"}, |
1406 | | {0x18, "System.Media.CollectionGroupID"}, |
1407 | | {0x19, "System.Media.CollectionID"}, |
1408 | | {0x1a, "System.Media.ContentID"}, |
1409 | | {0x1b, "System.Media.CreatorApplication"}, |
1410 | | {0x1c, "System.Media.CreatorApplicationVersion"}, |
1411 | | {0x1e, "System.Media.Publisher"}, |
1412 | | {0x1f, "System.Music.Period"}, |
1413 | | {0x22, "System.Media.UserWebUrl"}, |
1414 | | {0x23, "System.Media.UniqueFileIdentifier"}, |
1415 | | {0x24, "System.Media.EncodedBy"}, |
1416 | | {0x26, "System.Media.ProtectionType"}, |
1417 | | {0x27, "System.Media.ProviderRating"}, |
1418 | | {0x28, "System.Media.ProviderStyle"}, |
1419 | | {0x29, "System.Media.UserNoAutoInfo"}, |
1420 | | {0,NULL} |
1421 | | }; |
1422 | | |
1423 | | static const value_string PropSet68_IDS[] = { |
1424 | | {0x64, "System.Calendar.OrganizerName"}, |
1425 | | {0,NULL} |
1426 | | }; |
1427 | | |
1428 | | static const value_string PropSet69_IDS[] = { |
1429 | | {0x64, "System.Photo.PeopleNames"}, |
1430 | | {0,NULL} |
1431 | | }; |
1432 | | |
1433 | | static const value_string PropSet70_IDS[] = { |
1434 | | {0x3, "System.Media.Duration"}, |
1435 | | {0x4, "System.Audio.EncodingBitrate"}, |
1436 | | {0x5, "System.Audio.SampleRate"}, |
1437 | | {0x6, "System.Audio.SampleSize"}, |
1438 | | {0x7, "System.Audio.ChannelCount"}, |
1439 | | {0,NULL} |
1440 | | }; |
1441 | | |
1442 | | static const value_string PropSet71_IDS[] = { |
1443 | | {0x64, "System.FileExtension"}, |
1444 | | {0,NULL} |
1445 | | }; |
1446 | | |
1447 | | static const value_string PropSet72_IDS[] = { |
1448 | | {0x103, "System.Image.Compression"}, |
1449 | | {0x10f, "System.Photo.CameraManufacturer"}, |
1450 | | {0x110, "System.Photo.CameraModel"}, |
1451 | | {0x112, "System.Photo.Orientation"}, |
1452 | | {0x131, "System.SoftwareUsed"}, |
1453 | | {0x4748, "System.Photo.Event"}, |
1454 | | {0x4752, "System.DateImported"}, |
1455 | | {0x829a, "System.Photo.ExposureTime"}, |
1456 | | {0x829d, "System.Photo.FNumber"}, |
1457 | | {0x8822, "System.Photo.ExposureProgram"}, |
1458 | | {0x8827, "System.Photo.ISOSpeed"}, |
1459 | | {0x9003, "System.Photo.DateTaken"}, |
1460 | | {0x9201, "System.Photo.ShutterSpeed"}, |
1461 | | {0x9202, "System.Photo.Aperture"}, |
1462 | | {0x9204, "System.Photo.ExposureBias"}, |
1463 | | {0x9206, "System.Photo.SubjectDistance"}, |
1464 | | {0x9207, "System.Photo.MeteringMode"}, |
1465 | | {0x9208, "System.Photo.LightSource"}, |
1466 | | {0x9209, "System.Photo.Flash"}, |
1467 | | {0x920a, "System.Photo.FocalLength"}, |
1468 | | {0,NULL} |
1469 | | }; |
1470 | | |
1471 | | static const value_string PropSet73_IDS[] = { |
1472 | | {0x64, "System.Contact.TTYTDDTelephone"}, |
1473 | | {0,NULL} |
1474 | | }; |
1475 | | |
1476 | | static const value_string PropSet74_IDS[] = { |
1477 | | {0x64, "System.Photo.PhotometricInterpretationText"}, |
1478 | | {0,NULL} |
1479 | | }; |
1480 | | |
1481 | | static const value_string PropSet75_IDS[] = { |
1482 | | {0x64, "System.Calendar.OptionalAttendeeAddresses"}, |
1483 | | {0,NULL} |
1484 | | }; |
1485 | | |
1486 | | static const value_string PropSet76_IDS[] = { |
1487 | | {0x64, "System.Calendar.ReminderTime"}, |
1488 | | {0,NULL} |
1489 | | }; |
1490 | | |
1491 | | static const value_string PropSet77_IDS[] = { |
1492 | | {0x64, "System.Calendar.RequiredAttendeeAddresses"}, |
1493 | | {0,NULL} |
1494 | | }; |
1495 | | |
1496 | | static const value_string PropSet78_IDS[] = { |
1497 | | {0x64, "System.Calendar.OrganizerAddress"}, |
1498 | | {0,NULL} |
1499 | | }; |
1500 | | |
1501 | | static const value_string PropSet79_IDS[] = { |
1502 | | {0x2, "System.Link.TargetParsingPath"}, |
1503 | | {0x8, "System.Link.TargetSFGAOFlags"}, |
1504 | | {0,NULL} |
1505 | | }; |
1506 | | |
1507 | | static const value_string PropSet80_IDS[] = { |
1508 | | {0x64, "System.Contact.Hobbies"}, |
1509 | | {0,NULL} |
1510 | | }; |
1511 | | |
1512 | | static const value_string PropSet81_IDS[] = { |
1513 | | {0x64, "System.Contact.HomeAddressPostOfficeBox"}, |
1514 | | {0,NULL} |
1515 | | }; |
1516 | | |
1517 | | static const value_string PropSet82_IDS[] = { |
1518 | | {0x64, "System.Contact.CompanyMainTelephone"}, |
1519 | | {0,NULL} |
1520 | | }; |
1521 | | |
1522 | | static const value_string PropSet83_IDS[] = { |
1523 | | {0x64, "System.IsFlagged"}, |
1524 | | {0,NULL} |
1525 | | }; |
1526 | | |
1527 | | static const value_string PropSet84_IDS[] = { |
1528 | | {0x64, "System.Contact.FirstName"}, |
1529 | | {0,NULL} |
1530 | | }; |
1531 | | |
1532 | | static const value_string PropSet85_IDS[] = { |
1533 | | {0xa, "System.IsEncrypted"}, |
1534 | | {0,NULL} |
1535 | | }; |
1536 | | |
1537 | | static const value_string PropSet86_IDS[] = { |
1538 | | {0x64, "System.Calendar.Duration"}, |
1539 | | {0,NULL} |
1540 | | }; |
1541 | | |
1542 | | static const value_string PropSet87_IDS[] = { |
1543 | | {0x64, "System.Contact.PrimaryAddressCity"}, |
1544 | | {0,NULL} |
1545 | | }; |
1546 | | |
1547 | | static const value_string PropSet88_IDS[] = { |
1548 | | {0x64, "System.Contact.OtherAddressPostOfficeBox"}, |
1549 | | {0,NULL} |
1550 | | }; |
1551 | | |
1552 | | static const value_string PropSet89_IDS[] = { |
1553 | | {0x64, "System.ProviderItemID"}, |
1554 | | {0,NULL} |
1555 | | }; |
1556 | | |
1557 | | static const value_string PropSet90_IDS[] = { |
1558 | | {0x64, "System.Contact.BusinessAddressCountry"}, |
1559 | | {0,NULL} |
1560 | | }; |
1561 | | |
1562 | | static const value_string PropSet91_IDS[] = { |
1563 | | {0x64, "System.Contact.EmailName"}, |
1564 | | {0,NULL} |
1565 | | }; |
1566 | | |
1567 | | static const value_string PropSet92_IDS[] = { |
1568 | | {0x64, "System.Photo.FocalLengthInFilm"}, |
1569 | | {0,NULL} |
1570 | | }; |
1571 | | |
1572 | | static const value_string PropSet93_IDS[] = { |
1573 | | {0x64, "System.Contact.IMAddress"}, |
1574 | | {0,NULL} |
1575 | | }; |
1576 | | |
1577 | | static const value_string PropSet94_IDS[] = { |
1578 | | {0x64, "System.DateAcquired"}, |
1579 | | {0,NULL} |
1580 | | }; |
1581 | | |
1582 | | static const value_string PropSet95_IDS[] = { |
1583 | | {0x64, "System.DateCompleted"}, |
1584 | | {0,NULL} |
1585 | | }; |
1586 | | |
1587 | | static const value_string PropSet96_IDS[] = { |
1588 | | {0x64, "System.ItemName"}, |
1589 | | {0,NULL} |
1590 | | }; |
1591 | | |
1592 | | static const value_string PropSet97_IDS[] = { |
1593 | | {0x64, "System.Contact.PrimaryAddressPostalCode"}, |
1594 | | {0,NULL} |
1595 | | }; |
1596 | | |
1597 | | static const value_string PropSet99_IDS[] = { |
1598 | | {0x64, "System.Document.ClientID"}, |
1599 | | {0,NULL} |
1600 | | }; |
1601 | | |
1602 | | static const value_string PropSet100_IDS[] = { |
1603 | | {0x64, "System.Photo.ExposureProgramText"}, |
1604 | | {0,NULL} |
1605 | | }; |
1606 | | |
1607 | | static const value_string PropSet101_IDS[] = { |
1608 | | {0x64, "System.Note.ColorText"}, |
1609 | | {0,NULL} |
1610 | | }; |
1611 | | |
1612 | | static const value_string PropSet102_IDS[] = { |
1613 | | {0x64, "System.Photo.MeteringModeText"}, |
1614 | | {0,NULL} |
1615 | | }; |
1616 | | |
1617 | | static const value_string PropSet103_IDS[] = { |
1618 | | {0x2, "System.Link.TargetExtension"}, |
1619 | | {0,NULL} |
1620 | | }; |
1621 | | |
1622 | | static const value_string PropSet104_IDS[] = { |
1623 | | {0x64, "System.Contact.BusinessAddressState"}, |
1624 | | {0,NULL} |
1625 | | }; |
1626 | | |
1627 | | static const value_string PropSet105_IDS[] = { |
1628 | | {0x64, "System.Photo.OrientationText"}, |
1629 | | {0,NULL} |
1630 | | }; |
1631 | | |
1632 | | static const value_string PropSet106_IDS[] = { |
1633 | | {0x64, "System.Contact.Label"}, |
1634 | | {0,NULL} |
1635 | | }; |
1636 | | |
1637 | | static const value_string PropSet107_IDS[] = { |
1638 | | {0x64, "System.Calendar.Location"}, |
1639 | | {0,NULL} |
1640 | | }; |
1641 | | |
1642 | | static const value_string PropSet108_IDS[] = { |
1643 | | {0x64, "System.Photo.SaturationText"}, |
1644 | | {0,NULL} |
1645 | | }; |
1646 | | |
1647 | | static const value_string PropSet109_IDS[] = { |
1648 | | {0x64, "System.Message.ToDoTitle"}, |
1649 | | {0,NULL} |
1650 | | }; |
1651 | | |
1652 | | static const value_string PropSet110_IDS[] = { |
1653 | | {0x64, "System.Contact.Anniversary"}, |
1654 | | {0,NULL} |
1655 | | }; |
1656 | | |
1657 | | static const value_string PropSet111_IDS[] = { |
1658 | | {0x64, "System.Contact.FileAsName"}, |
1659 | | {0,NULL} |
1660 | | }; |
1661 | | |
1662 | | static const value_string PropSet112_IDS[] = { |
1663 | | {0x64, "System.GPS.Date"}, |
1664 | | {0,NULL} |
1665 | | }; |
1666 | | |
1667 | | static const value_string PropSet113_IDS[] = { |
1668 | | {0x64, "System.IsFlaggedComplete"}, |
1669 | | {0,NULL} |
1670 | | }; |
1671 | | |
1672 | | static const value_string PropSet114_IDS[] = { |
1673 | | {0x2, "System.Contact.JA.CompanyNamePhonetic"}, |
1674 | | {0x3, "System.Contact.JA.FirstNamePhonetic"}, |
1675 | | {0x4, "System.Contact.JA.LastNamePhonetic"}, |
1676 | | {0,NULL} |
1677 | | }; |
1678 | | |
1679 | | static const value_string PropSet115_IDS[] = { |
1680 | | {0x64, "System.Communication.SecurityFlags"}, |
1681 | | {0,NULL} |
1682 | | }; |
1683 | | |
1684 | | static const value_string PropSet116_IDS[] = { |
1685 | | {0x64, "System.Identity"}, |
1686 | | {0,NULL} |
1687 | | }; |
1688 | | |
1689 | | static const value_string PropSet117_IDS[] = { |
1690 | | {0x64, "System.Contact.BusinessAddressPostOfficeBox"}, |
1691 | | {0,NULL} |
1692 | | }; |
1693 | | |
1694 | | static const value_string PropSet118_IDS[] = { |
1695 | | {0x64, "System.AcquisitionID"}, |
1696 | | {0,NULL} |
1697 | | }; |
1698 | | |
1699 | | static const value_string PropSet119_IDS[] = { |
1700 | | {0x64, "System.Contact.EmailAddresses"}, |
1701 | | {0,NULL} |
1702 | | }; |
1703 | | |
1704 | | static const value_string PropSet120_IDS[] = { |
1705 | | {0x64, "System.Communication.TaskStatus"}, |
1706 | | {0,NULL} |
1707 | | }; |
1708 | | |
1709 | | static const value_string PropSet121_IDS[] = { |
1710 | | {0x64, "System.Contact.LastName"}, |
1711 | | {0,NULL} |
1712 | | }; |
1713 | | |
1714 | | static const value_string PropSet122_IDS[] = { |
1715 | | {0x64, "System.Communication.DateItemExpires"}, |
1716 | | {0,NULL} |
1717 | | }; |
1718 | | |
1719 | | static const value_string PropSet123_IDS[] = { |
1720 | | {0x64, "System.ImportanceText"}, |
1721 | | {0,NULL} |
1722 | | }; |
1723 | | |
1724 | | static const value_string PropSet124_IDS[] = { |
1725 | | {0x64, "System.Search.ContainerHash"}, |
1726 | | {0,NULL} |
1727 | | }; |
1728 | | |
1729 | | static const value_string PropSet125_IDS[] = { |
1730 | | {0x64, "System.Contact.BusinessFaxNumber"}, |
1731 | | {0,NULL} |
1732 | | }; |
1733 | | |
1734 | | static const value_string PropSet126_IDS[] = { |
1735 | | {0x2, "System.Link.TargetUrl"}, |
1736 | | {0x1a, "System.IconIndex"}, |
1737 | | {0,NULL} |
1738 | | }; |
1739 | | |
1740 | | static const value_string PropSet127_IDS[] = { |
1741 | | {0x64, "System.RecordedTV.StationName"}, |
1742 | | {0,NULL} |
1743 | | }; |
1744 | | |
1745 | | static const value_string PropSet128_IDS[] = { |
1746 | | {0x64, "System.Task.Owner"}, |
1747 | | {0,NULL} |
1748 | | }; |
1749 | | |
1750 | | static const value_string PropSet129_IDS[] = { |
1751 | | {0x64, "System.Photo.ProgramModeText"}, |
1752 | | {0,NULL} |
1753 | | }; |
1754 | | |
1755 | | static const value_string PropSet130_IDS[] = { |
1756 | | {0x64, "System.Contact.PrimaryAddressCountry"}, |
1757 | | {0,NULL} |
1758 | | }; |
1759 | | |
1760 | | static const value_string PropSet131_IDS[] = { |
1761 | | {0x64, "System.Note.Color"}, |
1762 | | {0,NULL} |
1763 | | }; |
1764 | | |
1765 | | static const value_string PropSet132_IDS[] = { |
1766 | | {0x64, "System.Contact.OtherAddressState"}, |
1767 | | {0,NULL} |
1768 | | }; |
1769 | | |
1770 | | static const value_string PropSet133_IDS[] = { |
1771 | | {0x64, "System.Message.AttachmentContents"}, |
1772 | | {0,NULL} |
1773 | | }; |
1774 | | |
1775 | | static const value_string PropSet134_IDS[] = { |
1776 | | {0x64, "System.Communication.TaskStatusText"}, |
1777 | | {0,NULL} |
1778 | | }; |
1779 | | |
1780 | | static const value_string PropSet135_IDS[] = { |
1781 | | {0x64, "System.Communication.HeaderItem"}, |
1782 | | {0,NULL} |
1783 | | }; |
1784 | | |
1785 | | static const value_string PropSet136_IDS[] = { |
1786 | | {0x64, "System.Contact.EmailAddress"}, |
1787 | | {0,NULL} |
1788 | | }; |
1789 | | |
1790 | | static const value_string PropSet137_IDS[] = { |
1791 | | {0x64, "System.Contact.Profession"}, |
1792 | | {0,NULL} |
1793 | | }; |
1794 | | |
1795 | | static const value_string PropSet138_IDS[] = { |
1796 | | {0x64, "System.Contact.BusinessAddressPostalCode"}, |
1797 | | {0,NULL} |
1798 | | }; |
1799 | | |
1800 | | static const value_string PropSet139_IDS[] = { |
1801 | | {0x64, "System.ItemNamePrefix"}, |
1802 | | {0,NULL} |
1803 | | }; |
1804 | | |
1805 | | static const value_string PropSet140_IDS[] = { |
1806 | | {0x64, "System.Photo.DigitalZoom"}, |
1807 | | {0,NULL} |
1808 | | }; |
1809 | | |
1810 | | static const value_string PropSet141_IDS[] = { |
1811 | | {0x64, "System.SourceItem"}, |
1812 | | {0,NULL} |
1813 | | }; |
1814 | | |
1815 | | static const value_string PropSet142_IDS[] = { |
1816 | | {0x64, "System.Photo.WhiteBalance"}, |
1817 | | {0,NULL} |
1818 | | }; |
1819 | | |
1820 | | static const value_string PropSet143_IDS[] = { |
1821 | | {0x64, "System.SensitivityText"}, |
1822 | | {0,NULL} |
1823 | | }; |
1824 | | |
1825 | | static const value_string PropSet144_IDS[] = { |
1826 | | {0x64, "System.Contact.Gender"}, |
1827 | | {0x65, "System.Contact.GenderValue"}, |
1828 | | {0,NULL} |
1829 | | }; |
1830 | | |
1831 | | static const value_string PropSet145_IDS[] = { |
1832 | | {0x64, "System.Contact.OtherAddressCity"}, |
1833 | | {0,NULL} |
1834 | | }; |
1835 | | |
1836 | | static const value_string PropSet146_IDS[] = { |
1837 | | {0x64, "System.Music.DisplayArtist"}, |
1838 | | {0,NULL} |
1839 | | }; |
1840 | | |
1841 | | static const value_string PropSet147_IDS[] = { |
1842 | | {0x64, "System.Message.SenderAddress"}, |
1843 | | {0,NULL} |
1844 | | }; |
1845 | | |
1846 | | static const value_string PropSet148_IDS[] = { |
1847 | | {0x64, "System.Contact.PrimaryAddressState"}, |
1848 | | {0,NULL} |
1849 | | }; |
1850 | | |
1851 | | static const value_string PropSet149_IDS[] = { |
1852 | | {0x64, "System.Journal.EntryType"}, |
1853 | | {0,NULL} |
1854 | | }; |
1855 | | |
1856 | | static const value_string PropSet150_IDS[] = { |
1857 | | {0x64, "System.Contact.BusinessAddressStreet"}, |
1858 | | {0,NULL} |
1859 | | }; |
1860 | | |
1861 | | static const value_string PropSet151_IDS[] = { |
1862 | | {0x4, "System.FileOwner"}, |
1863 | | {0,NULL} |
1864 | | }; |
1865 | | |
1866 | | static const value_string PropSet152_IDS[] = { |
1867 | | {0x64, "System.Contact.HomeAddressCountry"}, |
1868 | | {0,NULL} |
1869 | | }; |
1870 | | |
1871 | | static const value_string PropSet153_IDS[] = { |
1872 | | {0x64, "System.Task.CompletionStatus"}, |
1873 | | {0,NULL} |
1874 | | }; |
1875 | | |
1876 | | static const value_string PropSet154_IDS[] = { |
1877 | | {0x10, "System.Software.DateLastUsed"}, |
1878 | | {0,NULL} |
1879 | | }; |
1880 | | |
1881 | | static const value_string PropSet155_IDS[] = { |
1882 | | {0x64, "System.Contact.Department"}, |
1883 | | {0,NULL} |
1884 | | }; |
1885 | | |
1886 | | static const value_string PropSet156_IDS[] = { |
1887 | | {0x64, "System.Calendar.ShowTimeAsText"}, |
1888 | | {0,NULL} |
1889 | | }; |
1890 | | |
1891 | | static const value_string PropSet157_IDS[] = { |
1892 | | {0x64, "System.Sensitivity"}, |
1893 | | {0,NULL} |
1894 | | }; |
1895 | | |
1896 | | static const value_string PropSet158_IDS[] = { |
1897 | | {0x64, "System.RecordedTV.OriginalBroadcastDate"}, |
1898 | | {0,NULL} |
1899 | | }; |
1900 | | |
1901 | | static const value_string PropSet159_IDS[] = { |
1902 | | {0x64, "System.Music.IsCompilation"}, |
1903 | | {0,NULL} |
1904 | | }; |
1905 | | |
1906 | | static const value_string PropSet160_IDS[] = { |
1907 | | {0x64, "System.DueDate"}, |
1908 | | {0,NULL} |
1909 | | }; |
1910 | | |
1911 | | static const value_string PropSet161_IDS[] = { |
1912 | | {0x3, "System.FileDescription"}, |
1913 | | {0x6, "System.OriginalFileName"}, |
1914 | | {0x7, "System.Software.ProductName"}, |
1915 | | {0x8, "System.Software.ProductVersion"}, |
1916 | | {0,NULL} |
1917 | | }; |
1918 | | |
1919 | | static const value_string PropSet162_IDS[] = { |
1920 | | {0x64, "System.MileageInformation"}, |
1921 | | {0,NULL} |
1922 | | }; |
1923 | | |
1924 | | static const value_string PropSet163_IDS[] = { |
1925 | | {0x2, "System.RecordedTV.EpisodeName"}, |
1926 | | {0x3, "System.RecordedTV.ProgramDescription"}, |
1927 | | {0x5, "System.RecordedTV.StationCallSign"}, |
1928 | | {0x7, "System.RecordedTV.ChannelNumber"}, |
1929 | | {0xc, "System.RecordedTV.IsClosedCaptioningAvailable"}, |
1930 | | {0xd, "System.RecordedTV.IsRepeatBroadcast"}, |
1931 | | {0xe, "System.RecordedTV.IsSAP"}, |
1932 | | {0xf, "System.RecordedTV.DateContentExpires"}, |
1933 | | {0x10, "System.RecordedTV.IsATSCContent"}, |
1934 | | {0x11, "System.RecordedTV.IsDTVContent"}, |
1935 | | {0x12, "System.RecordedTV.IsHDContent"}, |
1936 | | {0,NULL} |
1937 | | }; |
1938 | | |
1939 | | static const value_string PropSet164_IDS[] = { |
1940 | | {0x64, "System.Audio.PeakValue"}, |
1941 | | {0,NULL} |
1942 | | }; |
1943 | | |
1944 | | static const value_string PropSet165_IDS[] = { |
1945 | | {0x64, "System.Contact.TelexNumber"}, |
1946 | | {0,NULL} |
1947 | | }; |
1948 | | |
1949 | | static const value_string PropSet166_IDS[] = { |
1950 | | {0x64, "System.Message.SenderName"}, |
1951 | | {0,NULL} |
1952 | | }; |
1953 | | |
1954 | | static const value_string PropSet167_IDS[] = { |
1955 | | {0x64, "System.Message.Flags"}, |
1956 | | {0,NULL} |
1957 | | }; |
1958 | | |
1959 | | static const value_string PropSet168_IDS[] = { |
1960 | | {0x64, "System.IsFolder"}, |
1961 | | {0,NULL} |
1962 | | }; |
1963 | | |
1964 | | static const value_string PropSet169_IDS[] = { |
1965 | | {0x64, "System.Contact.AssistantTelephone"}, |
1966 | | {0,NULL} |
1967 | | }; |
1968 | | |
1969 | | static const value_string PropSet170_IDS[] = { |
1970 | | {0x64, "System.KindText"}, |
1971 | | {0,NULL} |
1972 | | }; |
1973 | | |
1974 | | static const value_string PropSet171_IDS[] = { |
1975 | | {0x64, "System.Photo.ContrastText"}, |
1976 | | {0,NULL} |
1977 | | }; |
1978 | | |
1979 | | static const value_string PropSet172_IDS[] = { |
1980 | | {0x3, "System.Image.HorizontalSize"}, |
1981 | | {0x4, "System.Image.VerticalSize"}, |
1982 | | {0x5, "System.Image.HorizontalResolution"}, |
1983 | | {0x6, "System.Image.VerticalResolution"}, |
1984 | | {0x7, "System.Image.BitDepth"}, |
1985 | | {0xc, "System.Media.FrameCount"}, |
1986 | | {0xd, "System.Image.Dimensions"}, |
1987 | | {0,NULL} |
1988 | | }; |
1989 | | |
1990 | | static const value_string PropSet173_IDS[] = { |
1991 | | {0x64, "System.Message.IsFwdOrReply"}, |
1992 | | {0,NULL} |
1993 | | }; |
1994 | | |
1995 | | static const value_string PropSet174_IDS[] = { |
1996 | | {0x64, "System.Photo.WhiteBalanceText"}, |
1997 | | {0,NULL} |
1998 | | }; |
1999 | | |
2000 | | static const value_string PropSet175_IDS[] = { |
2001 | | {0x64, "System.Photo.GainControlText"}, |
2002 | | {0,NULL} |
2003 | | }; |
2004 | | |
2005 | | static const value_string PropSet176_IDS[] = { |
2006 | | {0x64, "System.Communication.PolicyTag"}, |
2007 | | {0,NULL} |
2008 | | }; |
2009 | | |
2010 | | static const value_string PropSet177_IDS[] = { |
2011 | | {0x64, "System.Contact.HomeFaxNumber"}, |
2012 | | {0,NULL} |
2013 | | }; |
2014 | | |
2015 | | static const value_string PropSet178_IDS[] = { |
2016 | | {0x64, "System.FlagStatusText"}, |
2017 | | {0,NULL} |
2018 | | }; |
2019 | | |
2020 | | static const value_string PropSet179_IDS[] = { |
2021 | | {0x64, "System.Contact.AssistantName"}, |
2022 | | {0,NULL} |
2023 | | }; |
2024 | | |
2025 | | static const value_string PropSet180_IDS[] = { |
2026 | | {0x64, "System.Message.ToDoFlags"}, |
2027 | | {0,NULL} |
2028 | | }; |
2029 | | |
2030 | | static const value_string PropSet181_IDS[] = { |
2031 | | {0x64, "System.RatingText"}, |
2032 | | {0,NULL} |
2033 | | }; |
2034 | | |
2035 | | static const value_string PropSet182_IDS[] = { |
2036 | | {0x64, "System.Document.Contributor"}, |
2037 | | {0,NULL} |
2038 | | }; |
2039 | | |
2040 | | static const value_string PropSet183_IDS[] = { |
2041 | | {0x64, "System.Contact.CallbackTelephone"}, |
2042 | | {0,NULL} |
2043 | | }; |
2044 | | |
2045 | | static const value_string PropSet184_IDS[] = { |
2046 | | {0x64, "System.EndDate"}, |
2047 | | {0,NULL} |
2048 | | }; |
2049 | | |
2050 | | static const value_string PropSet185_IDS[] = { |
2051 | | {0x64, "System.Media.DateEncoded"}, |
2052 | | {0,NULL} |
2053 | | }; |
2054 | | |
2055 | | static const value_string PropSet186_IDS[] = { |
2056 | | {0x64, "System.Photo.FlashText"}, |
2057 | | {0,NULL} |
2058 | | }; |
2059 | | |
2060 | | static const value_string PropSet187_IDS[] = { |
2061 | | {0x64, "System.Photo.FlashFired"}, |
2062 | | {0,NULL} |
2063 | | }; |
2064 | | |
2065 | | static const value_string PropSet188_IDS[] = { |
2066 | | {0x64, "System.Document.Division"}, |
2067 | | {0,NULL} |
2068 | | }; |
2069 | | |
2070 | | static const value_string PropSet189_IDS[] = { |
2071 | | {0x64, "System.Contact.PagerTelephone"}, |
2072 | | {0,NULL} |
2073 | | }; |
2074 | | |
2075 | | static const value_string PropSet190_IDS[] = { |
2076 | | {0x64, "System.Contact.BusinessAddressCity"}, |
2077 | | {0,NULL} |
2078 | | }; |
2079 | | |
2080 | | static const value_string PropSet191_IDS[] = { |
2081 | | {0x64, "System.Media.SubscriptionContentId"}, |
2082 | | {0,NULL} |
2083 | | }; |
2084 | | |
2085 | | static const value_string PropSet192_IDS[] = { |
2086 | | {0x64, "System.Contact.PrimaryAddressStreet"}, |
2087 | | {0,NULL} |
2088 | | }; |
2089 | | |
2090 | | static const value_string PropSet193_IDS[] = { |
2091 | | {0x64, "System.StartDate"}, |
2092 | | {0,NULL} |
2093 | | }; |
2094 | | |
2095 | | static const value_string PropSet194_IDS[] = { |
2096 | | {0x2, "System.Video.StreamName"}, |
2097 | | {0x3, "System.Video.FrameWidth"}, |
2098 | | {0x4, "System.Video.FrameHeight"}, |
2099 | | {0x6, "System.Video.FrameRate"}, |
2100 | | {0x8, "System.Video.EncodingBitrate"}, |
2101 | | {0x9, "System.Video.SampleSize"}, |
2102 | | {0xa, "System.Video.Compression"}, |
2103 | | {0x2a, "System.Video.HorizontalAspectRatio"}, |
2104 | | {0x2b, "System.Video.TotalBitrate"}, |
2105 | | {0x2c, "System.Video.FourCC"}, |
2106 | | {0x2d, "System.Video.VerticalAspectRatio"}, |
2107 | | {0,NULL} |
2108 | | }; |
2109 | | |
2110 | | static const value_string PropSet195_IDS[] = { |
2111 | | {0x64, "System.Contact.MailingAddress"}, |
2112 | | {0,NULL} |
2113 | | }; |
2114 | | |
2115 | | static const struct GuidPropertySet GuidPropertySet[] = { |
2116 | | { {0xa9bd1526, 0x6a80, 0x11d0, {0x8c, 0x9d, 0x00, 0x20, 0xaf, 0x1d, 0x74, 0x0e}}, |
2117 | | "DBPROPSET_FSCIFRMWRK_EXT", "File system content index framework", |
2118 | | DBPROPSET_FSCIFRMWRK_EXT_IDS |
2119 | | }, |
2120 | | { {0xa7ac77ed, 0xf8d7, 0x11ce, {0xa7, 0x98, 0x00, 0x20, 0xf8, 0x00, 0x80, 0x25}}, |
2121 | | "DBPROPSET_QUERYEXT", "Query extension", |
2122 | | DBPROPSET_QUERYEXT_IDS |
2123 | | }, |
2124 | | { {0xafafaca5, 0xb5d1, 0x11d0, {0x8c, 0x62, 0x00, 0xc0, 0x4f, 0xc2, 0xdb, 0x8d}}, |
2125 | | "DBPROPSET_CIFRMWRKCORE_EXT", "Content index framework core", |
2126 | | DBPROPSET_CIFRMWRKCORE_EXT_IDS |
2127 | | }, |
2128 | | { {0xAA6EE6B0, 0xE828, 0x11D0, {0xB2, 0x3E, 0x00, 0xAA, 0x00, 0x47, 0xFC, 0x01}}, |
2129 | | "DBPROPSET_MSIDXS_ROWSETEXT", "???", |
2130 | | DBPROPSET_MSIDXS_ROWSETEXT_IDS |
2131 | | }, |
2132 | | { {0xB725F130, 0x47ef, 0x101a, {0xA5, 0xF1, 0x02, 0x60, 0x8C, 0x9E, 0xEB, 0xAC}}, |
2133 | | "Storage", "Storage Property Set", |
2134 | | StorageGuid_IDS |
2135 | | }, |
2136 | | { {0xF29F85E0, 0x4FF9, 0x1068, {0xAB, 0x91, 0x08, 0x00, 0x2B, 0x27, 0xB3, 0xD9}}, |
2137 | | "Document", "Document Property Set", |
2138 | | DocPropSetGuid_IDS |
2139 | | }, |
2140 | | { {0x49691C90, 0x7E17, 0x101A, {0xA9, 0x1C, 0x08, 0x00, 0x2B, 0x2E, 0xCD, 0xA9}}, |
2141 | | "Query", "Query Property Set", |
2142 | | QueryGuid_IDS |
2143 | | }, |
2144 | | { {0x28636AA6, 0x953D, 0x11D2, {0xB5, 0xD6, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0}}, |
2145 | | "ShellDetails", "Shell Details Property Set", |
2146 | | ShellDetails_IDS |
2147 | | }, |
2148 | | { {0x446D16B1, 0x8DAD, 0x4870, {0xA7, 0x48, 0x40, 0x2E, 0xA4, 0x3D, 0x78, 0x8C}}, |
2149 | | "???", "Unspecified Property Set", |
2150 | | PropSet1_IDS |
2151 | | }, |
2152 | | { {0x1E3EE840, 0xBC2B, 0x476C, {0x82, 0x37, 0x2A, 0xCD, 0x1A, 0x83, 0x9B, 0x22}}, |
2153 | | "???", "Unspecified Property Set", |
2154 | | PropSet2_IDS |
2155 | | }, |
2156 | | { {0x56A3372E, 0xCE9C, 0x11d2, {0x9F, 0x0E, 0x00, 0x60, 0x97, 0xC6, 0x86, 0xF6}}, |
2157 | | "Music", "Music Property Set", |
2158 | | MusicGuid_IDS |
2159 | | }, |
2160 | | { {0xE3E0584C, 0xB788, 0x4A5A, {0xBB, 0x20, 0x7F, 0x5A, 0x44, 0xC9, 0xAC, 0xDD}}, |
2161 | | "???", "Unspecified Property Set", |
2162 | | PropSet3_IDS |
2163 | | }, |
2164 | | { {0xDABD30ED, 0x0043, 0x4789, {0xA7, 0xF8, 0xD0, 0x13, 0xA4, 0x73, 0x66, 0x22}}, |
2165 | | "???", "Unspecified Property Set", |
2166 | | PropSet4_IDS |
2167 | | }, |
2168 | | { {0x635E9051, 0x50A5, 0x4BA2, {0xB9, 0xDB, 0x4E, 0xD0, 0x56, 0xC7, 0x72, 0x96}}, |
2169 | | "???", "Unspecified Property Set", |
2170 | | PropSet5_IDS |
2171 | | }, |
2172 | | { {0xD0A04F0A, 0x462A, 0x48A4, {0xBB, 0x2F, 0x37, 0x06, 0xE8, 0x8D, 0xBD, 0x7D}}, |
2173 | | "???", "Unspecified Property Set", |
2174 | | PropSet6_IDS |
2175 | | }, |
2176 | | { {0xDE35258C, 0xC695, 0x4CBC, {0xB9, 0x82, 0x38, 0xB0, 0xAD, 0x24, 0xCE, 0xD0}}, |
2177 | | "???", "Unspecified Property Set", |
2178 | | PropSet7_IDS |
2179 | | }, |
2180 | | { {0xD6942081, 0xD53B, 0x443D, {0xAD, 0x47, 0x5E, 0x05, 0x9D, 0x9C, 0xD2, 0x7A}}, |
2181 | | "???", "Unspecified Property Set", |
2182 | | PropSet8_IDS |
2183 | | }, |
2184 | | { {0xF7DB74B4, 0x4287, 0x4103, {0xAF, 0xBA, 0xF1, 0xB1, 0x3D, 0xCD, 0x75, 0xCF}}, |
2185 | | "???", "Unspecified Property Set", |
2186 | | PropSet9_IDS |
2187 | | }, |
2188 | | { {0x0B63E350, 0x9CCC, 0x11d0, {0xBC, 0xDB, 0x00, 0x80, 0x5F, 0xCC, 0xCE, 0x04}}, |
2189 | | "???", "Unspecified Property Set", |
2190 | | PropSet10_IDS |
2191 | | }, |
2192 | | { {0x9C1FCF74, 0x2D97, 0x41BA, {0xB4, 0xAE, 0xCB, 0x2E, 0x36, 0x61, 0xA6, 0xE4}}, |
2193 | | "???", "Unspecified Property Set", |
2194 | | PropSet11_IDS |
2195 | | }, |
2196 | | { {0x560C36C0, 0x503A, 0x11CF, {0xBA, 0xA1, 0x00, 0x00, 0x4C, 0x75, 0x2A, 0x9A}}, |
2197 | | "DocCharacter", "Document characterization Property Set", |
2198 | | DocCharacter_IDS |
2199 | | }, |
2200 | | { {0x5CDA5FC8, 0x33EE, 0x4FF3, {0x90, 0x94, 0xAE, 0x7B, 0xD8, 0x86, 0x8C, 0x4D}}, |
2201 | | "???", "Unspecified Property Set", |
2202 | | PropSet12_IDS |
2203 | | }, |
2204 | | { {0xF23F425C, 0x71A1, 0x4FA8, {0x92, 0x2F, 0x67, 0x8E, 0xA4, 0xA6, 0x04, 0x08}}, |
2205 | | "???", "Unspecified Property Set", |
2206 | | PropSet13_IDS |
2207 | | }, |
2208 | | { {0xDC8F80BD, 0xAF1E, 0x4289, {0x85, 0xB6, 0x3D, 0xFC, 0x1B, 0x49, 0x39, 0x92}}, |
2209 | | "???", "Unspecified Property Set", |
2210 | | PropSet14_IDS |
2211 | | }, |
2212 | | { {0xD5CDD502, 0x2E9C, 0x101B, {0x93, 0x97, 0x08, 0x00, 0x2B, 0x2C, 0xF9, 0xAE}}, |
2213 | | "DocPropSet2", "Document Property Set 2", |
2214 | | DocPropSetGuid2_IDS |
2215 | | }, |
2216 | | { {0x176DC63C, 0x2688, 0x4E89, {0x81, 0x43, 0xA3, 0x47, 0x80, 0x0F, 0x25, 0xE9}}, |
2217 | | "System.Contact", "System Contact Property Set", |
2218 | | SystemContact_IDS |
2219 | | }, |
2220 | | { {0xBFEE9149, 0xE3E2, 0x49A7, {0xA8, 0x62, 0xC0, 0x59, 0x88, 0x14, 0x5C, 0xEC}}, |
2221 | | "???","Unspecified Property Set", |
2222 | | PropSet15_IDS |
2223 | | }, |
2224 | | { {0xFF962609, 0xB7D6, 0x4999, {0x86, 0x2D, 0x95, 0x18, 0x0D, 0x52, 0x9A, 0xEA}}, |
2225 | | "???","Unspecified Property Set", |
2226 | | PropSet16_IDS |
2227 | | }, |
2228 | | { {0xAEAC19E4, 0x89AE, 0x4508, {0xB9, 0xB7, 0xBB, 0x86, 0x7A, 0xBE, 0xE2, 0xED}}, |
2229 | | "???","Unspecified Property Set", |
2230 | | PropSet17_IDS |
2231 | | }, |
2232 | | { {0x09429607, 0x582D, 0x437F, {0x84, 0xC3, 0xDE, 0x93, 0xA2, 0xB2, 0x4C, 0x3C}}, |
2233 | | "???","Unspecified Property Set", |
2234 | | PropSet18_IDS |
2235 | | }, |
2236 | | { {0x5BF396D4, 0x5EB2, 0x466F, {0xBD, 0xE9, 0x2F, 0xB3, 0xF2, 0x36, 0x1D, 0x6E}}, |
2237 | | "???","Unspecified Property Set", |
2238 | | PropSet19_IDS |
2239 | | }, |
2240 | | { {0x10984E0A, 0xF9F2, 0x4321, {0xB7, 0xEF, 0xBA, 0xF1, 0x95, 0xAF, 0x43, 0x19}}, |
2241 | | "???","Unspecified Property Set", |
2242 | | PropSet20_IDS |
2243 | | }, |
2244 | | { {0x39A7F922, 0x477C, 0x48DE, {0x8B, 0xC8, 0xB2, 0x84, 0x41, 0xE3, 0x42, 0xE3}}, |
2245 | | "???","Unspecified Property Set", |
2246 | | PropSet21_IDS |
2247 | | }, |
2248 | | { {0x8F167568, 0x0AAE, 0x4322, {0x8E, 0xD9, 0x60, 0x55, 0xB7, 0xB0, 0xE3, 0x98}}, |
2249 | | "???","Unspecified Property Set", |
2250 | | PropSet22_IDS |
2251 | | }, |
2252 | | { {0x000214A1, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}, |
2253 | | "???","Unspecified Property Set", |
2254 | | PropSet23_IDS |
2255 | | }, |
2256 | | { {0x43F8D7B7, 0xA444, 0x4F87, {0x93, 0x83, 0x52, 0x27, 0x1C, 0x9B, 0x91, 0x5C}}, |
2257 | | "???","Unspecified Property Set", |
2258 | | PropSet24_IDS |
2259 | | }, |
2260 | | { {0x8FDC6DEA, 0xB929, 0x412B, {0xBA, 0x90, 0x39, 0x7A, 0x25, 0x74, 0x65, 0xFE}}, |
2261 | | "???","Unspecified Property Set", |
2262 | | PropSet25_IDS |
2263 | | }, |
2264 | | { {0x188C1F91, 0x3C40, 0x4132, {0x9E, 0xC5, 0xD8, 0xB0, 0x3B, 0x72, 0xA8, 0xA2}}, |
2265 | | "???","Unspecified Property Set", |
2266 | | PropSet26_IDS |
2267 | | }, |
2268 | | { {0xD37D52C6, 0x261C, 0x4303, {0x82, 0xB3, 0x08, 0xB9, 0x26, 0xAC, 0x6F, 0x12}}, |
2269 | | "???","Unspecified Property Set", |
2270 | | PropSet27_IDS |
2271 | | }, |
2272 | | { {0x09EDD5B6, 0xB301, 0x43C5, {0x99, 0x90, 0xD0, 0x03, 0x02, 0xEF, 0xFD, 0x46}}, |
2273 | | "???","Unspecified Property Set", |
2274 | | PropSet28_IDS |
2275 | | }, |
2276 | | { {0x9D2408B6, 0x3167, 0x422B, {0x82, 0xB0, 0xF5, 0x83, 0xB7, 0xA7, 0xCF, 0xE3}}, |
2277 | | "???","Unspecified Property Set", |
2278 | | PropSet29_IDS |
2279 | | }, |
2280 | | { {0xE08805C8, 0xE395, 0x40DF, {0x80, 0xD2, 0x54, 0xF0, 0xD6, 0xC4, 0x31, 0x54}}, |
2281 | | "???","Unspecified Property Set", |
2282 | | PropSet30_IDS |
2283 | | }, |
2284 | | { {0x2C53C813, 0xFB63, 0x4E22, {0xA1, 0xAB, 0x0B, 0x33, 0x1C, 0xA1, 0xE2, 0x73}}, |
2285 | | "???","Unspecified Property Set", |
2286 | | PropSet31_IDS |
2287 | | }, |
2288 | | { {0xD98BE98B, 0xB86B, 0x4095, {0xBF, 0x52, 0x9D, 0x23, 0xB2, 0xE0, 0xA7, 0x52}}, |
2289 | | "???","Unspecified Property Set", |
2290 | | PropSet32_IDS |
2291 | | }, |
2292 | | { {0xD4729704, 0x8EF1, 0x43EF, {0x90, 0x24, 0x2B, 0xD3, 0x81, 0x18, 0x7F, 0xD5}}, |
2293 | | "???","Unspecified Property Set", |
2294 | | PropSet33_IDS |
2295 | | }, |
2296 | | { {0xA5477F61, 0x7A82, 0x4ECA, {0x9D, 0xDE, 0x98, 0xB6, 0x9B, 0x24, 0x79, 0xB3}}, |
2297 | | "???","Unspecified Property Set", |
2298 | | PropSet34_IDS |
2299 | | }, |
2300 | | { {0x45EAE747, 0x8E2A, 0x40AE, {0x8C, 0xBF, 0xCA, 0x52, 0xAB, 0xA6, 0x15, 0x2A}}, |
2301 | | "???","Unspecified Property Set", |
2302 | | PropSet35_IDS |
2303 | | }, |
2304 | | { {0x95C656C1, 0x2ABF, 0x4148, {0x9E, 0xD3, 0x9E, 0xC6, 0x02, 0xE3, 0xB7, 0xCD}}, |
2305 | | "???","Unspecified Property Set", |
2306 | | PropSet36_IDS |
2307 | | }, |
2308 | | { {0x51EC3F47, 0xDD50, 0x421D, {0x87, 0x69, 0x33, 0x4F, 0x50, 0x42, 0x4B, 0x1E}}, |
2309 | | "???","Unspecified Property Set", |
2310 | | PropSet37_IDS |
2311 | | }, |
2312 | | { {0x508161FA, 0x313B, 0x43D5, {0x83, 0xA1, 0xC1, 0xAC, 0xCF, 0x68, 0x62, 0x2C}}, |
2313 | | "???","Unspecified Property Set", |
2314 | | PropSet38_IDS |
2315 | | }, |
2316 | | { {0x730FB6DD, 0xCF7C, 0x426B, {0xA0, 0x3F, 0xBD, 0x16, 0x6C, 0xC9, 0xEE, 0x24}}, |
2317 | | "???","Unspecified Property Set", |
2318 | | PropSet40_IDS |
2319 | | }, |
2320 | | { {0x346C8BD1, 0x2E6A, 0x4C45, {0x89, 0xA4, 0x61, 0xB7, 0x8E, 0x8E, 0x70, 0x0F}}, |
2321 | | "???","Unspecified Property Set", |
2322 | | PropSet41_IDS |
2323 | | }, |
2324 | | { {0x38965063, 0xEDC8, 0x4268, {0x84, 0x91, 0xB7, 0x72, 0x31, 0x72, 0xCF, 0x29}}, |
2325 | | "???","Unspecified Property Set", |
2326 | | PropSet42_IDS |
2327 | | }, |
2328 | | { {0x6A15E5A0, 0x0A1E, 0x4CD7, {0xBB, 0x8C, 0xD2, 0xF1, 0xB0, 0xC9, 0x29, 0xBC}}, |
2329 | | "???","Unspecified Property Set", |
2330 | | PropSet43_IDS |
2331 | | }, |
2332 | | { {0x3F08E66F, 0x2F44, 0x4BB9, {0xA6, 0x82, 0xAC, 0x35, 0xD2, 0x56, 0x23, 0x22}}, |
2333 | | "???","Unspecified Property Set", |
2334 | | PropSet45_IDS |
2335 | | }, |
2336 | | { {0xC89A23D0, 0x7D6D, 0x4EB8, {0x87, 0xD4, 0x77, 0x6A, 0x82, 0xD4, 0x93, 0xE5}}, |
2337 | | "???","Unspecified Property Set", |
2338 | | PropSet46_IDS |
2339 | | }, |
2340 | | { {0x644D37B4, 0xE1B3, 0x4BAD, {0xB0, 0x99, 0x7E, 0x7C, 0x04, 0x96, 0x6A, 0xCA}}, |
2341 | | "???","Unspecified Property Set", |
2342 | | PropSet47_IDS |
2343 | | }, |
2344 | | { {0x83A6347E, 0x6FE4, 0x4F40, {0xBA, 0x9C, 0xC4, 0x86, 0x52, 0x40, 0xD1, 0xF4}}, |
2345 | | "???","Unspecified Property Set", |
2346 | | PropSet48_IDS |
2347 | | }, |
2348 | | { {0xB812F15D, 0xC2D8, 0x4BBF, {0xBA, 0xCD, 0x79, 0x74, 0x43, 0x46, 0x11, 0x3F}}, |
2349 | | "???","Unspecified Property Set", |
2350 | | PropSet49_IDS |
2351 | | }, |
2352 | | { {0xA06992B3, 0x8CAF, 0x4ED7, {0xA5, 0x47, 0xB2, 0x59, 0xE3, 0x2A, 0xC9, 0xFC}}, |
2353 | | "???","Unspecified Property Set", |
2354 | | PropSet50_IDS |
2355 | | }, |
2356 | | { {0x41CF5AE0, 0xF75A, 0x4806, {0xBD, 0x87, 0x59, 0xC7, 0xD9, 0x24, 0x8E, 0xB9}}, |
2357 | | "???","Unspecified Property Set", |
2358 | | PropSet51_IDS |
2359 | | }, |
2360 | | { {0x0ADEF160, 0xDB3F, 0x4308, {0x9A, 0x21, 0x06, 0x23, 0x7B, 0x16, 0xFA, 0x2A}}, |
2361 | | "???","Unspecified Property Set", |
2362 | | PropSet52_IDS |
2363 | | }, |
2364 | | { {0x8AFCC170, 0x8A46, 0x4B53, {0x9E, 0xEE, 0x90, 0xBA, 0xE7, 0x15, 0x1E, 0x62}}, |
2365 | | "???","Unspecified Property Set", |
2366 | | PropSet53_IDS |
2367 | | }, |
2368 | | { {0x56310920, 0x2491, 0x4919, {0x99, 0xCE, 0xEA, 0xDB, 0x06, 0xFA, 0xFD, 0xB2}}, |
2369 | | "???","Unspecified Property Set", |
2370 | | PropSet54_IDS |
2371 | | }, |
2372 | | { {0xB33AF30B, 0xF552, 0x4584, {0x93, 0x6C, 0xCB, 0x93, 0xE5, 0xCD, 0xA2, 0x9F}}, |
2373 | | "???","Unspecified Property Set", |
2374 | | PropSet55_IDS |
2375 | | }, |
2376 | | { {0x67DF94DE, 0x0CA7, 0x4D6F, {0xB7, 0x92, 0x05, 0x3A, 0x3E, 0x4F, 0x03, 0xCF}}, |
2377 | | "???","Unspecified Property Set", |
2378 | | PropSet56_IDS |
2379 | | }, |
2380 | | { {0x9098F33C, 0x9A7D, 0x48A8, {0x8D, 0xE5, 0x2E, 0x12, 0x27, 0xA6, 0x4E, 0x91}}, |
2381 | | "???","Unspecified Property Set", |
2382 | | PropSet57_IDS |
2383 | | }, |
2384 | | { {0xDE5EF3C7, 0x46E1, 0x484E, {0x99, 0x99, 0x62, 0xC5, 0x30, 0x83, 0x94, 0xC1}}, |
2385 | | "???","Unspecified Property Set", |
2386 | | PropSet58_IDS |
2387 | | }, |
2388 | | { {0x315B9C8D, 0x80A9, 0x4EF9, {0xAE, 0x16, 0x8E, 0x74, 0x6D, 0xA5, 0x1D, 0x70}}, |
2389 | | "???","Unspecified Property Set", |
2390 | | PropSet59_IDS |
2391 | | }, |
2392 | | { {0x98F98354, 0x617A, 0x46B8, {0x85, 0x60, 0x5B, 0x1B, 0x64, 0xBF, 0x1F, 0x89}}, |
2393 | | "???","Unspecified Property Set", |
2394 | | PropSet60_IDS |
2395 | | }, |
2396 | | { {0x08F6D7C2, 0xE3F2, 0x44FC, {0xAF, 0x1E, 0x5A, 0xA5, 0xC8, 0x1A, 0x2D, 0x3E}}, |
2397 | | "???","Unspecified Property Set", |
2398 | | PropSet61_IDS |
2399 | | }, |
2400 | | { {0xD4D0AA16, 0x9948, 0x41A4, {0xAA, 0x85, 0xD9, 0x7F, 0xF9, 0x64, 0x69, 0x93}}, |
2401 | | "???","Unspecified Property Set", |
2402 | | PropSet62_IDS |
2403 | | }, |
2404 | | { {0xDE41CC29, 0x6971, 0x4290, {0xB4, 0x72, 0xF5, 0x9F, 0x2E, 0x2F, 0x31, 0xE2}}, |
2405 | | "???","Unspecified Property Set", |
2406 | | PropSet63_IDS |
2407 | | }, |
2408 | | { {0xDEA7C82C, 0x1D89, 0x4A66, {0x94, 0x27, 0xA4, 0xE3, 0xDE, 0xBA, 0xBC, 0xB1}}, |
2409 | | "???","Unspecified Property Set", |
2410 | | PropSet64_IDS |
2411 | | }, |
2412 | | { {0x00F58A38, 0xC54B, 0x4C40, {0x86, 0x96, 0x97, 0x23, 0x59, 0x80, 0xEA, 0xE1}}, |
2413 | | "???","Unspecified Property Set", |
2414 | | PropSet65_IDS |
2415 | | }, |
2416 | | { {0xCD9ED458, 0x08CE, 0x418F, {0xA7, 0x0E, 0xF9, 0x12, 0xC7, 0xBB, 0x9C, 0x5C}}, |
2417 | | "???","Unspecified Property Set", |
2418 | | PropSet66_IDS |
2419 | | }, |
2420 | | { {0x64440492, 0x4C8B, 0x11D1, {0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03}}, |
2421 | | "???","Unspecified Property Set", |
2422 | | PropSet67_IDS |
2423 | | }, |
2424 | | { {0xAAA660F9, 0x9865, 0x458E, {0xB4, 0x84, 0x01, 0xBC, 0x7F, 0xE3, 0x97, 0x3E}}, |
2425 | | "???","Unspecified Property Set", |
2426 | | PropSet68_IDS |
2427 | | }, |
2428 | | { {0xE8309B6E, 0x084C, 0x49B4, {0xB1, 0xFC, 0x90, 0xA8, 0x03, 0x31, 0xB6, 0x38}}, |
2429 | | "???","Unspecified Property Set", |
2430 | | PropSet69_IDS |
2431 | | }, |
2432 | | { {0x64440490, 0x4C8B, 0x11D1, {0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03}}, |
2433 | | "???","Unspecified Property Set", |
2434 | | PropSet70_IDS |
2435 | | }, |
2436 | | { {0xE4F10A3C, 0x49E6, 0x405D, {0x82, 0x88, 0xA2, 0x3B, 0xD4, 0xEE, 0xAA, 0x6C}}, |
2437 | | "???","Unspecified Property Set", |
2438 | | PropSet71_IDS |
2439 | | }, |
2440 | | { {0x14B81DA1, 0x0135, 0x4D31, {0x96, 0xD9, 0x6C, 0xBF, 0xC9, 0x67, 0x1A, 0x99}}, |
2441 | | "???","Unspecified Property Set", |
2442 | | PropSet72_IDS |
2443 | | }, |
2444 | | { {0xAAF16BAC, 0x2B55, 0x45E6, {0x9F, 0x6D, 0x41, 0x5E, 0xB9, 0x49, 0x10, 0xDF}}, |
2445 | | "???","Unspecified Property Set", |
2446 | | PropSet73_IDS |
2447 | | }, |
2448 | | { {0x821437D6, 0x9EAB, 0x4765, {0xA5, 0x89, 0x3B, 0x1C, 0xBB, 0xD2, 0x2A, 0x61}}, |
2449 | | "???","Unspecified Property Set", |
2450 | | PropSet74_IDS |
2451 | | }, |
2452 | | { {0xD55BAE5A, 0x3892, 0x417A, {0xA6, 0x49, 0xC6, 0xAC, 0x5A, 0xAA, 0xEA, 0xB3}}, |
2453 | | "???","Unspecified Property Set", |
2454 | | PropSet75_IDS |
2455 | | }, |
2456 | | { {0x72FC5BA4, 0x24F9, 0x4011, {0x9F, 0x3F, 0xAD, 0xD2, 0x7A, 0xFA, 0xD8, 0x18}}, |
2457 | | "???","Unspecified Property Set", |
2458 | | PropSet76_IDS |
2459 | | }, |
2460 | | { {0x0BA7D6C3, 0x568D, 0x4159, {0xAB, 0x91, 0x78, 0x1A, 0x91, 0xFB, 0x71, 0xE5}}, |
2461 | | "???","Unspecified Property Set", |
2462 | | PropSet77_IDS |
2463 | | }, |
2464 | | { {0x744C8242, 0x4DF5, 0x456C, {0xAB, 0x9E, 0x01, 0x4E, 0xFB, 0x90, 0x21, 0xE3}}, |
2465 | | "???","Unspecified Property Set", |
2466 | | PropSet78_IDS |
2467 | | }, |
2468 | | { {0xB9B4B3FC, 0x2B51, 0x4A42, {0xB5, 0xD8, 0x32, 0x41, 0x46, 0xAF, 0xCF, 0x25}}, |
2469 | | "???","Unspecified Property Set", |
2470 | | PropSet79_IDS |
2471 | | }, |
2472 | | { {0x5DC2253F, 0x5E11, 0x4ADF, {0x9C, 0xFE, 0x91, 0x0D, 0xD0, 0x1E, 0x3E, 0x70}}, |
2473 | | "???","Unspecified Property Set", |
2474 | | PropSet80_IDS |
2475 | | }, |
2476 | | { {0x7B9F6399, 0x0A3F, 0x4B12, {0x89, 0xBD, 0x4A, 0xDC, 0x51, 0xC9, 0x18, 0xAF}}, |
2477 | | "???","Unspecified Property Set", |
2478 | | PropSet81_IDS |
2479 | | }, |
2480 | | { {0x8589E481, 0x6040, 0x473D, {0xB1, 0x71, 0x7F, 0xA8, 0x9C, 0x27, 0x08, 0xED}}, |
2481 | | "???","Unspecified Property Set", |
2482 | | PropSet82_IDS |
2483 | | }, |
2484 | | { {0x5DA84765, 0xE3FF, 0x4278, {0x86, 0xB0, 0xA2, 0x79, 0x67, 0xFB, 0xDD, 0x03}}, |
2485 | | "???","Unspecified Property Set", |
2486 | | PropSet83_IDS |
2487 | | }, |
2488 | | { {0x14977844, 0x6B49, 0x4AAD, {0xA7, 0x14, 0xA4, 0x51, 0x3B, 0xF6, 0x04, 0x60}}, |
2489 | | "???","Unspecified Property Set", |
2490 | | PropSet84_IDS |
2491 | | }, |
2492 | | { {0x90E5E14E, 0x648B, 0x4826, {0xB2, 0xAA, 0xAC, 0xAF, 0x79, 0x0E, 0x35, 0x13}}, |
2493 | | "???","Unspecified Property Set", |
2494 | | PropSet85_IDS |
2495 | | }, |
2496 | | { {0x293CA35A, 0x09AA, 0x4DD2, {0xB1, 0x80, 0x1F, 0xE2, 0x45, 0x72, 0x8A, 0x52}}, |
2497 | | "???","Unspecified Property Set", |
2498 | | PropSet86_IDS |
2499 | | }, |
2500 | | { {0xC8EA94F0, 0xA9E3, 0x4969, {0xA9, 0x4B, 0x9C, 0x62, 0xA9, 0x53, 0x24, 0xE0}}, |
2501 | | "???","Unspecified Property Set", |
2502 | | PropSet87_IDS |
2503 | | }, |
2504 | | { {0x8B26EA41, 0x058F, 0x43F6, {0xAE, 0xCC, 0x40, 0x35, 0x68, 0x1C, 0xE9, 0x77}}, |
2505 | | "???","Unspecified Property Set", |
2506 | | PropSet88_IDS |
2507 | | }, |
2508 | | { {0xF21D9941, 0x81F0, 0x471A, {0xAD, 0xEE, 0x4E, 0x74, 0xB4, 0x92, 0x17, 0xED}}, |
2509 | | "???","Unspecified Property Set", |
2510 | | PropSet89_IDS |
2511 | | }, |
2512 | | { {0xB0B87314, 0xFCF6, 0x4FEB, {0x8D, 0xFF, 0xA5, 0x0D, 0xA6, 0xAF, 0x56, 0x1C}}, |
2513 | | "???","Unspecified Property Set", |
2514 | | PropSet90_IDS |
2515 | | }, |
2516 | | { {0xCC6F4F24, 0x6083, 0x4BD4, {0x87, 0x54, 0x67, 0x4D, 0x0D, 0xE8, 0x7A, 0xB8}}, |
2517 | | "???","Unspecified Property Set", |
2518 | | PropSet91_IDS |
2519 | | }, |
2520 | | { {0xA0E74609, 0xB84D, 0x4F49, {0xB8, 0x60, 0x46, 0x2B, 0xD9, 0x97, 0x1F, 0x98}}, |
2521 | | "???","Unspecified Property Set", |
2522 | | PropSet92_IDS |
2523 | | }, |
2524 | | { {0xD68DBD8A, 0x3374, 0x4B81, {0x99, 0x72, 0x3E, 0xC3, 0x06, 0x82, 0xDB, 0x3D}}, |
2525 | | "???","Unspecified Property Set", |
2526 | | PropSet93_IDS |
2527 | | }, |
2528 | | { {0x2CBAA8F5, 0xD81F, 0x47CA, {0xB1, 0x7A, 0xF8, 0xD8, 0x22, 0x30, 0x01, 0x31}}, |
2529 | | "???","Unspecified Property Set", |
2530 | | PropSet94_IDS |
2531 | | }, |
2532 | | { {0x72FAB781, 0xACDA, 0x43E5, {0xB1, 0x55, 0xB2, 0x43, 0x4F, 0x85, 0xE6, 0x78}}, |
2533 | | "???","Unspecified Property Set", |
2534 | | PropSet95_IDS |
2535 | | }, |
2536 | | { {0x6B8DA074, 0x3B5C, 0x43BC, {0x88, 0x6F, 0x0A, 0x2C, 0xDC, 0xE0, 0x0B, 0x6F}}, |
2537 | | "???","Unspecified Property Set", |
2538 | | PropSet96_IDS |
2539 | | }, |
2540 | | { {0x18BBD425, 0xECFD, 0x46EF, {0xB6, 0x12, 0x7B, 0x4A, 0x60, 0x34, 0xED, 0xA0}}, |
2541 | | "???","Unspecified Property Set", |
2542 | | PropSet97_IDS |
2543 | | }, |
2544 | | { {0x276D7BB0, 0x5B34, 0x4FB0, {0xAA, 0x4B, 0x15, 0x8E, 0xD1, 0x2A, 0x18, 0x09}}, |
2545 | | "???","Unspecified Property Set", |
2546 | | PropSet99_IDS |
2547 | | }, |
2548 | | { {0xFEC690B7, 0x5F30, 0x4646, {0xAE, 0x47, 0x4C, 0xAA, 0xFB, 0xA8, 0x84, 0xA3}}, |
2549 | | "???","Unspecified Property Set", |
2550 | | PropSet100_IDS |
2551 | | }, |
2552 | | { {0x46B4E8DE, 0xCDB2, 0x440D, {0x88, 0x5C, 0x16, 0x58, 0xEB, 0x65, 0xB9, 0x14}}, |
2553 | | "???","Unspecified Property Set", |
2554 | | PropSet101_IDS |
2555 | | }, |
2556 | | { {0xF628FD8C, 0x7BA8, 0x465A, {0xA6, 0x5B, 0xC5, 0xAA, 0x79, 0x26, 0x3A, 0x9E}}, |
2557 | | "???","Unspecified Property Set", |
2558 | | PropSet102_IDS |
2559 | | }, |
2560 | | { {0x7A7D76F4, 0xB630, 0x4BD7, {0x95, 0xFF, 0x37, 0xCC, 0x51, 0xA9, 0x75, 0xC9}}, |
2561 | | "???","Unspecified Property Set", |
2562 | | PropSet103_IDS |
2563 | | }, |
2564 | | { {0x446F787F, 0x10C4, 0x41CB, {0xA6, 0xC4, 0x4D, 0x03, 0x43, 0x55, 0x15, 0x97}}, |
2565 | | "???","Unspecified Property Set", |
2566 | | PropSet104_IDS |
2567 | | }, |
2568 | | { {0xA9EA193C, 0xC511, 0x498A, {0xA0, 0x6B, 0x58, 0xE2, 0x77, 0x6D, 0xCC, 0x28}}, |
2569 | | "???","Unspecified Property Set", |
2570 | | PropSet105_IDS |
2571 | | }, |
2572 | | { {0x97B0AD89, 0xDF49, 0x49CC, {0x83, 0x4E, 0x66, 0x09, 0x74, 0xFD, 0x75, 0x5B}}, |
2573 | | "???","Unspecified Property Set", |
2574 | | PropSet106_IDS |
2575 | | }, |
2576 | | { {0xF6272D18, 0xCECC, 0x40B1, {0xB2, 0x6A, 0x39, 0x11, 0x71, 0x7A, 0xA7, 0xBD}}, |
2577 | | "???","Unspecified Property Set", |
2578 | | PropSet107_IDS |
2579 | | }, |
2580 | | { {0x61478C08, 0xB600, 0x4A84, {0xBB, 0xE4, 0xE9, 0x9C, 0x45, 0xF0, 0xA0, 0x72}}, |
2581 | | "???","Unspecified Property Set", |
2582 | | PropSet108_IDS |
2583 | | }, |
2584 | | { {0xBCCC8A3C, 0x8CEF, 0x42E5, {0x9B, 0x1C, 0xC6, 0x90, 0x79, 0x39, 0x8B, 0xC7}}, |
2585 | | "???","Unspecified Property Set", |
2586 | | PropSet109_IDS |
2587 | | }, |
2588 | | { {0x9AD5BADB, 0xCEA7, 0x4470, {0xA0, 0x3D, 0xB8, 0x4E, 0x51, 0xB9, 0x94, 0x9E}}, |
2589 | | "???","Unspecified Property Set", |
2590 | | PropSet110_IDS |
2591 | | }, |
2592 | | { {0xF1A24AA7, 0x9CA7, 0x40F6, {0x89, 0xEC, 0x97, 0xDE, 0xF9, 0xFF, 0xE8, 0xDB}}, |
2593 | | "???","Unspecified Property Set", |
2594 | | PropSet111_IDS |
2595 | | }, |
2596 | | { {0x3602C812, 0x0F3B, 0x45F0, {0x85, 0xAD, 0x60, 0x34, 0x68, 0xD6, 0x94, 0x23}}, |
2597 | | "???","Unspecified Property Set", |
2598 | | PropSet112_IDS |
2599 | | }, |
2600 | | { {0xA6F360D2, 0x55F9, 0x48DE, {0xB9, 0x09, 0x62, 0x0E, 0x09, 0x0A, 0x64, 0x7C}}, |
2601 | | "???","Unspecified Property Set", |
2602 | | PropSet113_IDS |
2603 | | }, |
2604 | | { {0x897B3694, 0xFE9E, 0x43E6, {0x80, 0x66, 0x26, 0x0F, 0x59, 0x0C, 0x01, 0x00}}, |
2605 | | "???","Unspecified Property Set", |
2606 | | PropSet114_IDS |
2607 | | }, |
2608 | | { {0x8619A4B6, 0x9F4D, 0x4429, {0x8C, 0x0F, 0xB9, 0x96, 0xCA, 0x59, 0xE3, 0x35}}, |
2609 | | "???","Unspecified Property Set", |
2610 | | PropSet115_IDS |
2611 | | }, |
2612 | | { {0xA26F4AFC, 0x7346, 0x4299, {0xBE, 0x47, 0xEB, 0x1A, 0xE6, 0x13, 0x13, 0x9F}}, |
2613 | | "???","Unspecified Property Set", |
2614 | | PropSet116_IDS |
2615 | | }, |
2616 | | { {0xBC4E71CE, 0x17F9, 0x48D5, {0xBE, 0xE9, 0x02, 0x1D, 0xF0, 0xEA, 0x54, 0x09}}, |
2617 | | "???","Unspecified Property Set", |
2618 | | PropSet117_IDS |
2619 | | }, |
2620 | | { {0x65A98875, 0x3C80, 0x40AB, {0xAB, 0xBC, 0xEF, 0xDA, 0xF7, 0x7D, 0xBE, 0xE2}}, |
2621 | | "???","Unspecified Property Set", |
2622 | | PropSet118_IDS |
2623 | | }, |
2624 | | { {0x84D8F337, 0x981D, 0x44B3, {0x96, 0x15, 0xC7, 0x59, 0x6D, 0xBA, 0x17, 0xE3}}, |
2625 | | "???","Unspecified Property Set", |
2626 | | PropSet119_IDS |
2627 | | }, |
2628 | | { {0xBE1A72C6, 0x9A1D, 0x46B7, {0xAF, 0xE7, 0xAF, 0xAF, 0x8C, 0xEF, 0x49, 0x99}}, |
2629 | | "???","Unspecified Property Set", |
2630 | | PropSet120_IDS |
2631 | | }, |
2632 | | { {0x8F367200, 0xC270, 0x457C, {0xB1, 0xD4, 0xE0, 0x7C, 0x5B, 0xCD, 0x90, 0xC7}}, |
2633 | | "???","Unspecified Property Set", |
2634 | | PropSet121_IDS |
2635 | | }, |
2636 | | { {0x428040AC, 0xA177, 0x4C8A, {0x97, 0x60, 0xF6, 0xF7, 0x61, 0x22, 0x7F, 0x9A}}, |
2637 | | "???","Unspecified Property Set", |
2638 | | PropSet122_IDS |
2639 | | }, |
2640 | | { {0xA3B29791, 0x7713, 0x4E1D, {0xBB, 0x40, 0x17, 0xDB, 0x85, 0xF0, 0x18, 0x31}}, |
2641 | | "???","Unspecified Property Set", |
2642 | | PropSet123_IDS |
2643 | | }, |
2644 | | { {0xBCEEE283, 0x35DF, 0x4D53, {0x82, 0x6A, 0xF3, 0x6A, 0x3E, 0xEF, 0xC6, 0xBE}}, |
2645 | | "???","Unspecified Property Set", |
2646 | | PropSet124_IDS |
2647 | | }, |
2648 | | { {0x91EFF6F3, 0x2E27, 0x42CA, {0x93, 0x3E, 0x7C, 0x99, 0x9F, 0xBE, 0x31, 0x0B}}, |
2649 | | "???","Unspecified Property Set", |
2650 | | PropSet125_IDS |
2651 | | }, |
2652 | | { {0x5CBF2787, 0x48CF, 0x4208, {0xB9, 0x0E, 0xEE, 0x5E, 0x5D, 0x42, 0x02, 0x94}}, |
2653 | | "???","Unspecified Property Set", |
2654 | | PropSet126_IDS |
2655 | | }, |
2656 | | { {0x1B5439E7, 0xEBA1, 0x4AF8, {0xBD, 0xD7, 0x7A, 0xF1, 0xD4, 0x54, 0x94, 0x93}}, |
2657 | | "???","Unspecified Property Set", |
2658 | | PropSet127_IDS |
2659 | | }, |
2660 | | { {0x08C7CC5F, 0x60F2, 0x4494, {0xAD, 0x75, 0x55, 0xE3, 0xE0, 0xB5, 0xAD, 0xD0}}, |
2661 | | "???","Unspecified Property Set", |
2662 | | PropSet128_IDS |
2663 | | }, |
2664 | | { {0x7FE3AA27, 0x2648, 0x42F3, {0x89, 0xB0, 0x45, 0x4E, 0x5C, 0xB1, 0x50, 0xC3}}, |
2665 | | "???","Unspecified Property Set", |
2666 | | PropSet129_IDS |
2667 | | }, |
2668 | | { {0xE53D799D, 0x0F3F, 0x466E, {0xB2, 0xFF, 0x74, 0x63, 0x4A, 0x3C, 0xB7, 0xA4}}, |
2669 | | "???","Unspecified Property Set", |
2670 | | PropSet130_IDS |
2671 | | }, |
2672 | | { {0x4776CAFA, 0xBCE4, 0x4CB1, {0xA2, 0x3E, 0x26, 0x5E, 0x76, 0xD8, 0xEB, 0x11}}, |
2673 | | "???","Unspecified Property Set", |
2674 | | PropSet131_IDS |
2675 | | }, |
2676 | | { {0x71B377D6, 0xE570, 0x425F, {0xA1, 0x70, 0x80, 0x9F, 0xAE, 0x73, 0xE5, 0x4E}}, |
2677 | | "???","Unspecified Property Set", |
2678 | | PropSet132_IDS |
2679 | | }, |
2680 | | { {0x3143BF7C, 0x80A8, 0x4854, {0x88, 0x80, 0xE2, 0xE4, 0x01, 0x89, 0xBD, 0xD0}}, |
2681 | | "???","Unspecified Property Set", |
2682 | | PropSet133_IDS |
2683 | | }, |
2684 | | { {0xA6744477, 0xC237, 0x475B, {0xA0, 0x75, 0x54, 0xF3, 0x44, 0x98, 0x29, 0x2A}}, |
2685 | | "???","Unspecified Property Set", |
2686 | | PropSet134_IDS |
2687 | | }, |
2688 | | { {0xC9C34F84, 0x2241, 0x4401, {0xB6, 0x07, 0xBD, 0x20, 0xED, 0x75, 0xAE, 0x7F}}, |
2689 | | "???","Unspecified Property Set", |
2690 | | PropSet135_IDS |
2691 | | }, |
2692 | | { {0xF8FA7FA3, 0xD12B, 0x4785, {0x8A, 0x4E, 0x69, 0x1A, 0x94, 0xF7, 0xA3, 0xE7}}, |
2693 | | "???","Unspecified Property Set", |
2694 | | PropSet136_IDS |
2695 | | }, |
2696 | | { {0x7268AF55, 0x1CE4, 0x4F6E, {0xA4, 0x1F, 0xB6, 0xE4, 0xEF, 0x10, 0xE4, 0xA9}}, |
2697 | | "???","Unspecified Property Set", |
2698 | | PropSet137_IDS |
2699 | | }, |
2700 | | { {0xE1D4A09E, 0xD758, 0x4CD1, {0xB6, 0xEC, 0x34, 0xA8, 0xB5, 0xA7, 0x3F, 0x80}}, |
2701 | | "???","Unspecified Property Set", |
2702 | | PropSet138_IDS |
2703 | | }, |
2704 | | { {0xD7313FF1, 0xA77A, 0x401C, {0x8C, 0x99, 0x3D, 0xBD, 0xD6, 0x8A, 0xDD, 0x36}}, |
2705 | | "???","Unspecified Property Set", |
2706 | | PropSet139_IDS |
2707 | | }, |
2708 | | { {0xF85BF840, 0xA925, 0x4BC2, {0xB0, 0xC4, 0x8E, 0x36, 0xB5, 0x98, 0x67, 0x9E}}, |
2709 | | "???","Unspecified Property Set", |
2710 | | PropSet140_IDS |
2711 | | }, |
2712 | | { {0x668CDFA5, 0x7A1B, 0x4323, {0xAE, 0x4B, 0xE5, 0x27, 0x39, 0x3A, 0x1D, 0x81}}, |
2713 | | "???","Unspecified Property Set", |
2714 | | PropSet141_IDS |
2715 | | }, |
2716 | | { {0xEE3D3D8A, 0x5381, 0x4CFA, {0xB1, 0x3B, 0xAA, 0xF6, 0x6B, 0x5F, 0x4E, 0xC9}}, |
2717 | | "???","Unspecified Property Set", |
2718 | | PropSet142_IDS |
2719 | | }, |
2720 | | { {0xD0C7F054, 0x3F72, 0x4725, {0x85, 0x27, 0x12, 0x9A, 0x57, 0x7C, 0xB2, 0x69}}, |
2721 | | "???","Unspecified Property Set", |
2722 | | PropSet143_IDS |
2723 | | }, |
2724 | | { {0x3C8CEE58, 0xD4F0, 0x4CF9, {0xB7, 0x56, 0x4E, 0x5D, 0x24, 0x44, 0x7B, 0xCD}}, |
2725 | | "???","Unspecified Property Set", |
2726 | | PropSet144_IDS |
2727 | | }, |
2728 | | { {0x6E682923, 0x7F7B, 0x4F0C, {0xA3, 0x37, 0xCF, 0xCA, 0x29, 0x66, 0x87, 0xBF}}, |
2729 | | "???","Unspecified Property Set", |
2730 | | PropSet145_IDS |
2731 | | }, |
2732 | | { {0xFD122953, 0xFA93, 0x4EF7, {0x92, 0xC3, 0x04, 0xC9, 0x46, 0xB2, 0xF7, 0xC8}}, |
2733 | | "???","Unspecified Property Set", |
2734 | | PropSet146_IDS |
2735 | | }, |
2736 | | { {0x0BE1C8E7, 0x1981, 0x4676, {0xAE, 0x14, 0xFD, 0xD7, 0x8F, 0x05, 0xA6, 0xE7}}, |
2737 | | "???","Unspecified Property Set", |
2738 | | PropSet147_IDS |
2739 | | }, |
2740 | | { {0xF1176DFE, 0x7138, 0x4640, {0x8B, 0x4C, 0xAE, 0x37, 0x5D, 0xC7, 0x0A, 0x6D}}, |
2741 | | "???","Unspecified Property Set", |
2742 | | PropSet148_IDS |
2743 | | }, |
2744 | | { {0x95BEB1FC, 0x326D, 0x4644, {0xB3, 0x96, 0xCD, 0x3E, 0xD9, 0x0E, 0x6D, 0xDF}}, |
2745 | | "???","Unspecified Property Set", |
2746 | | PropSet149_IDS |
2747 | | }, |
2748 | | { {0xDDD1460F, 0xC0BF, 0x4553, {0x8C, 0xE4, 0x10, 0x43, 0x3C, 0x90, 0x8F, 0xB0}}, |
2749 | | "???","Unspecified Property Set", |
2750 | | PropSet150_IDS |
2751 | | }, |
2752 | | { {0x9B174B34, 0x40FF, 0x11D2, {0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71}}, |
2753 | | "???","Unspecified Property Set", |
2754 | | PropSet151_IDS |
2755 | | }, |
2756 | | { {0x08A65AA1, 0xF4C9, 0x43DD, {0x9D, 0xDF, 0xA3, 0x3D, 0x8E, 0x7E, 0xAD, 0x85}}, |
2757 | | "???","Unspecified Property Set", |
2758 | | PropSet152_IDS |
2759 | | }, |
2760 | | { {0x084D8A0A, 0xE6D5, 0x40DE, {0xBF, 0x1F, 0xC8, 0x82, 0x0E, 0x7C, 0x87, 0x7C}}, |
2761 | | "???","Unspecified Property Set", |
2762 | | PropSet153_IDS |
2763 | | }, |
2764 | | { {0x841E4F90, 0xFF59, 0x4D16, {0x89, 0x47, 0xE8, 0x1B, 0xBF, 0xFA, 0xB3, 0x6D}}, |
2765 | | "???","Unspecified Property Set", |
2766 | | PropSet154_IDS |
2767 | | }, |
2768 | | { {0xFC9F7306, 0xFF8F, 0x4D49, {0x9F, 0xB6, 0x3F, 0xFE, 0x5C, 0x09, 0x51, 0xEC}}, |
2769 | | "???","Unspecified Property Set", |
2770 | | PropSet155_IDS |
2771 | | }, |
2772 | | { {0x53DA57CF, 0x62C0, 0x45C4, {0x81, 0xDE, 0x76, 0x10, 0xBC, 0xEF, 0xD7, 0xF5}}, |
2773 | | "???","Unspecified Property Set", |
2774 | | PropSet156_IDS |
2775 | | }, |
2776 | | { {0xF8D3F6AC, 0x4874, 0x42CB, {0xBE, 0x59, 0xAB, 0x45, 0x4B, 0x30, 0x71, 0x6A}}, |
2777 | | "???","Unspecified Property Set", |
2778 | | PropSet157_IDS |
2779 | | }, |
2780 | | { {0x4684FE97, 0x8765, 0x4842, {0x9C, 0x13, 0xF0, 0x06, 0x44, 0x7B, 0x17, 0x8C}}, |
2781 | | "???","Unspecified Property Set", |
2782 | | PropSet158_IDS |
2783 | | }, |
2784 | | { {0xC449D5CB, 0x9EA4, 0x4809, {0x82, 0xE8, 0xAF, 0x9D, 0x59, 0xDE, 0xD6, 0xD1}}, |
2785 | | "???","Unspecified Property Set", |
2786 | | PropSet159_IDS |
2787 | | }, |
2788 | | { {0x3F8472B5, 0xE0AF, 0x4DB2, {0x80, 0x71, 0xC5, 0x3F, 0xE7, 0x6A, 0xE7, 0xCE}}, |
2789 | | "???","Unspecified Property Set", |
2790 | | PropSet160_IDS |
2791 | | }, |
2792 | | { {0x0CEF7D53, 0xFA64, 0x11D1, {0xA2, 0x03, 0x00, 0x00, 0xF8, 0x1F, 0xED, 0xEE}}, |
2793 | | "???","Unspecified Property Set", |
2794 | | PropSet161_IDS |
2795 | | }, |
2796 | | { {0xFDF84370, 0x031A, 0x4ADD, {0x9E, 0x91, 0x0D, 0x77, 0x5F, 0x1C, 0x66, 0x05}}, |
2797 | | "???","Unspecified Property Set", |
2798 | | PropSet162_IDS |
2799 | | }, |
2800 | | { {0x6D748DE2, 0x8D38, 0x4CC3, {0xAC, 0x60, 0xF0, 0x09, 0xB0, 0x57, 0xC5, 0x57}}, |
2801 | | "???","Unspecified Property Set", |
2802 | | PropSet163_IDS |
2803 | | }, |
2804 | | { {0x2579E5D0, 0x1116, 0x4084, {0xBD, 0x9A, 0x9B, 0x4F, 0x7C, 0xB4, 0xDF, 0x5E}}, |
2805 | | "???","Unspecified Property Set", |
2806 | | PropSet164_IDS |
2807 | | }, |
2808 | | { {0xC554493C, 0xC1F7, 0x40C1, {0xA7, 0x6C, 0xEF, 0x8C, 0x06, 0x14, 0x00, 0x3E}}, |
2809 | | "???","Unspecified Property Set", |
2810 | | PropSet165_IDS |
2811 | | }, |
2812 | | { {0x0DA41CFA, 0xD224, 0x4A18, {0xAE, 0x2F, 0x59, 0x61, 0x58, 0xDB, 0x4B, 0x3A}}, |
2813 | | "???","Unspecified Property Set", |
2814 | | PropSet166_IDS |
2815 | | }, |
2816 | | { {0xA82D9EE7, 0xCA67, 0x4312, {0x96, 0x5E, 0x22, 0x6B, 0xCE, 0xA8, 0x50, 0x23}}, |
2817 | | "???","Unspecified Property Set", |
2818 | | PropSet167_IDS |
2819 | | }, |
2820 | | { {0x09329B74, 0x40A3, 0x4C68, {0xBF, 0x07, 0xAF, 0x9A, 0x57, 0x2F, 0x60, 0x7C}}, |
2821 | | "???","Unspecified Property Set", |
2822 | | PropSet168_IDS |
2823 | | }, |
2824 | | { {0x9A93244D, 0xA7AD, 0x4FF8, {0x9B, 0x99, 0x45, 0xEE, 0x4C, 0xC0, 0x9A, 0xF6}}, |
2825 | | "???","Unspecified Property Set", |
2826 | | PropSet169_IDS |
2827 | | }, |
2828 | | { {0xF04BEF95, 0xC585, 0x4197, {0xA2, 0xB7, 0xDF, 0x46, 0xFD, 0xC9, 0xEE, 0x6D}}, |
2829 | | "???","Unspecified Property Set", |
2830 | | PropSet170_IDS |
2831 | | }, |
2832 | | { {0x59DDE9F2, 0x5253, 0x40EA, {0x9A, 0x8B, 0x47, 0x9E, 0x96, 0xC6, 0x24, 0x9A}}, |
2833 | | "???","Unspecified Property Set", |
2834 | | PropSet171_IDS |
2835 | | }, |
2836 | | { {0x6444048F, 0x4C8B, 0x11D1, {0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03}}, |
2837 | | "???","Unspecified Property Set", |
2838 | | PropSet172_IDS |
2839 | | }, |
2840 | | { {0x9A9BC088, 0x4F6D, 0x469E, {0x99, 0x19, 0xE7, 0x05, 0x41, 0x20, 0x40, 0xF9}}, |
2841 | | "???","Unspecified Property Set", |
2842 | | PropSet173_IDS |
2843 | | }, |
2844 | | { {0x6336B95E, 0xC7A7, 0x426D, {0x86, 0xFD, 0x7A, 0xE3, 0xD3, 0x9C, 0x84, 0xB4}}, |
2845 | | "???","Unspecified Property Set", |
2846 | | PropSet174_IDS |
2847 | | }, |
2848 | | { {0xC06238B2, 0x0BF9, 0x4279, {0xA7, 0x23, 0x25, 0x85, 0x67, 0x15, 0xCB, 0x9D}}, |
2849 | | "???","Unspecified Property Set", |
2850 | | PropSet175_IDS |
2851 | | }, |
2852 | | { {0xEC0B4191, 0xAB0B, 0x4C66, {0x90, 0xB6, 0xC6, 0x63, 0x7C, 0xDE, 0xBB, 0xAB}}, |
2853 | | "???","Unspecified Property Set", |
2854 | | PropSet176_IDS |
2855 | | }, |
2856 | | { {0x660E04D6, 0x81AB, 0x4977, {0xA0, 0x9F, 0x82, 0x31, 0x31, 0x13, 0xAB, 0x26}}, |
2857 | | "???","Unspecified Property Set", |
2858 | | PropSet177_IDS |
2859 | | }, |
2860 | | { {0xDC54FD2E, 0x189D, 0x4871, {0xAA, 0x01, 0x08, 0xC2, 0xF5, 0x7A, 0x4A, 0xBC}}, |
2861 | | "???","Unspecified Property Set", |
2862 | | PropSet178_IDS |
2863 | | }, |
2864 | | { {0xCD102C9C, 0x5540, 0x4A88, {0xA6, 0xF6, 0x64, 0xE4, 0x98, 0x1C, 0x8C, 0xD1}}, |
2865 | | "???","Unspecified Property Set", |
2866 | | PropSet179_IDS |
2867 | | }, |
2868 | | { {0x1F856A9F, 0x6900, 0x4ABA, {0x95, 0x05, 0x2D, 0x5F, 0x1B, 0x4D, 0x66, 0xCB}}, |
2869 | | "???","Unspecified Property Set", |
2870 | | PropSet180_IDS |
2871 | | }, |
2872 | | { {0x90197CA7, 0xFD8F, 0x4E8C, {0x9D, 0xA3, 0xB5, 0x7E, 0x1E, 0x60, 0x92, 0x95}}, |
2873 | | "???","Unspecified Property Set", |
2874 | | PropSet181_IDS |
2875 | | }, |
2876 | | { {0xF334115E, 0xDA1B, 0x4509, {0x9B, 0x3D, 0x11, 0x95, 0x04, 0xDC, 0x7A, 0xBB}}, |
2877 | | "???","Unspecified Property Set", |
2878 | | PropSet182_IDS |
2879 | | }, |
2880 | | { {0xBF53D1C3, 0x49E0, 0x4F7F, {0x85, 0x67, 0x5A, 0x82, 0x1D, 0x8A, 0xC5, 0x42}}, |
2881 | | "???","Unspecified Property Set", |
2882 | | PropSet183_IDS |
2883 | | }, |
2884 | | { {0xC75FAA05, 0x96FD, 0x49E7, {0x9C, 0xB4, 0x9F, 0x60, 0x10, 0x82, 0xD5, 0x53}}, |
2885 | | "???","Unspecified Property Set", |
2886 | | PropSet184_IDS |
2887 | | }, |
2888 | | { {0x2E4B640D, 0x5019, 0x46D8, {0x88, 0x81, 0x55, 0x41, 0x4C, 0xC5, 0xCA, 0xA0}}, |
2889 | | "???","Unspecified Property Set", |
2890 | | PropSet185_IDS |
2891 | | }, |
2892 | | { {0x6B8B68F6, 0x200B, 0x47EA, {0x8D, 0x25, 0xD8, 0x05, 0x0F, 0x57, 0x33, 0x9F}}, |
2893 | | "???","Unspecified Property Set", |
2894 | | PropSet186_IDS |
2895 | | }, |
2896 | | { {0x2D152B40, 0xCA39, 0x40DB, {0xB2, 0xCC, 0x57, 0x37, 0x25, 0xB2, 0xFE, 0xC5}}, |
2897 | | "???","Unspecified Property Set", |
2898 | | PropSet187_IDS |
2899 | | }, |
2900 | | { {0x1E005EE6, 0xBF27, 0x428B, {0xB0, 0x1C, 0x79, 0x67, 0x6A, 0xCD, 0x28, 0x70}}, |
2901 | | "???","Unspecified Property Set", |
2902 | | PropSet188_IDS |
2903 | | }, |
2904 | | { {0xD6304E01, 0xF8F5, 0x4F45, {0x8B, 0x15, 0xD0, 0x24, 0xA6, 0x29, 0x67, 0x89}}, |
2905 | | "???","Unspecified Property Set", |
2906 | | PropSet189_IDS |
2907 | | }, |
2908 | | { {0x402B5934, 0xEC5A, 0x48C3, {0x93, 0xE6, 0x85, 0xE8, 0x6A, 0x2D, 0x93, 0x4E}}, |
2909 | | "???","Unspecified Property Set", |
2910 | | PropSet190_IDS |
2911 | | }, |
2912 | | { {0x9AEBAE7A, 0x9644, 0x487D, {0xA9, 0x2C, 0x65, 0x75, 0x85, 0xED, 0x75, 0x1A}}, |
2913 | | "???","Unspecified Property Set", |
2914 | | PropSet191_IDS |
2915 | | }, |
2916 | | { {0x63C25B20, 0x96BE, 0x488F, {0x87, 0x88, 0xC0, 0x9C, 0x40, 0x7A, 0xD8, 0x12}}, |
2917 | | "???","Unspecified Property Set", |
2918 | | PropSet192_IDS |
2919 | | }, |
2920 | | { {0x48FD6EC8, 0x8A12, 0x4CDF, {0xA0, 0x3E, 0x4E, 0xC5, 0xA5, 0x11, 0xED, 0xDE}}, |
2921 | | "???","Unspecified Property Set", |
2922 | | PropSet193_IDS |
2923 | | }, |
2924 | | { {0x64440491, 0x4C8B, 0x11D1, {0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03}}, |
2925 | | "???","Unspecified Property Set", |
2926 | | PropSet194_IDS |
2927 | | }, |
2928 | | { {0xC0AC206A, 0x827E, 0x4650, {0x95, 0xAE, 0x77, 0xE2, 0xBB, 0x74, 0xFC, 0xC9}}, |
2929 | | "???","Unspecified Property Set", |
2930 | | PropSet195_IDS |
2931 | | } |
2932 | | }; |
2933 | | |
2934 | | static const value_string version_vals[] = { |
2935 | | {0x00000102, "Windows Vista or 2008"}, |
2936 | | {0x00000109, "Windows XP or 2003 with Windows Search 4.0"}, |
2937 | | {0x00000700, "Windows 7 or 2008 R2"}, |
2938 | | {0x00010102, "Windows Vista or 2008 (64 bit)"}, |
2939 | | {0x00010109, "Windows XP or 2003 with Windows Search 4.0 (64 bit)"}, |
2940 | | {0x00010700, "Windows 7 or 2008 R2 (64 bit)"}, |
2941 | | {0, NULL} |
2942 | | }; |
2943 | | |
2944 | | static const struct GuidPropertySet *GuidPropertySet_find_guid(const e_guid_t *guid) |
2945 | 0 | { |
2946 | 0 | unsigned i; |
2947 | 0 | for (i=0; i<array_length(GuidPropertySet); i++) { |
2948 | 0 | if (guid_cmp(&GuidPropertySet[i].guid, guid) == 0) { |
2949 | 0 | return &GuidPropertySet[i]; |
2950 | 0 | } |
2951 | 0 | } |
2952 | 0 | return NULL; |
2953 | 0 | } |
2954 | | |
2955 | | static char* get_name_from_fullpropspec(struct CFullPropSpec *v, wmem_allocator_t* allocator) |
2956 | 0 | { |
2957 | 0 | const struct GuidPropertySet *pset = GuidPropertySet_find_guid(&v->guid); |
2958 | 0 | const char *id_str, *guid_str; |
2959 | 0 | id_str = pset ? try_val_to_str(v->u.propid, pset->id_map) : NULL; |
2960 | |
|
2961 | 0 | if (id_str) |
2962 | 0 | return wmem_strdup(allocator, id_str); |
2963 | | |
2964 | 0 | guid_str = guids_get_guid_name(&v->guid, allocator); |
2965 | 0 | if (guid_str) { |
2966 | 0 | guid_str = wmem_strdup_printf(allocator, "\"%s\"", guid_str); |
2967 | 0 | } else { |
2968 | 0 | guid_str = wmem_strdup_printf(allocator, "{%s}", guid_to_str(allocator, &v->guid)); |
2969 | 0 | } |
2970 | 0 | if (v->kind == PRSPEC_LPWSTR) |
2971 | 0 | return wmem_strdup_printf(allocator, "%s \"%s\"", guid_str, v->u.name); |
2972 | 0 | if (v->kind == PRSPEC_PROPID) |
2973 | 0 | return wmem_strdup_printf(allocator, "%s 0x%08x", guid_str, v->u.propid); |
2974 | | |
2975 | 0 | return wmem_strdup_printf(allocator, "%s <INVALID>", guid_str); |
2976 | 0 | } |
2977 | | |
2978 | | /******************************************************************************/ |
2979 | | static int parse_uin32_array(tvbuff_t *tvb, int offset, proto_tree *tree, uint32_t count, const char *txt) |
2980 | 0 | { |
2981 | 0 | uint32_t v, i; |
2982 | 0 | proto_item *item; |
2983 | |
|
2984 | 0 | proto_tree_add_subtree(tree, tvb, offset, count * 4, ett_mswsp_uin32_array, &item, txt); |
2985 | 0 | proto_item_append_text(item, " count %u [", count); |
2986 | 0 | for (i=0; i<count; i++) { |
2987 | 0 | v = tvb_get_letohl(tvb, offset); |
2988 | 0 | offset += 4; |
2989 | 0 | if (i>0) { |
2990 | 0 | proto_item_append_text(item, ",%u", v); |
2991 | 0 | } else { |
2992 | 0 | proto_item_append_text(item, "%u", v); |
2993 | 0 | } |
2994 | 0 | } |
2995 | 0 | proto_item_append_text(item, "]"); |
2996 | 0 | return offset; |
2997 | 0 | } |
2998 | | |
2999 | | static int parse_padding(tvbuff_t *tvb, int offset, int alignment, proto_tree *pad_tree, const char * txt) |
3000 | 0 | { |
3001 | 0 | if (offset % alignment) { |
3002 | 0 | const int padding = alignment - (offset % alignment); |
3003 | 0 | proto_item *ti; |
3004 | 0 | proto_tree_add_subtree(pad_tree, tvb, offset, padding, ett_mswsp_msg_padding, &ti, txt); |
3005 | |
|
3006 | 0 | proto_item_append_text(ti, " (%d)", padding); |
3007 | 0 | offset += padding; |
3008 | 0 | } |
3009 | 0 | return offset; |
3010 | 0 | } |
3011 | | |
3012 | | static int parse_guid(tvbuff_t *tvb, wmem_allocator_t* allocator, int offset, proto_tree *tree, e_guid_t *guid, const char *text) |
3013 | 0 | { |
3014 | 0 | const char *guid_str, *name, *bytes; |
3015 | 0 | proto_tree *tr; |
3016 | |
|
3017 | 0 | tvb_get_letohguid(tvb, offset, guid); |
3018 | 0 | guid_str = guid_to_str(allocator, guid); |
3019 | 0 | name = guids_get_guid_name(guid, allocator); |
3020 | |
|
3021 | 0 | tr = proto_tree_add_subtree_format(tree, tvb, offset, 16, ett_GUID, NULL, "%s: %s {%s}", text, name ? name : "", guid_str); |
3022 | | |
3023 | |
|
3024 | 0 | proto_tree_add_item(tr, hf_mswsp_guid_time_low, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3025 | 0 | offset += 4; |
3026 | 0 | proto_tree_add_item(tr, hf_mswsp_guid_time_mid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3027 | 0 | offset += 2; |
3028 | 0 | proto_tree_add_item(tr, hf_mswsp_guid_time_high, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3029 | 0 | offset += 2; |
3030 | 0 | proto_tree_add_item(tr, hf_mswsp_guid_time_clock_hi, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3031 | 0 | offset += 1; |
3032 | 0 | proto_tree_add_item(tr, hf_mswsp_guid_time_clock_low, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3033 | 0 | offset += 1; |
3034 | 0 | bytes = bytes_to_str_punct(allocator, &guid->data4[2], 6, ':'); |
3035 | 0 | proto_tree_add_string(tr, hf_mswsp_guid_node, tvb, offset, 6, bytes); |
3036 | |
|
3037 | 0 | offset += 6; |
3038 | |
|
3039 | 0 | return offset; |
3040 | 0 | } |
3041 | | |
3042 | | /* Language Code ID - MS-LCID section 2.2 "LCID Structure": |
3043 | | * |
3044 | | * https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/63d3d639-7fd2-4afb-abbe-0d5b5551eef8 |
3045 | | */ |
3046 | | static int parse_lcid(tvbuff_t *tvb, int offset, proto_tree *parent_tree, const char *text) |
3047 | 0 | { |
3048 | 0 | proto_item *item; |
3049 | 0 | proto_tree *tree; |
3050 | 0 | uint32_t lcid; |
3051 | |
|
3052 | 0 | lcid = tvb_get_letohl(tvb, offset); |
3053 | 0 | item = proto_tree_add_uint_format(parent_tree, hf_mswsp_lcid, tvb, offset, 4, lcid, "%s: 0x%x", text, lcid); |
3054 | 0 | tree = proto_item_add_subtree(item, ett_LCID); |
3055 | |
|
3056 | 0 | proto_tree_add_uint(tree, hf_mswsp_lcid_langid, tvb, offset + 2, 2, lcid); |
3057 | 0 | proto_tree_add_uint(tree, hf_mswsp_lcid_sortid, tvb, offset + 1, 1, (lcid >> 16) & 0xF); |
3058 | 0 | offset += 4; |
3059 | 0 | return offset; |
3060 | 0 | } |
3061 | | |
3062 | | /*****************************************************************************************/ |
3063 | | // Forward declarations because of circular dependencies |
3064 | | |
3065 | | /* 2.2.1.1 CBaseStorageVariant */ |
3066 | | static int parse_CBaseStorageVariant(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CBaseStorageVariant *value, const char *text); |
3067 | | |
3068 | | /* 2.2.1.2 CFullPropSpec */ |
3069 | | static int parse_CFullPropSpec(tvbuff_t *tvb, packet_info* pinfo, int offset, proto_tree *tree, proto_tree *pad_tree, struct CFullPropSpec *v, const char *txt); |
3070 | | |
3071 | | /* 2.2.1.6 CNodeRestriction */ |
3072 | | static int parse_CNodeRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree, proto_tree *pad_tree, struct CNodeRestriction *v, const char* txt); |
3073 | | |
3074 | | /* 2.2.1.17 CRestriction */ |
3075 | | static int parse_CRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CRestriction *v, const char *txt); |
3076 | | |
3077 | | /* |
3078 | | TODO: |
3079 | | 2.2.1.4 CInternalPropertyRestriction |
3080 | | 2.2.1.9 CScopeRestriction |
3081 | | 2.2.1.11 CVectorRestriction |
3082 | | 2.2.1.13 CRelDocRestriction |
3083 | | 2.2.1.14 CProbRestriction |
3084 | | 2.2.1.15 CFeedbackRestriction |
3085 | | 2.2.1.19 CCategorizationSet |
3086 | | 2.2.1.45 SERIALIZEDPROPERTYVALUE |
3087 | | 2.2.1.46 CCompletionCategSp |
3088 | | */ |
3089 | | |
3090 | | static int parse_CSort(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree _U_, const char *txt) |
3091 | 0 | { |
3092 | 0 | proto_item *item; |
3093 | 0 | proto_tree *tree; |
3094 | |
|
3095 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CSort, &item, txt); |
3096 | |
|
3097 | 0 | proto_tree_add_item(tree, hf_mswsp_cscort_column, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3098 | 0 | offset += 4; |
3099 | |
|
3100 | 0 | proto_tree_add_item(tree, hf_mswsp_cscort_order, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3101 | 0 | offset += 4; |
3102 | |
|
3103 | 0 | proto_tree_add_item(tree, hf_mswsp_cscort_individual, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3104 | 0 | offset += 4; |
3105 | |
|
3106 | 0 | offset = parse_lcid(tvb, offset, tree, "lcid"); |
3107 | |
|
3108 | 0 | proto_item_set_end(item, tvb, offset); |
3109 | 0 | return offset; |
3110 | 0 | } |
3111 | | |
3112 | | static int parse_CSortSet(tvbuff_t *tvb, packet_info* pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
3113 | 0 | { |
3114 | 0 | uint32_t count, i; |
3115 | |
|
3116 | 0 | proto_item *item; |
3117 | 0 | proto_tree *tree; |
3118 | |
|
3119 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CSortSet, &item, txt); |
3120 | |
|
3121 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_cscortset_count, tvb, offset, 4, ENC_LITTLE_ENDIAN, &count); |
3122 | 0 | offset += 4; |
3123 | |
|
3124 | 0 | for (i=0; i<count; i++) { |
3125 | 0 | offset = parse_padding(tvb, offset, 4, tree, wmem_strdup_printf(pinfo->pool, "padding_sortArray[%u]", i)); |
3126 | 0 | offset = parse_CSort(tvb, offset, tree, pad_tree, wmem_strdup_printf(pinfo->pool, "sortArray[%u]", i)); |
3127 | 0 | } |
3128 | |
|
3129 | 0 | proto_item_set_end(item, tvb, offset); |
3130 | 0 | return offset; |
3131 | 0 | } |
3132 | | |
3133 | | static int parse_CTableColumn(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CTableColumn *col, const char *txt) |
3134 | 0 | { |
3135 | | |
3136 | |
|
3137 | 0 | proto_item *item, *ti_type; |
3138 | 0 | proto_tree *tree; |
3139 | 0 | struct vtype_data *type; |
3140 | 0 | enum vType vtype_val = VT_EMPTY; |
3141 | 0 | enum vType vtype_valhi = VT_EMPTY; |
3142 | 0 | struct CFullPropSpec v; |
3143 | 0 | uint8_t used; |
3144 | |
|
3145 | 0 | const char *modifier = ""; |
3146 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CTableColumn, &item, txt); |
3147 | |
|
3148 | 0 | offset = parse_CFullPropSpec(tvb, pinfo, offset, tree, pad_tree, &v, "PropSpec"); |
3149 | 0 | col->name = get_name_from_fullpropspec(&v, pinfo->pool); |
3150 | 0 | col->vtype = tvb_get_letohl(tvb, offset); |
3151 | 0 | vtype_val = (enum vType)col->vtype; |
3152 | 0 | vtype_valhi = (enum vType)(col->vtype & 0xFF00); |
3153 | 0 | if (vtype_valhi) { |
3154 | 0 | if (vtype_valhi == VT_VECTOR) { |
3155 | 0 | modifier = "|VT_VECTOR"; |
3156 | 0 | } else if (vtype_valhi == VT_ARRAY) { |
3157 | 0 | modifier = "|VT_ARRAY"; |
3158 | 0 | } else { |
3159 | 0 | modifier = "|(Unknown, possibly error)"; |
3160 | 0 | } |
3161 | 0 | } |
3162 | 0 | type = vType_get_type(vtype_val); |
3163 | 0 | if (type == NULL) { |
3164 | | /* |
3165 | | * Not a valid type. |
3166 | | */ |
3167 | 0 | ti_type = proto_tree_add_string(tree, hf_mswsp_ctablecolumn_vtype, tvb, offset, 4, "Unknown CTableColumn type"); |
3168 | 0 | expert_add_info(pinfo, ti_type, &ei_mswsp_invalid_variant_type); |
3169 | 0 | } else |
3170 | 0 | proto_tree_add_string_format_value(tree, hf_mswsp_ctablecolumn_vtype, tvb, offset, 4, type->str, "%s%s", type->str, modifier); |
3171 | 0 | offset += 4; |
3172 | |
|
3173 | 0 | used = tvb_get_uint8(tvb, offset); |
3174 | 0 | col->aggregateused = used; |
3175 | 0 | proto_tree_add_uint(tree, hf_mswsp_ctablecolumn_aggused, tvb, offset, 1, used); |
3176 | 0 | offset += 1; |
3177 | |
|
3178 | 0 | if (used) { |
3179 | 0 | col->aggregatetype = tvb_get_uint8(tvb, offset); |
3180 | 0 | proto_tree_add_string(tree, hf_mswsp_ctablecolumn_aggtype, tvb, offset, 1, val_to_str(pinfo->pool, col->aggregatetype, DBAGGTTYPE, "(Unknown: 0x%x)")); |
3181 | 0 | offset += 1; |
3182 | 0 | } |
3183 | 0 | col->valueused = tvb_get_uint8(tvb, offset); |
3184 | 0 | used = col->valueused; |
3185 | 0 | proto_tree_add_uint(tree, hf_mswsp_ctablecolumn_valused, tvb, offset, 1, used); |
3186 | 0 | offset += 1; |
3187 | |
|
3188 | 0 | if (used) { |
3189 | 0 | offset = parse_padding(tvb, offset, 2, pad_tree, "padding_Value"); |
3190 | |
|
3191 | 0 | col->valueoffset = tvb_get_letohs(tvb, offset); |
3192 | 0 | proto_tree_add_uint(tree, hf_mswsp_ctablecolumn_valoffset, tvb, offset, 2, col->valueoffset); |
3193 | 0 | offset += 2; |
3194 | |
|
3195 | 0 | col->valuesize = tvb_get_letohs(tvb, offset); |
3196 | 0 | proto_tree_add_uint(tree, hf_mswsp_ctablecolumn_valsize, tvb, offset, 2, col->valuesize); |
3197 | 0 | offset += 2; |
3198 | 0 | } |
3199 | |
|
3200 | 0 | used = tvb_get_uint8(tvb, offset); |
3201 | 0 | col->statusused = used; |
3202 | 0 | proto_tree_add_uint(tree, hf_mswsp_ctablecolumn_statused, tvb, offset, 1, used); |
3203 | 0 | offset += 1; |
3204 | |
|
3205 | 0 | if (used) { |
3206 | 0 | offset = parse_padding(tvb, offset, 2, pad_tree, "padding_Status"); |
3207 | |
|
3208 | 0 | col->statusoffset = tvb_get_letohs(tvb, offset); |
3209 | 0 | proto_tree_add_uint(tree, hf_mswsp_ctablecolumn_statoffset, tvb, offset, 2, col->statusoffset); |
3210 | 0 | offset += 2; |
3211 | 0 | } |
3212 | |
|
3213 | 0 | used = tvb_get_uint8(tvb, offset); |
3214 | 0 | proto_tree_add_uint(tree, hf_mswsp_ctablecolumn_lenused, tvb, offset, 1, used); |
3215 | 0 | col->lengthused = used; |
3216 | 0 | offset += 1; |
3217 | |
|
3218 | 0 | if (used) { |
3219 | 0 | offset = parse_padding(tvb, offset, 2, pad_tree, "padding_Length"); |
3220 | |
|
3221 | 0 | col->lengthoffset = tvb_get_letohs(tvb, offset); |
3222 | 0 | proto_tree_add_uint(tree, hf_mswsp_ctablecolumn_lenoffset, tvb, offset, 2, col->lengthoffset); |
3223 | 0 | offset += 2; |
3224 | 0 | } |
3225 | |
|
3226 | 0 | proto_item_set_end(item, tvb, offset); |
3227 | 0 | return offset; |
3228 | 0 | } |
3229 | | |
3230 | | static const value_string KIND_vals[] = { |
3231 | | {PRSPEC_LPWSTR, "PRSPEC_LPWSTR"}, |
3232 | | {PRSPEC_PROPID, "PRSPEC_PROPID"}, |
3233 | | {0, NULL} |
3234 | | }; |
3235 | | |
3236 | | static int parse_CFullPropSpec(tvbuff_t *tvb, packet_info* pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CFullPropSpec *v, const char *txt) |
3237 | 0 | { |
3238 | 0 | const struct GuidPropertySet *pset; |
3239 | 0 | const char *id_str, *guid_str; |
3240 | |
|
3241 | 0 | proto_item *item; |
3242 | 0 | proto_tree *tree; |
3243 | |
|
3244 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CFullPropSpec, &item, txt); |
3245 | |
|
3246 | 0 | offset = parse_padding(tvb, offset, 8, pad_tree, "paddingPropSet"); |
3247 | |
|
3248 | 0 | offset = parse_guid(tvb, pinfo->pool, offset, tree, &v->guid, "GUID"); |
3249 | 0 | pset = GuidPropertySet_find_guid(&v->guid); |
3250 | |
|
3251 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_cfullpropspec_kind, tvb, offset, 4, ENC_LITTLE_ENDIAN, (uint32_t*)&v->kind); |
3252 | 0 | offset += 4; |
3253 | |
|
3254 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_cfullpropspec_propid, tvb, offset, 4, ENC_LITTLE_ENDIAN, &v->u.propid); |
3255 | 0 | offset += 4; |
3256 | |
|
3257 | 0 | if (v->kind == PRSPEC_LPWSTR) { |
3258 | 0 | int len = 2*v->u.propid; |
3259 | 0 | proto_tree_add_item_ret_string(tree, hf_mswsp_cfullpropspec_propname, tvb, offset, len, ENC_LITTLE_ENDIAN | ENC_UCS_2, pinfo->pool, &v->u.name); |
3260 | 0 | offset += len; |
3261 | 0 | } |
3262 | |
|
3263 | 0 | id_str = pset ? try_val_to_str(v->u.propid, pset->id_map) : NULL; |
3264 | |
|
3265 | 0 | if (id_str) { |
3266 | 0 | proto_item_append_text(item, ": %s", id_str); |
3267 | 0 | } else { |
3268 | 0 | guid_str = guids_get_guid_name(&v->guid, pinfo->pool); |
3269 | 0 | if (guid_str) { |
3270 | 0 | proto_item_append_text(item, ": \"%s\"", guid_str); |
3271 | 0 | } else { |
3272 | 0 | guid_str = guid_to_str(pinfo->pool, &v->guid); |
3273 | 0 | proto_item_append_text(item, ": {%s}", guid_str); |
3274 | 0 | } |
3275 | |
|
3276 | 0 | if (v->kind == PRSPEC_LPWSTR) { |
3277 | 0 | proto_item_append_text(item, " \"%s\"", v->u.name); |
3278 | 0 | } else if (v->kind == PRSPEC_PROPID) { |
3279 | 0 | proto_item_append_text(item, " 0x%08x", v->u.propid); |
3280 | 0 | } else { |
3281 | 0 | proto_item_append_text(item, " <INVALID>"); |
3282 | 0 | } |
3283 | 0 | } |
3284 | |
|
3285 | 0 | proto_item_set_end(item, tvb, offset); |
3286 | 0 | return offset; |
3287 | 0 | } |
3288 | | |
3289 | | |
3290 | | |
3291 | | static const value_string PR_VALS[] = { |
3292 | | {PRLT, "PRLT"}, |
3293 | | {PRLE, "PRLE"}, |
3294 | | {PRGT, "PRGT"}, |
3295 | | {PRGE, "PRGE"}, |
3296 | | {PREQ, "PREQ"}, |
3297 | | {PRNE, "PRNE"}, |
3298 | | {PRRE, "PRRE"}, |
3299 | | {PRAllBits, "PRAllBits"}, |
3300 | | {PRSomeBits, "PRSomeBits"}, |
3301 | | {PRAll, "PRAll"}, |
3302 | | {PRAny, "PRAny"}, |
3303 | | {0, NULL} |
3304 | | }; |
3305 | | |
3306 | | static int parse_relop(tvbuff_t *tvb, packet_info* pinfo, int offset, proto_tree *tree, uint32_t *relop, const char **str) |
3307 | 0 | { |
3308 | 0 | const char *str1 = NULL, *str2 = NULL; |
3309 | 0 | uint32_t tmp = tvb_get_letohl(tvb, offset); |
3310 | 0 | uint32_t modifier = (tmp & 0xF00); |
3311 | 0 | DISSECTOR_ASSERT((tmp & 0xf) < PRSomeBits +1); |
3312 | |
|
3313 | 0 | switch(tmp & 0xf) { |
3314 | 0 | case PRLT: |
3315 | 0 | *relop = PRLT; |
3316 | 0 | break; |
3317 | 0 | case PRLE: |
3318 | 0 | *relop = PRLE; |
3319 | 0 | break; |
3320 | 0 | case PRGT: |
3321 | 0 | *relop = PRGT; |
3322 | 0 | break; |
3323 | 0 | case PRGE: |
3324 | 0 | *relop = PRGE; |
3325 | 0 | break; |
3326 | 0 | case PREQ: |
3327 | 0 | *relop = PREQ; |
3328 | 0 | break; |
3329 | 0 | case PRNE: |
3330 | 0 | *relop = PRNE; |
3331 | 0 | break; |
3332 | 0 | case PRRE: |
3333 | 0 | *relop = PRRE; |
3334 | 0 | break; |
3335 | 0 | case PRAllBits: |
3336 | 0 | *relop = PRAllBits; |
3337 | 0 | break; |
3338 | 0 | case PRSomeBits: |
3339 | 0 | *relop = PRSomeBits; |
3340 | 0 | break; |
3341 | 0 | default: |
3342 | 0 | break; |
3343 | 0 | } |
3344 | | |
3345 | 0 | str2 = val_to_str(pinfo->pool, *relop, PR_VALS, "0x%04x"); |
3346 | |
|
3347 | 0 | if (modifier) { |
3348 | 0 | switch (modifier) { |
3349 | 0 | case PRAll: |
3350 | 0 | *relop = *relop | PRAll; |
3351 | 0 | break; |
3352 | 0 | case PRAny: |
3353 | 0 | *relop |= PRAny; |
3354 | 0 | break; |
3355 | 0 | default: |
3356 | 0 | DISSECTOR_ASSERT(false); |
3357 | 0 | break; |
3358 | 0 | } |
3359 | 0 | str1 = try_val_to_str((modifier), PR_VALS); |
3360 | 0 | if (str1) { |
3361 | 0 | str1 = wmem_strdup_printf(pinfo->pool, "%s | ", str1); |
3362 | 0 | str2 = wmem_strdup_printf(pinfo->pool, "%s%s", str1, str2); |
3363 | 0 | } |
3364 | 0 | } |
3365 | 0 | proto_tree_add_string_format_value(tree, hf_mswsp_cproprestrict_relop, tvb, offset, 4, str2, "%s (0x%04x)", str2[0]=='\0' ? "" : str2, *relop); |
3366 | |
|
3367 | 0 | if (str) { |
3368 | 0 | *str = str2; |
3369 | 0 | } |
3370 | 0 | return offset + 4; |
3371 | 0 | } |
3372 | | static int parse_CPropertyRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CPropertyRestriction *v, const char *txt) |
3373 | 0 | { |
3374 | 0 | proto_tree *tree; |
3375 | 0 | proto_item *item; |
3376 | 0 | const char *str = NULL; |
3377 | |
|
3378 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CPropertyRestriction, &item, txt); |
3379 | |
|
3380 | 0 | offset = parse_relop(tvb, pinfo, offset, tree, &v->relop, &str); |
3381 | 0 | proto_item_append_text(item, " Op: %s", str); |
3382 | |
|
3383 | 0 | offset = parse_CFullPropSpec(tvb, pinfo, offset, tree, pad_tree, &v->property, "Property"); |
3384 | |
|
3385 | 0 | offset = parse_CBaseStorageVariant(tvb, pinfo, offset, tree, pad_tree, &v->prval, "prval"); |
3386 | |
|
3387 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, "padding_lcid"); |
3388 | |
|
3389 | 0 | v->lcid = tvb_get_letohl(tvb, offset); |
3390 | 0 | offset = parse_lcid(tvb, offset, tree, "lcid"); |
3391 | |
|
3392 | 0 | proto_item_set_end(item, tvb, offset); |
3393 | |
|
3394 | 0 | return offset; |
3395 | 0 | } |
3396 | | |
3397 | | // NOLINTNEXTLINE(misc-no-recursion) |
3398 | | static int parse_CCoercionRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CCoercionRestriction *v, const char *txt) |
3399 | 0 | { |
3400 | 0 | proto_tree *tree; |
3401 | 0 | proto_item *item; |
3402 | |
|
3403 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CCoercionRestriction, &item, txt); |
3404 | |
|
3405 | 0 | v->value = tvb_get_letohieee_float(tvb, offset); |
3406 | 0 | proto_tree_add_float(tree, hf_mswsp_ccoercerestrict_value, tvb, offset, 4, v->value); |
3407 | |
|
3408 | 0 | offset += 4; |
3409 | |
|
3410 | 0 | offset = parse_CRestriction(tvb, pinfo, offset, tree, pad_tree, &v->child, "child"); |
3411 | |
|
3412 | 0 | proto_item_set_end(item, tvb, offset); |
3413 | 0 | return offset; |
3414 | 0 | } |
3415 | | |
3416 | | static int parse_CContentRestriction(tvbuff_t *tvb, packet_info* pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CContentRestriction *v, const char *txt) |
3417 | 0 | { |
3418 | 0 | proto_tree *tree; |
3419 | 0 | proto_item *item; |
3420 | 0 | uint32_t cc; |
3421 | |
|
3422 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CContentRestriction, &item, txt); |
3423 | |
|
3424 | 0 | offset = parse_CFullPropSpec(tvb, pinfo, offset, tree, pad_tree, &v->property, "Property"); |
3425 | |
|
3426 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, "Padding1"); |
3427 | |
|
3428 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_ccontentrestrict_cc, tvb, offset, 4, ENC_LITTLE_ENDIAN, &cc); |
3429 | 0 | offset += 4; |
3430 | |
|
3431 | 0 | proto_tree_add_item_ret_string(tree, hf_mswsp_ccontentrestrict_phrase, tvb, offset, 2*cc, ENC_LITTLE_ENDIAN | ENC_UCS_2, pinfo->pool, &v->phrase); |
3432 | 0 | offset += 2*cc; |
3433 | |
|
3434 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, "Padding2"); |
3435 | |
|
3436 | 0 | v->lcid = tvb_get_letohl(tvb, offset); |
3437 | 0 | offset = parse_lcid(tvb, offset, tree, "lcid"); |
3438 | |
|
3439 | 0 | v->method = tvb_get_letohl(tvb, offset); |
3440 | 0 | proto_tree_add_uint(tree, hf_mswsp_ccontentrestrict_method, tvb, offset, 4, v->method); |
3441 | 0 | offset += 4; |
3442 | |
|
3443 | 0 | proto_item_set_end(item, tvb, offset); |
3444 | 0 | return offset; |
3445 | 0 | } |
3446 | | |
3447 | | static int parse_CNatLanguageRestriction(tvbuff_t *tvb, packet_info* pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CNatLanguageRestriction *v, const char *txt) |
3448 | 0 | { |
3449 | 0 | proto_tree *tree; |
3450 | 0 | proto_item *item; |
3451 | 0 | uint32_t cc; |
3452 | |
|
3453 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CNatLanguageRestriction, &item, txt); |
3454 | |
|
3455 | 0 | offset = parse_CFullPropSpec(tvb, pinfo, offset, tree, pad_tree, &v->property, "Property"); |
3456 | |
|
3457 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, "padding_cc"); |
3458 | |
|
3459 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_natlangrestrict_cc, tvb, offset, 4, ENC_LITTLE_ENDIAN, &cc); |
3460 | 0 | offset += 4; |
3461 | |
|
3462 | 0 | proto_tree_add_item_ret_string(tree, hf_mswsp_natlangrestrict_phrase, tvb, offset, 2*cc, ENC_LITTLE_ENDIAN | ENC_UCS_2, pinfo->pool, &v->phrase); |
3463 | 0 | offset += 2*cc; |
3464 | |
|
3465 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, "padding_lcid"); |
3466 | |
|
3467 | 0 | v->lcid = tvb_get_letohl(tvb, offset); |
3468 | 0 | offset = parse_lcid(tvb, offset, tree, "lcid"); |
3469 | |
|
3470 | 0 | proto_item_set_end(item, tvb, offset); |
3471 | 0 | return offset; |
3472 | 0 | } |
3473 | | |
3474 | | |
3475 | | static int parse_CReuseWhere(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree _U_, struct CReuseWhere *v, const char *txt) |
3476 | 0 | { |
3477 | 0 | proto_item *item; |
3478 | |
|
3479 | 0 | proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_mswsp_msg_creusewhere, &item, txt); |
3480 | 0 | v->whereId = tvb_get_letohl(tvb, offset); |
3481 | 0 | offset += 4; |
3482 | |
|
3483 | 0 | proto_item_append_text(item, " Id: %u", v->whereId); |
3484 | |
|
3485 | 0 | proto_item_set_end(item, tvb, offset); |
3486 | 0 | return offset; |
3487 | 0 | } |
3488 | | |
3489 | | static const value_string RT_VALS[] = { |
3490 | | {RTNone, "RTNone"}, |
3491 | | {RTAnd, "RTAnd"}, |
3492 | | {RTOr, "RTOr"}, |
3493 | | {RTNot, "RTNot"}, |
3494 | | {RTContent, "RTContent"}, |
3495 | | {RTProperty, "RTProperty"}, |
3496 | | {RTProximity, "RTProximity"}, |
3497 | | {RTVector, ""}, |
3498 | | {RTNatLanguage, "RTNatLanguage"}, |
3499 | | {RTScope, "RTScope"}, |
3500 | | {RTCoerce_Add, "RTCoerce_Add"}, |
3501 | | {RTCoerce_Multiply, "RTCoerce_Multiply"}, |
3502 | | {RTCoerce_Absolute, "RTCoerce_Absolute"}, |
3503 | | {RTProb, "RTProb"}, |
3504 | | {RTFeedback, "RTFeedback"}, |
3505 | | {RTReldoc, "RTReldoc"}, |
3506 | | {RTReuseWhere, "RTReuseWhere"}, |
3507 | | {RTInternalProp, "RTInternalProp"}, |
3508 | | {RTPhrase, "RTInternalProp"}, |
3509 | | {0, NULL} |
3510 | | }; |
3511 | | |
3512 | | static int parse_rType(tvbuff_t *tvb, packet_info* pinfo, int offset, proto_tree *tree, enum rType *rtype, const char **str) |
3513 | 0 | { |
3514 | 0 | const char *txt = NULL; |
3515 | 0 | uint32_t type = tvb_get_letohl(tvb, offset); |
3516 | 0 | switch(type) { |
3517 | 0 | case RTNone: |
3518 | 0 | *rtype = RTNone; |
3519 | 0 | break; |
3520 | 0 | case RTAnd: |
3521 | 0 | *rtype = RTAnd; |
3522 | 0 | break; |
3523 | 0 | case RTOr: |
3524 | 0 | *rtype = RTOr; |
3525 | 0 | break; |
3526 | 0 | case RTNot: |
3527 | 0 | *rtype = RTNot; |
3528 | 0 | break; |
3529 | 0 | case RTContent: |
3530 | 0 | *rtype = RTContent; |
3531 | 0 | break; |
3532 | 0 | case RTProperty: |
3533 | 0 | *rtype = RTProperty; |
3534 | 0 | break; |
3535 | 0 | case RTProximity: |
3536 | 0 | *rtype = RTProximity; |
3537 | 0 | break; |
3538 | 0 | case RTVector: |
3539 | 0 | *rtype = RTVector; |
3540 | 0 | break; |
3541 | 0 | case RTNatLanguage: |
3542 | 0 | *rtype = RTNatLanguage; |
3543 | 0 | break; |
3544 | 0 | case RTScope: |
3545 | 0 | *rtype = RTScope; |
3546 | 0 | break; |
3547 | 0 | case RTCoerce_Add: |
3548 | 0 | *rtype = RTCoerce_Add; |
3549 | 0 | break; |
3550 | 0 | case RTCoerce_Multiply: |
3551 | 0 | *rtype = RTCoerce_Multiply; |
3552 | 0 | break; |
3553 | 0 | case RTCoerce_Absolute: |
3554 | 0 | *rtype = RTCoerce_Absolute; |
3555 | 0 | break; |
3556 | 0 | case RTProb: |
3557 | 0 | *rtype = RTProb; |
3558 | 0 | break; |
3559 | 0 | case RTFeedback: |
3560 | 0 | *rtype = RTFeedback; |
3561 | 0 | break; |
3562 | 0 | case RTReldoc: |
3563 | 0 | *rtype = RTReldoc; |
3564 | 0 | break; |
3565 | 0 | case RTReuseWhere: |
3566 | 0 | *rtype = RTReuseWhere; |
3567 | 0 | break; |
3568 | 0 | case RTInternalProp: |
3569 | 0 | *rtype = RTInternalProp; |
3570 | 0 | break; |
3571 | 0 | default: |
3572 | 0 | DISSECTOR_ASSERT(false); |
3573 | 0 | break; |
3574 | 0 | } |
3575 | 0 | txt = val_to_str(pinfo->pool, *rtype, RT_VALS, "0x%.8x"); |
3576 | 0 | proto_tree_add_string_format_value(tree, hf_mswsp_crestrict_ultype, tvb, offset, 4, txt, "%s (0x%.8x)", txt[0] == '0' ? "" : txt, *rtype); |
3577 | 0 | if (str) { |
3578 | 0 | *str = txt; |
3579 | 0 | } |
3580 | 0 | return offset + 4; |
3581 | 0 | } |
3582 | | |
3583 | | // NOLINTNEXTLINE(misc-no-recursion) |
3584 | | static int parse_CRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CRestriction *v, const char *txt) |
3585 | 0 | { |
3586 | 0 | proto_tree *tree; |
3587 | 0 | proto_item *item; |
3588 | 0 | const char *str; |
3589 | |
|
3590 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CRestriction, &item, txt); |
3591 | |
|
3592 | 0 | offset = parse_rType(tvb, pinfo, offset, tree, &v->ulType, &str); |
3593 | 0 | proto_item_append_text(item, " Type: %s", str); |
3594 | |
|
3595 | 0 | v->Weight = tvb_get_letohl(tvb, offset); |
3596 | 0 | proto_tree_add_uint(tree, hf_mswsp_crestrict_weight, tvb, offset, 4, v->Weight); |
3597 | 0 | offset += 4; |
3598 | |
|
3599 | 0 | increment_dissection_depth(pinfo); |
3600 | 0 | switch(v->ulType) { |
3601 | 0 | case RTNone: |
3602 | 0 | break; |
3603 | 0 | case RTAnd: |
3604 | 0 | case RTOr: |
3605 | 0 | case RTProximity: |
3606 | 0 | case RTPhrase: { |
3607 | 0 | v->u.RTAnd = wmem_new(pinfo->pool, struct CNodeRestriction); |
3608 | 0 | offset = parse_CNodeRestriction(tvb, pinfo, offset, tree, pad_tree, v->u.RTAnd, "CNodeRestriction"); |
3609 | 0 | break; |
3610 | 0 | } |
3611 | 0 | case RTNot: { |
3612 | 0 | v->u.RTNot = wmem_new(pinfo->pool, struct CRestriction); |
3613 | 0 | offset = parse_CRestriction(tvb, pinfo, offset, tree, pad_tree, |
3614 | 0 | v->u.RTNot, "CRestriction"); |
3615 | 0 | break; |
3616 | 0 | } |
3617 | 0 | case RTProperty: { |
3618 | 0 | v->u.RTProperty = wmem_new(pinfo->pool, struct CPropertyRestriction); |
3619 | 0 | offset = parse_CPropertyRestriction(tvb, pinfo, offset, tree, pad_tree, |
3620 | 0 | v->u.RTProperty, "CPropertyRestriction"); |
3621 | 0 | break; |
3622 | 0 | } |
3623 | 0 | case RTCoerce_Add: |
3624 | 0 | case RTCoerce_Multiply: |
3625 | 0 | case RTCoerce_Absolute: { |
3626 | 0 | v->u.RTCoerce_Add = wmem_new(pinfo->pool, struct CCoercionRestriction); |
3627 | 0 | offset = parse_CCoercionRestriction(tvb, pinfo, offset, tree, pad_tree, |
3628 | 0 | v->u.RTCoerce_Add, "CCoercionRestriction"); |
3629 | 0 | break; |
3630 | 0 | } |
3631 | 0 | case RTContent: { |
3632 | 0 | v->u.RTContent = wmem_new(pinfo->pool, struct CContentRestriction); |
3633 | 0 | offset = parse_CContentRestriction(tvb, pinfo, offset, tree, pad_tree, |
3634 | 0 | v->u.RTContent, "CContentRestriction"); |
3635 | 0 | break; |
3636 | 0 | } |
3637 | 0 | case RTReuseWhere: { |
3638 | 0 | v->u.RTReuseWhere = wmem_new(pinfo->pool, struct CReuseWhere); |
3639 | 0 | offset = parse_CReuseWhere(tvb, offset, tree, pad_tree, |
3640 | 0 | v->u.RTReuseWhere, "CReuseWhere"); |
3641 | 0 | break; |
3642 | 0 | } |
3643 | 0 | case RTNatLanguage: { |
3644 | 0 | v->u.RTNatLanguage = wmem_new(pinfo->pool, struct CNatLanguageRestriction); |
3645 | 0 | offset = parse_CNatLanguageRestriction(tvb, pinfo, offset, tree, pad_tree, |
3646 | 0 | v->u.RTNatLanguage, "CNatLanguageRestriction"); |
3647 | 0 | break; |
3648 | 0 | } |
3649 | 0 | default: |
3650 | 0 | proto_item_append_text(item, " Not supported!"); |
3651 | 0 | } |
3652 | 0 | decrement_dissection_depth(pinfo); |
3653 | |
|
3654 | 0 | proto_item_set_end(item, tvb, offset); |
3655 | 0 | return offset; |
3656 | 0 | } |
3657 | | |
3658 | | static int parse_CRestrictionArray(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
3659 | 0 | { |
3660 | 0 | uint32_t present, count; |
3661 | |
|
3662 | 0 | proto_tree *tree; |
3663 | 0 | proto_item *item; |
3664 | |
|
3665 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CRestrictionArray, &item, txt); |
3666 | |
|
3667 | 0 | pad_tree = tree; |
3668 | |
|
3669 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_crestrictarray_count, tvb, offset, 1, ENC_LITTLE_ENDIAN, &count); |
3670 | 0 | offset += 1; |
3671 | |
|
3672 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_crestrictarray_present, tvb, offset, 1, ENC_LITTLE_ENDIAN, &present); |
3673 | 0 | offset += 1; |
3674 | |
|
3675 | 0 | if (present) { |
3676 | 0 | unsigned i; |
3677 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, "paddingCRestrictionPresent"); |
3678 | |
|
3679 | 0 | for (i=0; i<count; i++) { |
3680 | 0 | struct CRestriction r; |
3681 | 0 | offset = parse_CRestriction(tvb, pinfo, offset, tree, pad_tree, &r, wmem_strdup_printf(pinfo->pool, "Restriction[%d]", i)); |
3682 | 0 | } |
3683 | 0 | } |
3684 | 0 | proto_item_set_end(item, tvb, offset); |
3685 | 0 | return offset; |
3686 | 0 | } |
3687 | | |
3688 | | // NOLINTNEXTLINE(misc-no-recursion) |
3689 | | static int parse_CNodeRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CNodeRestriction *v, const char* txt) |
3690 | 0 | { |
3691 | 0 | proto_tree *tree; |
3692 | 0 | proto_item *item; |
3693 | 0 | unsigned i; |
3694 | |
|
3695 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CNodeRestriction, &item, txt); |
3696 | |
|
3697 | 0 | v->cNode = tvb_get_letohl(tvb, offset); |
3698 | 0 | proto_tree_add_uint(tree, hf_mswsp_cnoderestrict_cnode, tvb, offset, 4, v->cNode); |
3699 | 0 | offset += 4; |
3700 | |
|
3701 | 0 | for (i=0; i<v->cNode; i++) { |
3702 | 0 | struct CRestriction r; |
3703 | 0 | ZERO_STRUCT(r); |
3704 | 0 | offset = parse_CRestriction(tvb, pinfo, offset, tree, pad_tree, &r, wmem_strdup_printf(pinfo->pool, "paNode[%u]", i)); |
3705 | 0 | offset = parse_padding(tvb, offset, 4, tree, wmem_strdup_printf(pinfo->pool, "padding_paNode[%u]", i)); /*at begin or end of loop ????*/ |
3706 | |
|
3707 | 0 | } |
3708 | |
|
3709 | 0 | proto_item_set_end(item, tvb, offset); |
3710 | 0 | return offset; |
3711 | 0 | } |
3712 | | |
3713 | | |
3714 | | /*****************************************************************************************/ |
3715 | | |
3716 | | static int vvalue_tvb_get0(tvbuff_t *tvb _U_, packet_info* pinfo _U_, int offset _U_, void *val _U_) |
3717 | 0 | { |
3718 | 0 | return 0; |
3719 | 0 | } |
3720 | | |
3721 | | static int vvalue_tvb_get1(tvbuff_t *tvb, packet_info* pinfo _U_, int offset, void *val) |
3722 | 0 | { |
3723 | 0 | uint8_t *ui1 = (uint8_t*)val; |
3724 | 0 | *ui1 = tvb_get_uint8(tvb, offset); |
3725 | 0 | return 1; |
3726 | 0 | } |
3727 | | |
3728 | | static int vvalue_tvb_get2(tvbuff_t *tvb, packet_info* pinfo _U_, int offset, void *val) |
3729 | 0 | { |
3730 | 0 | uint16_t *ui2 = (uint16_t*)val; |
3731 | 0 | *ui2 = tvb_get_letohs(tvb, offset); |
3732 | 0 | return 2; |
3733 | 0 | } |
3734 | | |
3735 | | static int vvalue_tvb_get4(tvbuff_t *tvb, packet_info* pinfo _U_, int offset, void *val) |
3736 | 0 | { |
3737 | 0 | uint32_t *ui4 = (uint32_t*)val; |
3738 | 0 | *ui4 = tvb_get_letohl(tvb, offset); |
3739 | 0 | return 4; |
3740 | 0 | } |
3741 | | |
3742 | | static int vvalue_tvb_get8(tvbuff_t *tvb, packet_info* pinfo _U_, int offset, void *val) |
3743 | 0 | { |
3744 | 0 | uint64_t *ui8 = (uint64_t*)val; |
3745 | 0 | *ui8 = tvb_get_letoh64(tvb, offset); |
3746 | 0 | return 8; |
3747 | 0 | } |
3748 | | |
3749 | | static int vvalue_tvb_blob(tvbuff_t *tvb, packet_info* pinfo, int offset, void *val) |
3750 | 0 | { |
3751 | 0 | struct data_blob *blob = (struct data_blob*)val; |
3752 | 0 | uint32_t len = tvb_get_letohl(tvb, offset); |
3753 | |
|
3754 | 0 | blob->size = len; |
3755 | 0 | blob->data = (uint8_t*)tvb_memdup(pinfo->pool, tvb, offset + 4, len); |
3756 | |
|
3757 | 0 | return 4 + len; |
3758 | 0 | } |
3759 | | |
3760 | | static int vvalue_tvb_lpstr(tvbuff_t *tvb, packet_info* pinfo, int offset, void *val) |
3761 | 0 | { |
3762 | 0 | struct data_str *str = (struct data_str*)val; |
3763 | 0 | unsigned len; |
3764 | |
|
3765 | 0 | str->len = tvb_get_letohl(tvb, offset); |
3766 | 0 | str->str = (char*)tvb_get_stringz_enc(pinfo->pool, tvb, offset + 4, &len, |
3767 | 0 | ENC_ASCII|ENC_LITTLE_ENDIAN); |
3768 | | /* XXX test str->len == len */ |
3769 | 0 | return 4 + len; |
3770 | 0 | } |
3771 | | |
3772 | | static int vvalue_tvb_lpwstr_len(tvbuff_t *tvb, packet_info* pinfo, int offset, int length, void *val) |
3773 | 0 | { |
3774 | 0 | struct data_str *str = (struct data_str*)val; |
3775 | 0 | const char *ptr; |
3776 | 0 | int len; |
3777 | |
|
3778 | 0 | if (length == 0) { |
3779 | | /* we don't know the length */ |
3780 | 0 | ptr = (char*)tvb_get_stringz_enc(pinfo->pool, tvb, offset, (unsigned*)&len, |
3781 | 0 | ENC_UTF_16|ENC_LITTLE_ENDIAN); |
3782 | 0 | } else { |
3783 | 0 | ptr = (char*)tvb_get_string_enc(pinfo->pool, tvb, offset, length, |
3784 | 0 | ENC_UTF_16|ENC_LITTLE_ENDIAN); |
3785 | 0 | len = length; |
3786 | 0 | } |
3787 | 0 | str->str = ptr; |
3788 | 0 | return len; |
3789 | 0 | } |
3790 | | |
3791 | | static int vvalue_tvb_lpwstr(tvbuff_t *tvb, packet_info* pinfo, int offset, void *val) |
3792 | 0 | { |
3793 | 0 | struct data_str *str = (struct data_str*)val; |
3794 | |
|
3795 | 0 | str->len = tvb_get_letohl(tvb, offset); |
3796 | |
|
3797 | 0 | return 4 + vvalue_tvb_lpwstr_len(tvb, pinfo, offset + 4, 0, val); |
3798 | 0 | } |
3799 | | |
3800 | | /* Maximum sane vector size. Arbitrary. */ |
3801 | 0 | #define MAX_VT_VECTOR_SIZE 5000 |
3802 | | static int vvalue_tvb_vector_internal(tvbuff_t *tvb, packet_info* pinfo, int offset, struct vt_vector *val, struct vtype_data *type, unsigned num) |
3803 | 0 | { |
3804 | 0 | const int offset_in = offset; |
3805 | 0 | const bool varsize = (type->size == -1); |
3806 | 0 | const unsigned elsize = varsize ? (unsigned)sizeof(struct data_blob) : (unsigned)type->size; |
3807 | 0 | uint8_t *data; |
3808 | 0 | int len; |
3809 | 0 | unsigned i; |
3810 | | |
3811 | | /* |
3812 | | * Make sure we actually *have* the data we're going to fetch |
3813 | | * here, before making a possibly-doomed attempt to allocate |
3814 | | * memory for it. |
3815 | | * |
3816 | | * First, check for sane values. |
3817 | | */ |
3818 | 0 | if (num > MAX_VT_VECTOR_SIZE) { |
3819 | 0 | THROW(ReportedBoundsError); |
3820 | 0 | } |
3821 | | |
3822 | | /* |
3823 | | * No huge numbers from the wire; now make sure we at least have that data. |
3824 | | */ |
3825 | 0 | tvb_ensure_bytes_exist(tvb, offset, elsize * num); |
3826 | | |
3827 | | /* |
3828 | | * OK, it exists; allocate a buffer into which to fetch it. |
3829 | | */ |
3830 | 0 | data = (uint8_t*)wmem_alloc(pinfo->pool, elsize * num); |
3831 | |
|
3832 | 0 | val->len = num; |
3833 | 0 | val->u.vt_ui1 = data; |
3834 | 0 | DISSECTOR_ASSERT((void*)&val->u == ((void*)&val->u.vt_ui1)); |
3835 | |
|
3836 | 0 | for (i=0; i<num; i++) { |
3837 | 0 | DISSECTOR_ASSERT_HINT(type->tvb_get != 0, |
3838 | 0 | "type that we don't know yet how to handle, please submit a bug with trace"); |
3839 | 0 | len = type->tvb_get(tvb, pinfo, offset, data); |
3840 | 0 | data += elsize; |
3841 | 0 | offset += len; |
3842 | 0 | if (varsize) { |
3843 | | /* at begin or end of loop ??? */ |
3844 | 0 | offset = WS_ROUNDUP_4(offset); |
3845 | 0 | } |
3846 | 0 | } |
3847 | 0 | return offset - offset_in; |
3848 | 0 | } |
3849 | | |
3850 | | static int vvalue_tvb_vector(tvbuff_t *tvb, packet_info* pinfo, int offset, struct vt_vector *val, struct vtype_data *type) |
3851 | 0 | { |
3852 | 0 | const unsigned num = tvb_get_letohl(tvb, offset); |
3853 | 0 | return 4 + vvalue_tvb_vector_internal(tvb, pinfo, offset+4, val, type, num); |
3854 | 0 | } |
3855 | | |
3856 | | static void vvalue_strbuf_append_null(wmem_strbuf_t *strbuf _U_, void *ptr _U_) |
3857 | 0 | {} |
3858 | | |
3859 | | static void vvalue_strbuf_append_i1(wmem_strbuf_t *strbuf, void *ptr) |
3860 | 0 | { |
3861 | 0 | int8_t i1 = *(int8_t*)ptr; |
3862 | 0 | wmem_strbuf_append_printf(strbuf, "%d", (int)i1); |
3863 | 0 | } |
3864 | | |
3865 | | static void vvalue_strbuf_append_i2(wmem_strbuf_t *strbuf, void *ptr) |
3866 | 0 | { |
3867 | 0 | int16_t i2 = *(int16_t*)ptr; |
3868 | 0 | wmem_strbuf_append_printf(strbuf, "%d", (int)i2); |
3869 | 0 | } |
3870 | | |
3871 | | static void vvalue_strbuf_append_i4(wmem_strbuf_t *strbuf, void *ptr) |
3872 | 0 | { |
3873 | 0 | int32_t i4 = *(int32_t*)ptr; |
3874 | 0 | wmem_strbuf_append_printf(strbuf, "%d", i4); |
3875 | 0 | } |
3876 | | |
3877 | | static void vvalue_strbuf_append_i8(wmem_strbuf_t *strbuf, void *ptr) |
3878 | 0 | { |
3879 | 0 | int64_t i8 = *(int64_t*)ptr; |
3880 | 0 | wmem_strbuf_append_printf(strbuf, "%" PRId64, i8); |
3881 | 0 | } |
3882 | | |
3883 | | static void vvalue_strbuf_append_ui1(wmem_strbuf_t *strbuf, void *ptr) |
3884 | 0 | { |
3885 | 0 | uint8_t ui1 = *(uint8_t*)ptr; |
3886 | 0 | wmem_strbuf_append_printf(strbuf, "%u", (unsigned)ui1); |
3887 | 0 | } |
3888 | | |
3889 | | static void vvalue_strbuf_append_ui2(wmem_strbuf_t *strbuf, void *ptr) |
3890 | 0 | { |
3891 | 0 | uint16_t ui2 = *(uint16_t*)ptr; |
3892 | 0 | wmem_strbuf_append_printf(strbuf, "%u", (unsigned)ui2); |
3893 | 0 | } |
3894 | | |
3895 | | static void vvalue_strbuf_append_ui4(wmem_strbuf_t *strbuf, void *ptr) |
3896 | 0 | { |
3897 | 0 | uint32_t ui4 = *(uint32_t*)ptr; |
3898 | 0 | wmem_strbuf_append_printf(strbuf, "%d", ui4); |
3899 | 0 | } |
3900 | | |
3901 | | static void vvalue_strbuf_append_ui8(wmem_strbuf_t *strbuf, void *ptr) |
3902 | 0 | { |
3903 | 0 | uint64_t ui8 = *(uint64_t*)ptr; |
3904 | 0 | wmem_strbuf_append_printf(strbuf, "%" PRIu64, ui8); |
3905 | 0 | } |
3906 | | |
3907 | | static void vvalue_strbuf_append_r4(wmem_strbuf_t *strbuf, void *ptr) |
3908 | 0 | { |
3909 | 0 | float r4 = *(float*)ptr; |
3910 | 0 | wmem_strbuf_append_printf(strbuf, "%g", (double)r4); |
3911 | 0 | } |
3912 | | |
3913 | | static void vvalue_strbuf_append_r8(wmem_strbuf_t *strbuf, void *ptr) |
3914 | 0 | { |
3915 | 0 | double r8 = *(double*)ptr; |
3916 | 0 | wmem_strbuf_append_printf(strbuf, "%g", r8); |
3917 | 0 | } |
3918 | | |
3919 | | static void vvalue_strbuf_append_str(wmem_strbuf_t *strbuf, void *ptr) |
3920 | 0 | { |
3921 | 0 | struct data_str *str = (struct data_str*)ptr; |
3922 | 0 | wmem_strbuf_append_printf(strbuf, "\"%s\"", str->str); |
3923 | 0 | } |
3924 | | |
3925 | | static void vvalue_strbuf_append_blob(wmem_strbuf_t *strbuf, void *ptr) |
3926 | 0 | { |
3927 | 0 | struct data_blob *blob = (struct data_blob*)ptr; |
3928 | 0 | wmem_strbuf_append_printf(strbuf, "size: %d", (int)blob->size); |
3929 | 0 | } |
3930 | | |
3931 | | static void vvalue_strbuf_append_bool(wmem_strbuf_t *strbuf, void *ptr) |
3932 | 0 | { |
3933 | 0 | uint16_t val = *(unsigned*)ptr; |
3934 | 0 | switch (val) { |
3935 | 0 | case 0: |
3936 | 0 | wmem_strbuf_append(strbuf, "False"); |
3937 | 0 | break; |
3938 | 0 | case 0xffff: |
3939 | 0 | wmem_strbuf_append(strbuf, "True"); |
3940 | 0 | break; |
3941 | 0 | default: |
3942 | 0 | wmem_strbuf_append_printf(strbuf, "Invalid (0x%4x)", val); |
3943 | 0 | } |
3944 | 0 | } |
3945 | | |
3946 | | static void vvalue_strbuf_append_vector(wmem_strbuf_t *strbuf, struct vt_vector val, struct vtype_data *type) |
3947 | 0 | { |
3948 | 0 | const int elsize = (type->size == -1) ? (int)sizeof(struct data_blob) : type->size; |
3949 | 0 | unsigned i; |
3950 | 0 | uint8_t *data = val.u.vt_ui1; |
3951 | 0 | wmem_strbuf_append_c(strbuf, '['); |
3952 | 0 | for (i=0; i<val.len; i++) { |
3953 | 0 | if (i>0) { |
3954 | 0 | wmem_strbuf_append_c(strbuf, ','); |
3955 | 0 | } |
3956 | 0 | type->strbuf_append(strbuf, data); |
3957 | 0 | data += elsize; |
3958 | 0 | } |
3959 | 0 | wmem_strbuf_append_c(strbuf, ']'); |
3960 | 0 | } |
3961 | | |
3962 | | static struct vtype_data VT_TYPE[] = { |
3963 | | {VT_EMPTY, "VT_EMPTY", 0, vvalue_tvb_get0, NULL, vvalue_strbuf_append_null}, |
3964 | | {VT_NULL, "VT_NULL", 0, vvalue_tvb_get0, NULL, vvalue_strbuf_append_null}, |
3965 | | {VT_I2, "VT_I2", 2, vvalue_tvb_get2, NULL, vvalue_strbuf_append_i2}, |
3966 | | {VT_I4, "VT_I4", 4, vvalue_tvb_get4, NULL, vvalue_strbuf_append_i4}, |
3967 | | {VT_R4, "VT_R4", 4, vvalue_tvb_get4, NULL, vvalue_strbuf_append_r4}, |
3968 | | {VT_R8, "VT_R8", 8, vvalue_tvb_get8, NULL, vvalue_strbuf_append_r8}, |
3969 | | {VT_CY, "VT_CY", 8, vvalue_tvb_get8, NULL, vvalue_strbuf_append_i8}, |
3970 | | {VT_DATE, "VT_DATE", 8, vvalue_tvb_get8, NULL, vvalue_strbuf_append_r8}, |
3971 | | {VT_BSTR, "VT_BSTR", -1, vvalue_tvb_lpwstr, vvalue_tvb_lpwstr_len, vvalue_strbuf_append_str}, |
3972 | | {VT_ERROR, "VT_ERROR", 4, vvalue_tvb_get4, NULL, vvalue_strbuf_append_ui4}, |
3973 | | {VT_BOOL, "VT_BOOL", 2, vvalue_tvb_get2, NULL, vvalue_strbuf_append_bool}, |
3974 | | {VT_VARIANT, "VT_VARIANT", -1, NULL, NULL, NULL}, |
3975 | | {VT_DECIMAL, "VT_DECIMAL", 16, NULL, NULL, NULL}, |
3976 | | {VT_I1, "VT_I1", 1, vvalue_tvb_get1, NULL, vvalue_strbuf_append_i1}, |
3977 | | {VT_UI1, "VT_UI1", 1, vvalue_tvb_get1, NULL, vvalue_strbuf_append_ui1}, |
3978 | | {VT_UI2, "VT_UI2", 2, vvalue_tvb_get2, NULL, vvalue_strbuf_append_ui2}, |
3979 | | {VT_UI4, "VT_UI4", 4, vvalue_tvb_get4, NULL, vvalue_strbuf_append_ui4}, |
3980 | | {VT_I8, "VT_I8", 8, vvalue_tvb_get8, NULL, vvalue_strbuf_append_i8}, |
3981 | | {VT_UI8, "VT_UI8", 8, vvalue_tvb_get8, NULL, vvalue_strbuf_append_ui8}, |
3982 | | {VT_INT, "VT_INT", 4, vvalue_tvb_get4, NULL, vvalue_strbuf_append_i4}, |
3983 | | {VT_UINT, "VT_UINT", 4, vvalue_tvb_get4, NULL, vvalue_strbuf_append_ui4}, |
3984 | | {VT_LPSTR, "VT_LPSTR", -1, vvalue_tvb_lpstr, NULL, vvalue_strbuf_append_str}, |
3985 | | {VT_LPWSTR, "VT_LPWSTR", -1, vvalue_tvb_lpwstr, vvalue_tvb_lpwstr_len, vvalue_strbuf_append_str}, |
3986 | | {VT_COMPRESSED_LPWSTR, "VT_COMPRESSED_LPWSTR", -1, NULL, NULL, vvalue_strbuf_append_str}, |
3987 | | {VT_FILETIME, "VT_FILETIME", 8, vvalue_tvb_get8, NULL, vvalue_strbuf_append_i8}, |
3988 | | {VT_BLOB, "VT_BLOB", -1, vvalue_tvb_blob, NULL, vvalue_strbuf_append_blob}, |
3989 | | {VT_BLOB_OBJECT, "VT_BLOB_OBJECT", -1, vvalue_tvb_blob, NULL, vvalue_strbuf_append_blob}, |
3990 | | {VT_CLSID, "VT_CLSID", 16, NULL, NULL, NULL} |
3991 | | }; |
3992 | | |
3993 | | static struct vtype_data *vType_get_type(uint16_t t) |
3994 | 0 | { |
3995 | 0 | unsigned i; |
3996 | 0 | t = (t & 0xFF); |
3997 | 0 | for (i=0; i<array_length(VT_TYPE); i++) { |
3998 | 0 | if (t == VT_TYPE[i].tag) { |
3999 | 0 | return &VT_TYPE[i]; |
4000 | 0 | } |
4001 | 0 | } |
4002 | 0 | return NULL; |
4003 | 0 | } |
4004 | | |
4005 | | static const char *str_CBaseStorageVariant(struct CBaseStorageVariant *value, bool print_type, wmem_allocator_t* allocator) |
4006 | 0 | { |
4007 | |
|
4008 | 0 | wmem_strbuf_t *strbuf = wmem_strbuf_new(allocator, ""); |
4009 | 0 | if (value == NULL) { |
4010 | 0 | return "<NULL>"; |
4011 | 0 | } |
4012 | | |
4013 | 0 | if (value->type == NULL) { |
4014 | 0 | return "<??""?>"; |
4015 | 0 | } |
4016 | | |
4017 | 0 | if (print_type) { |
4018 | 0 | wmem_strbuf_append(strbuf, value->type->str); |
4019 | |
|
4020 | 0 | if (value->vType & 0xFF00) { |
4021 | 0 | wmem_strbuf_append_printf(strbuf, "[%d]", value->vValue.vt_vector.len); |
4022 | 0 | } |
4023 | 0 | wmem_strbuf_append(strbuf, ": "); |
4024 | 0 | } |
4025 | |
|
4026 | 0 | switch (value->vType & 0xFF00) { |
4027 | 0 | case 0: |
4028 | 0 | value->type->strbuf_append(strbuf, &value->vValue); |
4029 | 0 | break; |
4030 | 0 | case VT_ARRAY: |
4031 | 0 | vvalue_strbuf_append_vector(strbuf, value->vValue.vt_array.vData, value->type); |
4032 | 0 | break; |
4033 | 0 | case VT_VECTOR: |
4034 | 0 | vvalue_strbuf_append_vector(strbuf, value->vValue.vt_vector, value->type); |
4035 | 0 | break; |
4036 | 0 | default: |
4037 | 0 | wmem_strbuf_append(strbuf, "Invalid"); |
4038 | 0 | } |
4039 | | |
4040 | 0 | return wmem_strbuf_get_str(strbuf); |
4041 | 0 | } |
4042 | | |
4043 | | static int parse_CBaseStorageVariant(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree _U_, struct CBaseStorageVariant *value, const char *text) |
4044 | 0 | { |
4045 | 0 | int i, len; |
4046 | 0 | proto_item *ti, *ti_type, *ti_val; |
4047 | 0 | proto_tree *tree, *tr; |
4048 | 0 | enum vType highType; |
4049 | |
|
4050 | 0 | ZERO_STRUCT(*value); |
4051 | |
|
4052 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CBaseStorageVariant, &ti, text); |
4053 | |
|
4054 | 0 | value->vType = tvb_get_letohs(tvb, offset); |
4055 | 0 | value->type = vType_get_type(value->vType & 0xFF); |
4056 | 0 | if (value->type == NULL) { |
4057 | | /* |
4058 | | * Not a valid type. |
4059 | | */ |
4060 | 0 | ti_type = proto_tree_add_string(tree, hf_mswsp_cbasestorvariant_vtype, tvb, offset, 2, "Unknown CBaseStorageVariant type"); |
4061 | 0 | expert_add_info(pinfo, ti_type, &ei_mswsp_invalid_variant_type); |
4062 | |
|
4063 | 0 | THROW_MESSAGE(ReportedBoundsError, "Unknown CBaseStorageVariant type"); |
4064 | 0 | return offset; |
4065 | 0 | } |
4066 | | |
4067 | 0 | ti_type = proto_tree_add_string(tree, hf_mswsp_cbasestorvariant_vtype, tvb, offset, 2, value->type->str); |
4068 | 0 | offset += 2; |
4069 | |
|
4070 | 0 | value->vData1 = tvb_get_uint8(tvb, offset); |
4071 | 0 | proto_tree_add_uint(tree, hf_mswsp_cbasestorvariant_vdata1, tvb, offset, 1, value->vData1); |
4072 | 0 | offset += 1; |
4073 | |
|
4074 | 0 | value->vData2 = tvb_get_uint8(tvb, offset); |
4075 | 0 | proto_tree_add_uint(tree, hf_mswsp_cbasestorvariant_vdata2, tvb, offset, 1, value->vData2); |
4076 | 0 | offset += 1; |
4077 | |
|
4078 | 0 | highType = (enum vType)(value->vType & 0xFF00); |
4079 | |
|
4080 | 0 | ti_val = proto_tree_add_string(tree, hf_mswsp_cbasestorvariant_vvalue, tvb, offset, 0, ""); |
4081 | |
|
4082 | 0 | switch (highType) { |
4083 | 0 | case VT_EMPTY: |
4084 | 0 | DISSECTOR_ASSERT_HINT(value->type->tvb_get != 0, |
4085 | 0 | "type that we don't know yet how to handle, please submit a bug with trace"); |
4086 | 0 | len = value->type->tvb_get(tvb, pinfo, offset, &value->vValue.vt_single); |
4087 | 0 | offset += len; |
4088 | 0 | break; |
4089 | 0 | case VT_VECTOR: |
4090 | 0 | proto_item_append_text(ti_type, "|VT_VECTOR"); |
4091 | 0 | tr = proto_item_add_subtree(ti_val, ett_CBaseStorageVariant_Vector); |
4092 | |
|
4093 | 0 | len = vvalue_tvb_vector(tvb, pinfo, offset, &value->vValue.vt_vector, value->type); |
4094 | 0 | proto_tree_add_uint(tr, hf_mswsp_cbasestorvariant_num, tvb, offset, 4, value->vValue.vt_vector.len); |
4095 | 0 | offset += len; |
4096 | 0 | break; |
4097 | 0 | case VT_ARRAY: { |
4098 | 0 | uint16_t cDims, fFeatures; |
4099 | 0 | uint32_t cbElements, cElements, lLbound; |
4100 | 0 | int num = 1; |
4101 | |
|
4102 | 0 | proto_item_append_text(ti_type, "|VT_ARRAY"); |
4103 | 0 | tr = proto_item_add_subtree(ti_val, ett_CBaseStorageVariant_Array); |
4104 | |
|
4105 | 0 | cDims = tvb_get_letohs(tvb, offset); |
4106 | 0 | proto_tree_add_uint(tr, hf_mswsp_cbasestorvariant_cdims, tvb, offset, 2, cDims); |
4107 | 0 | offset += 2; |
4108 | |
|
4109 | 0 | fFeatures = tvb_get_letohs(tvb, offset); |
4110 | 0 | proto_tree_add_uint(tr, hf_mswsp_cbasestorvariant_ffeatures, tvb, offset, 2, fFeatures); |
4111 | 0 | offset += 2; |
4112 | |
|
4113 | 0 | cbElements = tvb_get_letohl(tvb, offset); |
4114 | 0 | proto_tree_add_uint(tr, hf_mswsp_cbasestorvariant_cbelements, tvb, offset, 4, cbElements); |
4115 | 0 | offset += 4; |
4116 | 0 | for (i=0; i<cDims; i++) { |
4117 | 0 | cElements = tvb_get_letohl(tvb, offset); |
4118 | 0 | lLbound = tvb_get_letohl(tvb, offset + 4); |
4119 | 0 | proto_tree_add_string_format(tr, hf_mswsp_cbasestorvariant_rgsabound, tvb, offset, 8, "", "Rgsabound[%d]: (%d:%d)", i, cElements, lLbound); |
4120 | 0 | offset += 8; |
4121 | 0 | num *= cElements; |
4122 | 0 | } |
4123 | |
|
4124 | 0 | len = vvalue_tvb_vector_internal(tvb, pinfo, offset, &value->vValue.vt_array.vData, value->type, num); |
4125 | 0 | offset += len; |
4126 | 0 | break; |
4127 | 0 | } |
4128 | 0 | default: |
4129 | 0 | proto_item_append_text(ti_type, "|0x%x", highType); |
4130 | 0 | } |
4131 | 0 | proto_item_set_end(ti, tvb, offset); |
4132 | 0 | proto_item_set_end(ti_val, tvb, offset); |
4133 | |
|
4134 | 0 | proto_item_append_text(ti_val, " %s", str_CBaseStorageVariant(value, false, pinfo->pool)); |
4135 | 0 | proto_item_append_text(ti, " %s", str_CBaseStorageVariant(value, true, pinfo->pool)); |
4136 | |
|
4137 | 0 | return offset; |
4138 | 0 | } |
4139 | | |
4140 | | enum { |
4141 | | DBKIND_GUID_NAME = 0, |
4142 | | DBKIND_GUID_PROPID = 1 |
4143 | | }; |
4144 | | |
4145 | | static int parse_CDbColId(tvbuff_t *tvb, packet_info* pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *text) |
4146 | 0 | { |
4147 | 0 | uint32_t eKind, ulId; |
4148 | 0 | e_guid_t guid; |
4149 | 0 | const char *str; |
4150 | 0 | static const char *KIND[] = {"DBKIND_GUID_NAME", "DBKIND_GUID_PROPID"}; |
4151 | |
|
4152 | 0 | proto_item *tree_item; |
4153 | 0 | proto_tree *tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CDbColId, &tree_item, text); |
4154 | |
|
4155 | 0 | eKind = tvb_get_letohl(tvb, offset); |
4156 | 0 | str = (eKind < 2 ? KIND[eKind] : "???"); |
4157 | 0 | proto_tree_add_string_format_value(tree, hf_mswsp_cdbcolid_ekind, tvb, offset, 4, str, "%s (%u)", str, eKind); |
4158 | 0 | offset += 4; |
4159 | |
|
4160 | 0 | offset = parse_padding(tvb, offset, 8, pad_tree, "paddingGuidAlign"); |
4161 | |
|
4162 | 0 | offset = parse_guid(tvb, pinfo->pool, offset, tree, &guid, "GUID"); |
4163 | |
|
4164 | 0 | ulId = tvb_get_letohl(tvb, offset); |
4165 | 0 | proto_tree_add_uint(tree, hf_mswsp_cdbcolid_ulid, tvb, offset, 4, ulId); |
4166 | 0 | offset += 4; |
4167 | |
|
4168 | 0 | if (eKind == DBKIND_GUID_NAME) { |
4169 | 0 | char *name; |
4170 | 0 | int len = ulId; |
4171 | 0 | name = (char*)tvb_get_string_enc(pinfo->pool, tvb, offset, len, ENC_LITTLE_ENDIAN | ENC_UCS_2); |
4172 | 0 | proto_item_append_text(tree_item, " \"%s\"", name); |
4173 | 0 | proto_tree_add_string_format_value(tree, hf_mswsp_cdbcolid_vstring, tvb, offset, len, name, "\"%s\"", name); |
4174 | 0 | offset += len; |
4175 | 0 | } else if (eKind == DBKIND_GUID_PROPID) { |
4176 | 0 | proto_item_append_text(tree_item, " %08x", ulId); |
4177 | 0 | } else { |
4178 | 0 | proto_item_append_text(tree_item, "<INVALID>"); |
4179 | 0 | } |
4180 | |
|
4181 | 0 | proto_item_set_end(tree_item, tvb, offset); |
4182 | |
|
4183 | 0 | return offset; |
4184 | 0 | } |
4185 | | |
4186 | | static int parse_CDbProp(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const struct GuidPropertySet *propset, const char *txt) |
4187 | 0 | { |
4188 | 0 | static const value_string EMPTY_VS[] = {{0, NULL}}; |
4189 | 0 | const value_string *vs = (propset && propset->id_map) ? propset->id_map : EMPTY_VS; |
4190 | 0 | uint32_t id, opt, status; |
4191 | 0 | struct CBaseStorageVariant value; |
4192 | 0 | proto_item *item; |
4193 | 0 | proto_tree *tree; |
4194 | 0 | const char *str; |
4195 | |
|
4196 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CDbProp, &item, txt); |
4197 | |
|
4198 | 0 | id = tvb_get_letohl(tvb, offset); |
4199 | 0 | str = val_to_str(pinfo->pool, id, vs, "0x%08x"); |
4200 | 0 | proto_tree_add_string_format_value(tree, hf_mswsp_cdbprop_id, tvb, offset, 4, str, "%s (0x%08x)", (str[0] == '0' ? "" : str), id); |
4201 | 0 | offset += 4; |
4202 | 0 | proto_item_append_text(item, " Id: %s", str); |
4203 | |
|
4204 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_cdbprop_options, tvb, offset, 4, ENC_LITTLE_ENDIAN, &opt); |
4205 | 0 | offset += 4; |
4206 | |
|
4207 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_cdbprop_status, tvb, offset, 4, ENC_LITTLE_ENDIAN, &status); |
4208 | 0 | offset += 4; |
4209 | |
|
4210 | 0 | offset = parse_CDbColId(tvb, pinfo, offset, tree, pad_tree, "colid"); |
4211 | |
|
4212 | 0 | offset = parse_CBaseStorageVariant(tvb, pinfo, offset, tree, pad_tree, &value, "vValue"); |
4213 | |
|
4214 | 0 | str = str_CBaseStorageVariant(&value, true, pinfo->pool); |
4215 | 0 | proto_item_append_text(item, " %s", str); |
4216 | 0 | proto_item_set_end(item, tvb, offset); |
4217 | |
|
4218 | 0 | return offset; |
4219 | 0 | } |
4220 | | |
4221 | | static int parse_CDbPropSet(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
4222 | 0 | { |
4223 | 0 | int i, num; |
4224 | 0 | e_guid_t guid; |
4225 | 0 | const struct GuidPropertySet *pset; |
4226 | 0 | proto_item *item; |
4227 | 0 | proto_tree *tree; |
4228 | |
|
4229 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CDbPropSet, &item, txt); |
4230 | |
|
4231 | 0 | offset = parse_guid(tvb, pinfo->pool, offset, tree, &guid, "guidPropertySet"); |
4232 | |
|
4233 | 0 | pset = GuidPropertySet_find_guid(&guid); |
4234 | |
|
4235 | 0 | if (pset) { |
4236 | 0 | proto_item_append_text(item, " \"%s\" (%s)", pset->desc, pset->def); |
4237 | 0 | } else { |
4238 | 0 | const char *guid_str = guid_to_str(pinfo->pool, &guid); |
4239 | 0 | proto_item_append_text(item, " {%s}", guid_str); |
4240 | 0 | } |
4241 | |
|
4242 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, "guidPropertySet"); |
4243 | |
|
4244 | 0 | num = tvb_get_letohl(tvb, offset); |
4245 | 0 | proto_tree_add_uint(tree, hf_mswsp_cdbpropset_cprops, tvb, offset, 4, num); |
4246 | 0 | offset += 4; |
4247 | 0 | proto_item_append_text(item, " Num: %d", num); |
4248 | |
|
4249 | 0 | for (i = 0; i<num; i++) { |
4250 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, wmem_strdup_printf(pinfo->pool, "aProp[%d]", i)); |
4251 | 0 | offset = parse_CDbProp(tvb, pinfo, offset, tree, pad_tree, pset, wmem_strdup_printf(pinfo->pool, "aProp[%d]", i)); |
4252 | 0 | } |
4253 | |
|
4254 | 0 | proto_item_set_end(item, tvb, offset); |
4255 | 0 | return offset; |
4256 | 0 | } |
4257 | | |
4258 | | static int parse_PropertySetArray(tvbuff_t *tvb, packet_info *pinfo, int offset, int size_offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
4259 | 0 | { |
4260 | 0 | const int offset_in = offset; |
4261 | 0 | uint32_t size, num; |
4262 | 0 | int i; |
4263 | 0 | proto_tree *tree; |
4264 | 0 | proto_item *item; |
4265 | |
|
4266 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CDbPropSet_Array, &item, txt); |
4267 | |
|
4268 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_msg_ConnectIn_Blob1, tvb, |
4269 | 0 | size_offset, 4, ENC_LITTLE_ENDIAN, &size); |
4270 | |
|
4271 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_msg_ConnectIn_PropSets_num, tvb, |
4272 | 0 | offset, 4, ENC_LITTLE_ENDIAN, &num); |
4273 | 0 | offset += 4; |
4274 | |
|
4275 | 0 | for (i = 0; i < (int)num; i++) { |
4276 | 0 | offset = parse_CDbPropSet(tvb, pinfo, offset, tree, pad_tree, wmem_strdup_printf(pinfo->pool, "PropertySet[%d]", i)); |
4277 | 0 | } |
4278 | |
|
4279 | 0 | proto_item_set_end(item, tvb, offset); |
4280 | 0 | DISSECTOR_ASSERT(offset - offset_in == (int)size); |
4281 | 0 | return offset; |
4282 | 0 | } |
4283 | | |
4284 | | static int parse_CColumnSet(tvbuff_t *tvb, int offset, proto_tree *tree, const char *txt) |
4285 | 0 | { |
4286 | 0 | uint32_t count, v, i; |
4287 | 0 | proto_item *item; |
4288 | |
|
4289 | 0 | count = tvb_get_letohl(tvb, offset); |
4290 | 0 | offset += 4; |
4291 | 0 | proto_tree_add_subtree(tree, tvb, offset, count * 4, ett_mswsp_uin32_array, &item, txt); |
4292 | 0 | proto_item_append_text(item, " Count %u [", count); |
4293 | |
|
4294 | 0 | for (i=0; i<count; i++) { |
4295 | 0 | v = tvb_get_letohl(tvb, offset); |
4296 | 0 | offset += 4; |
4297 | 0 | if (i>0) { |
4298 | 0 | proto_item_append_text(item, ",%u", v); |
4299 | 0 | } else { |
4300 | 0 | proto_item_append_text(item, "%u", v); |
4301 | 0 | } |
4302 | 0 | } |
4303 | 0 | proto_item_append_text(item, "]"); |
4304 | 0 | return offset; |
4305 | 0 | } |
4306 | | |
4307 | | /* 2.2.1.23 RANGEBOUNDARY */ |
4308 | | static int parse_RANGEBOUNDARY(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
4309 | 0 | { |
4310 | 0 | uint32_t ulType; |
4311 | 0 | uint8_t labelPresent; |
4312 | 0 | proto_item *item; |
4313 | 0 | proto_tree *tree; |
4314 | 0 | struct CBaseStorageVariant prval; |
4315 | |
|
4316 | 0 | tree =proto_tree_add_subtree (parent_tree, tvb, offset, 0, ett_RANGEBOUNDARY, &item, txt); |
4317 | |
|
4318 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_rangeboundry_ultype, tvb, offset, 4, ENC_LITTLE_ENDIAN, &ulType); |
4319 | 0 | proto_item_append_text(item, ": Type 0x%08x", ulType); |
4320 | 0 | offset += 4; |
4321 | |
|
4322 | 0 | ZERO_STRUCT(prval); |
4323 | 0 | offset = parse_CBaseStorageVariant(tvb, pinfo, offset, tree, pad_tree, &prval, "prVal"); |
4324 | |
|
4325 | 0 | labelPresent = tvb_get_uint8(tvb, offset); |
4326 | 0 | proto_tree_add_item(tree, hf_mswsp_rangeboundry_labelpresent, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4327 | 0 | offset += 1; |
4328 | |
|
4329 | 0 | if (labelPresent) { |
4330 | 0 | uint32_t ccLabel; |
4331 | 0 | const uint8_t* label; |
4332 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, "paddingLabelPresent"); |
4333 | |
|
4334 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_rangeboundry_cclabel, tvb, offset, 4, ENC_LITTLE_ENDIAN, &ccLabel); |
4335 | 0 | offset += 4; |
4336 | |
|
4337 | 0 | proto_tree_add_item_ret_string(tree, hf_mswsp_rangeboundry_label, tvb, offset, 2*ccLabel, ENC_LITTLE_ENDIAN | ENC_UCS_2, pinfo->pool, &label); |
4338 | 0 | proto_item_append_text(item, " Label: \"%s\"", label); |
4339 | 0 | offset += 2*ccLabel; |
4340 | 0 | } |
4341 | |
|
4342 | 0 | proto_item_append_text(item, " Val: %s", str_CBaseStorageVariant(&prval, true, pinfo->pool)); |
4343 | |
|
4344 | 0 | proto_item_set_end(item, tvb, offset); |
4345 | 0 | return offset; |
4346 | 0 | } |
4347 | | |
4348 | | |
4349 | | /* 2.2.1.22 CRangeCategSpec */ |
4350 | | static int parse_CRangeCategSpec(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
4351 | 0 | { |
4352 | 0 | proto_item *item; |
4353 | 0 | proto_tree *tree; |
4354 | 0 | unsigned i; |
4355 | 0 | uint32_t cRange; |
4356 | |
|
4357 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CRangeCategSpec, &item, txt); |
4358 | |
|
4359 | 0 | offset = parse_lcid(tvb, offset, tree, "lcid"); |
4360 | |
|
4361 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_crangecategspec_crange, tvb, offset, 4, ENC_LITTLE_ENDIAN, &cRange); |
4362 | 0 | offset += 4; |
4363 | |
|
4364 | 0 | for (i=0; i<cRange; i++) { |
4365 | 0 | offset = parse_RANGEBOUNDARY(tvb, pinfo, offset, tree, pad_tree, wmem_strdup_printf(pinfo->pool, "aRangeBegin[%u]", i)); |
4366 | |
|
4367 | 0 | } |
4368 | |
|
4369 | 0 | proto_item_set_end(item, tvb, offset); |
4370 | 0 | return offset; |
4371 | 0 | } |
4372 | | |
4373 | | /* 2.2.1.21 CCategSpec */ |
4374 | | static int parse_CCategSpec(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
4375 | 0 | { |
4376 | 0 | proto_item *item; |
4377 | 0 | proto_tree *tree; |
4378 | 0 | uint32_t type; |
4379 | |
|
4380 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CCategSpec, &item, txt); |
4381 | |
|
4382 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_ccategspec_type, tvb, offset, 4, ENC_LITTLE_ENDIAN, &type); |
4383 | 0 | proto_item_append_text(item, " Type %u", type); |
4384 | 0 | offset += 4; |
4385 | |
|
4386 | 0 | offset = parse_CSort(tvb, offset, tree, pad_tree, "CSort"); |
4387 | | |
4388 | | /* |
4389 | | * A CRangeCategSpec structure specifying the range values. |
4390 | | * This field MUST be omitted if _ulCategType is set to |
4391 | | * CATEGORIZE_UNIQUE e.g. '0' otherwise it MUST be present. |
4392 | | */ |
4393 | 0 | if (type != 0) { |
4394 | 0 | offset = parse_CRangeCategSpec(tvb, pinfo, offset, tree, pad_tree, "CRangeCategSpec"); |
4395 | 0 | } |
4396 | |
|
4397 | 0 | proto_item_set_end(item, tvb, offset); |
4398 | 0 | return offset; |
4399 | 0 | } |
4400 | | |
4401 | | /* 2.2.1.25 CAggregSpec */ |
4402 | | static int parse_CAggregSpec(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
4403 | 0 | { |
4404 | 0 | proto_item *item; |
4405 | 0 | proto_tree *tree; |
4406 | 0 | uint32_t type, ccAlias, idColumn; |
4407 | |
|
4408 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CAggregSpec, &item, txt); |
4409 | |
|
4410 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_caggregspec_type, tvb, offset, 1, ENC_LITTLE_ENDIAN, &type); |
4411 | 0 | offset += 1; |
4412 | |
|
4413 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, "padding"); |
4414 | |
|
4415 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_caggregspec_ccalias, tvb, offset, 4, ENC_LITTLE_ENDIAN, &ccAlias); |
4416 | 0 | offset += 4; |
4417 | |
|
4418 | 0 | proto_tree_add_item(tree, hf_mswsp_caggregspec_alias, tvb, offset, 2*ccAlias, ENC_LITTLE_ENDIAN | ENC_UCS_2); |
4419 | 0 | offset += 2*ccAlias; |
4420 | |
|
4421 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_caggregspec_idcolumn, tvb, offset, 4, ENC_LITTLE_ENDIAN, &idColumn); |
4422 | 0 | offset += 4; |
4423 | 0 | if (type == DBAGGTTYPE_REPRESENTATIVEOF |
4424 | 0 | || type == DBAGGTTYPE_BYFREQ |
4425 | 0 | || type == DBAGGTTYPE_FIRST) { |
4426 | 0 | proto_tree_add_uint(tree, |
4427 | 0 | hf_mswsp_caggregspec_ulmaxnumtoreturn, |
4428 | 0 | tvb, offset, 4, idColumn); |
4429 | 0 | offset += 4; |
4430 | 0 | if (type == DBAGGTTYPE_REPRESENTATIVEOF) { |
4431 | 0 | proto_tree_add_uint(tree, |
4432 | 0 | hf_mswsp_caggregspec_idrepresentative, |
4433 | 0 | tvb, offset, 4, idColumn); |
4434 | 0 | } |
4435 | 0 | } |
4436 | | /* Optional ??? |
4437 | | ulMaxNumToReturn, idRepresentative; |
4438 | | */ |
4439 | |
|
4440 | 0 | proto_item_set_end(item, tvb, offset); |
4441 | 0 | return offset; |
4442 | 0 | } |
4443 | | |
4444 | | /* 2.2.1.24 CAggregSet */ |
4445 | | static int parse_CAggregSet(tvbuff_t *tvb, packet_info* pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
4446 | 0 | { |
4447 | 0 | uint32_t cCount, i; |
4448 | 0 | proto_item *item; |
4449 | 0 | proto_tree *tree; |
4450 | |
|
4451 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CAggregSet, &item, txt); |
4452 | |
|
4453 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_caggregset_count, tvb, offset, 4, ENC_LITTLE_ENDIAN, &cCount); |
4454 | 0 | offset += 4; |
4455 | |
|
4456 | 0 | for (i=0; i<cCount; i++) { |
4457 | | /* 2.2.1.25 CAggregSpec */ |
4458 | 0 | offset = parse_CAggregSpec(tvb, offset, tree, pad_tree, wmem_strdup_printf(pinfo->pool, "AggregSpecs[%u]", i)); |
4459 | 0 | } |
4460 | |
|
4461 | 0 | proto_item_set_end(item, tvb, offset); |
4462 | 0 | return offset; |
4463 | 0 | } |
4464 | | |
4465 | | /* 2.2.1.27 CAggregSortKey */ |
4466 | | static int parse_CAggregSortKey(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
4467 | 0 | { |
4468 | 0 | uint32_t order; |
4469 | 0 | proto_item *item; |
4470 | 0 | proto_tree *tree; |
4471 | |
|
4472 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CAggregSortKey, &item, txt); |
4473 | |
|
4474 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_caggregsortkey_order, tvb, offset, 4, ENC_LITTLE_ENDIAN, &order); |
4475 | 0 | offset += 4; |
4476 | |
|
4477 | 0 | offset = parse_CAggregSpec(tvb, offset, tree, pad_tree, "ColumnSpec"); |
4478 | |
|
4479 | 0 | proto_item_set_end(item, tvb, offset); |
4480 | 0 | return offset; |
4481 | 0 | } |
4482 | | |
4483 | | |
4484 | | /* 2.2.1.26 CSortAggregSet */ |
4485 | | static int parse_CSortAggregSet(tvbuff_t *tvb, packet_info* pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
4486 | 0 | { |
4487 | 0 | uint32_t cCount, i; |
4488 | 0 | proto_item *item; |
4489 | 0 | proto_tree *tree; |
4490 | |
|
4491 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CSortAggregSet, &item, txt); |
4492 | |
|
4493 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_csortaggregset_count, tvb, offset, 4, ENC_LITTLE_ENDIAN, &cCount); |
4494 | 0 | offset += 4; |
4495 | |
|
4496 | 0 | for (i=0; i<cCount; i++) { |
4497 | | /* 2.2.1.27 CAggregSortKey */ |
4498 | 0 | offset = parse_CAggregSortKey(tvb, offset, tree, pad_tree, wmem_strdup_printf(pinfo->pool, "SortKeys[%u]", i)); |
4499 | 0 | } |
4500 | |
|
4501 | 0 | proto_item_set_end(item, tvb, offset); |
4502 | 0 | return offset; |
4503 | 0 | } |
4504 | | |
4505 | | enum CInGroupSortAggregSet_type { |
4506 | | GroupIdDefault = 0x00, /* The default for all ranges. */ |
4507 | | GroupIdMinValue = 0x01, /*The first range in the parent's group.*/ |
4508 | | GroupIdNull = 0x02, /*The last range in the parent's group.*/ |
4509 | | GroupIdValue = 0x03 |
4510 | | }; |
4511 | | |
4512 | | static int parse_CInGroupSortAggregSet_type(tvbuff_t *tvb, int offset, proto_tree *tree, enum CInGroupSortAggregSet_type *type) |
4513 | 0 | { |
4514 | 0 | uint8_t tmp = tvb_get_uint8(tvb, offset); |
4515 | 0 | switch(tmp) { |
4516 | 0 | case GroupIdDefault: |
4517 | 0 | *type = GroupIdDefault; |
4518 | 0 | break; |
4519 | 0 | case GroupIdMinValue: |
4520 | 0 | *type = GroupIdMinValue; |
4521 | 0 | break; |
4522 | 0 | case GroupIdNull: |
4523 | 0 | *type = GroupIdNull; |
4524 | 0 | break; |
4525 | 0 | case GroupIdValue: |
4526 | 0 | *type = GroupIdValue; |
4527 | 0 | break; |
4528 | 0 | default: |
4529 | 0 | DISSECTOR_ASSERT(false); |
4530 | 0 | break; |
4531 | 0 | } |
4532 | 0 | proto_tree_add_uint(tree, hf_mswsp_cingroupsortaggregset_type, tvb, offset, 1, *type); |
4533 | 0 | return offset + 1; |
4534 | 0 | } |
4535 | | |
4536 | | /* 2.2.1.29 CInGroupSortAggregSet */ |
4537 | | static int parse_CInGroupSortAggregSet(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
4538 | 0 | { |
4539 | 0 | proto_item *item; |
4540 | 0 | proto_tree *tree; |
4541 | 0 | enum CInGroupSortAggregSet_type type; |
4542 | |
|
4543 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CInGroupSortAggregSet, &item, txt); |
4544 | |
|
4545 | 0 | offset = parse_CInGroupSortAggregSet_type(tvb, offset, tree, &type); |
4546 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, "CInGroupSortAggregSet"); |
4547 | |
|
4548 | 0 | if (type == GroupIdValue) { |
4549 | 0 | struct CBaseStorageVariant id; |
4550 | 0 | offset = parse_CBaseStorageVariant(tvb, pinfo, offset, tree, pad_tree, &id, "inGroupId"); |
4551 | 0 | } |
4552 | |
|
4553 | 0 | offset = parse_CSortSet(tvb, pinfo, offset, tree, pad_tree, "SortSet"); |
4554 | |
|
4555 | 0 | proto_item_set_end(item, tvb, offset); |
4556 | 0 | return offset; |
4557 | 0 | } |
4558 | | |
4559 | | |
4560 | | /* 2.2.1.28 CInGroupSortAggregSets */ |
4561 | | static int parse_CInGroupSortAggregSets(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
4562 | 0 | { |
4563 | 0 | uint32_t cCount, i; |
4564 | 0 | proto_item *item; |
4565 | 0 | proto_tree *tree; |
4566 | |
|
4567 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CInGroupSortAggregSets, &item, txt); |
4568 | |
|
4569 | 0 | cCount = tvb_get_letohl(tvb, offset); |
4570 | 0 | proto_tree_add_uint(tree, hf_mswsp_cingroupsortaggregsets_count, tvb, offset, 4, cCount); |
4571 | 0 | offset += 4; |
4572 | |
|
4573 | 0 | for (i=0; i<cCount; i++) { |
4574 | | /* 2.2.1.29 CInGroupSortAggregSet */ |
4575 | 0 | offset = parse_CInGroupSortAggregSet(tvb, pinfo, offset, tree, pad_tree, wmem_strdup_printf(pinfo->pool, "SortSets[%u]", i)); |
4576 | 0 | } |
4577 | |
|
4578 | 0 | proto_item_set_end(item, tvb, offset); |
4579 | 0 | return offset; |
4580 | 0 | } |
4581 | | |
4582 | | /* 2.2.1.20 CCategorizationSpec */ |
4583 | | static int parse_CCategorizationSpec(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
4584 | 0 | { |
4585 | 0 | proto_item *item; |
4586 | 0 | proto_tree *tree; |
4587 | |
|
4588 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CCategorizationSpec, &item, txt); |
4589 | | |
4590 | | /* 2.2.1.18 CColumnSet */ |
4591 | 0 | offset = parse_CColumnSet(tvb, offset, tree, "csColumns"); |
4592 | | |
4593 | | /* 2.2.1.21 CCategSpec */ |
4594 | 0 | offset = parse_CCategSpec(tvb, pinfo, offset, tree, pad_tree, "Spec"); |
4595 | | |
4596 | | /* 2.2.1.24 CAggregSet */ |
4597 | 0 | offset = parse_CAggregSet(tvb, pinfo, offset, tree, pad_tree, "AggregSet"); |
4598 | | |
4599 | | /* 2.2.1.26 CSortAggregSet */ |
4600 | 0 | offset = parse_CSortAggregSet(tvb, pinfo, offset, tree, pad_tree, "SortAggregSet"); |
4601 | | |
4602 | | /* 2.2.1.28 CInGroupSortAggregSets */ |
4603 | 0 | offset = parse_CInGroupSortAggregSets(tvb, pinfo, offset, tree, pad_tree, "InGroupSortAggregSets"); |
4604 | |
|
4605 | 0 | proto_tree_add_item(tree, hf_mswsp_categorizationspec_cmaxres, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4606 | 0 | offset += 4; |
4607 | |
|
4608 | 0 | proto_item_set_end(item, tvb, offset); |
4609 | 0 | return offset; |
4610 | 0 | } |
4611 | | |
4612 | | static int * const mswsp_bool_options[] = { |
4613 | | &hf_mswsp_bool_options_cursor, |
4614 | | &hf_mswsp_bool_options_async, |
4615 | | &hf_mswsp_bool_options_firstrows, |
4616 | | &hf_mswsp_bool_options_holdrows, |
4617 | | &hf_mswsp_bool_options_chaptered, |
4618 | | &hf_mswsp_bool_options_useci, |
4619 | | &hf_mswsp_bool_options_defertrim, |
4620 | | &hf_mswsp_bool_options_rowsetevents, |
4621 | | &hf_mswsp_bool_options_dontcomputeexpensive, |
4622 | | NULL |
4623 | | }; |
4624 | | |
4625 | | static int parse_CRowsetProperties(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree _U_, const char *txt) |
4626 | 0 | { |
4627 | 0 | proto_item *item; |
4628 | 0 | proto_tree *tree; |
4629 | |
|
4630 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CRowsetProperties, &item, txt); |
4631 | |
|
4632 | 0 | proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_mswsp_bool_options, ett_mswsp_bool_options, mswsp_bool_options, ENC_LITTLE_ENDIAN, BMT_NO_APPEND); |
4633 | 0 | offset += 4; |
4634 | |
|
4635 | 0 | proto_tree_add_item(tree, hf_mswsp_crowsetprops_ulmaxopenrows, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4636 | 0 | offset += 4; |
4637 | |
|
4638 | 0 | proto_tree_add_item(tree, hf_mswsp_crowsetprops_ulmemusage, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4639 | 0 | offset += 4; |
4640 | |
|
4641 | 0 | proto_tree_add_item(tree, hf_mswsp_crowsetprops_cmaxresults, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4642 | 0 | offset += 4; |
4643 | |
|
4644 | 0 | proto_tree_add_item(tree, hf_mswsp_crowsetprops_ccmdtimeout, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4645 | 0 | offset += 4; |
4646 | |
|
4647 | 0 | proto_item_set_end(item, tvb, offset); |
4648 | 0 | return offset; |
4649 | 0 | } |
4650 | | |
4651 | | static int parse_CPidMapper(tvbuff_t *tvb, packet_info* pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
4652 | 0 | { |
4653 | 0 | proto_item *item; |
4654 | 0 | proto_tree *tree; |
4655 | 0 | uint32_t count, i; |
4656 | |
|
4657 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CPidMapper, &item, txt); |
4658 | |
|
4659 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_cpidmapper_count, tvb, offset, 4, ENC_LITTLE_ENDIAN, &count); |
4660 | 0 | offset += 4; |
4661 | |
|
4662 | 0 | offset = parse_padding(tvb, offset, 8, pad_tree, "CPidMapper_PropSpec"); |
4663 | |
|
4664 | 0 | for (i=0; i<count; i++) { |
4665 | 0 | struct CFullPropSpec v; |
4666 | 0 | ZERO_STRUCT(v); |
4667 | | /*at begin or end of loop???*/ |
4668 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, |
4669 | 0 | wmem_strdup_printf(pinfo->pool, "CPidMapper_PropSpec[%u]", i)); |
4670 | 0 | offset = parse_CFullPropSpec(tvb, pinfo, offset, tree, pad_tree, &v, |
4671 | 0 | wmem_strdup_printf(pinfo->pool, "PropSpec[%u]", i)); |
4672 | 0 | } |
4673 | |
|
4674 | 0 | proto_item_set_end(item, tvb, offset); |
4675 | 0 | return offset; |
4676 | 0 | } |
4677 | | |
4678 | | /* 2.2.1.35 CColumnGroup */ |
4679 | | static int parse_CColumnGroup(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree _U_, const char *txt) |
4680 | 0 | { |
4681 | 0 | proto_tree *tree; |
4682 | 0 | proto_item *item, *ti; |
4683 | 0 | uint32_t count, groupPid, i; |
4684 | |
|
4685 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CColumnGroup, &item, txt); |
4686 | |
|
4687 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_ccolumngroup_count, tvb, offset, 4, ENC_LITTLE_ENDIAN, &count); |
4688 | 0 | offset += 4; |
4689 | |
|
4690 | 0 | ti = proto_tree_add_item_ret_uint(tree, hf_mswsp_ccolumngroup_grouppid, tvb, offset, 4, ENC_LITTLE_ENDIAN, &groupPid); |
4691 | 0 | if ((0xFFFF0000 & groupPid) == 0x7FFF0000) { |
4692 | 0 | proto_item_append_text(ti, " Idx: %u", groupPid & 0xFFFF); |
4693 | 0 | } else { |
4694 | 0 | proto_item_append_text(ti, "<Invalid>"); |
4695 | 0 | } |
4696 | 0 | offset += 4; |
4697 | |
|
4698 | 0 | for (i=0; i<count; i++) { |
4699 | | /* 2.2.1.36 SProperty */ |
4700 | 0 | uint32_t pid, weight; |
4701 | 0 | pid = tvb_get_letohl(tvb, offset); |
4702 | 0 | weight = tvb_get_letohl(tvb, offset + 4); |
4703 | 0 | proto_tree_add_uint_format(tree, hf_mswsp_ccolumngroup_pid, tvb, offset, 8, pid, "Props[%u]: pid: %u weight: %u", i, pid, weight); |
4704 | 0 | offset += 8; |
4705 | 0 | } |
4706 | |
|
4707 | 0 | proto_item_set_end(item, tvb, offset); |
4708 | 0 | return offset; |
4709 | 0 | } |
4710 | | |
4711 | | /* 2.2.1.34 CColumnGroupArray */ |
4712 | | static int parse_CColumnGroupArray(tvbuff_t *tvb, packet_info* pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *txt) |
4713 | 0 | { |
4714 | 0 | proto_tree *tree; |
4715 | 0 | proto_item *item; |
4716 | 0 | uint32_t count, i; |
4717 | |
|
4718 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CColumnGroupArray, &item, txt); |
4719 | |
|
4720 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_ccolumngrouparray_count, tvb, offset, 4, ENC_LITTLE_ENDIAN, &count); |
4721 | 0 | offset += 4; |
4722 | |
|
4723 | 0 | for (i=0; i<count; i++) { |
4724 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, wmem_strdup_printf(pinfo->pool, "aGroupArray[%u]", i)); |
4725 | 0 | offset = parse_CColumnGroup(tvb, offset, tree, pad_tree, wmem_strdup_printf(pinfo->pool, "aGroupArray[%u]", i)); |
4726 | 0 | } |
4727 | |
|
4728 | 0 | proto_item_set_end(item, tvb, offset); |
4729 | 0 | return offset; |
4730 | 0 | } |
4731 | | |
4732 | | static int parse_UInt32Array(tvbuff_t *tvb, int offset, proto_tree *parent_tree, uint32_t count, const char *item_name, const char *txt) |
4733 | 0 | { |
4734 | 0 | uint32_t v, i; |
4735 | 0 | proto_tree *tree; |
4736 | 0 | proto_item *item; |
4737 | |
|
4738 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_Array, &item, txt); |
4739 | |
|
4740 | 0 | for (i=0; i<count; i++) { |
4741 | 0 | v = tvb_get_letohl(tvb, offset); |
4742 | 0 | proto_tree_add_uint_format(tree, hf_mswsp_int32array_value, tvb, offset, 4, v, "%s[%u] = %u", item_name,i, v); |
4743 | 0 | offset += 4; |
4744 | 0 | } |
4745 | 0 | proto_item_set_end(item, tvb, offset); |
4746 | 0 | return offset; |
4747 | 0 | } |
4748 | | |
4749 | | /* 2.2.1.40 CRowSeekNext */ |
4750 | | static int parse_CRowSeekNext(tvbuff_t *tvb, int offset, proto_tree *parent_tree, const char *txt) |
4751 | 0 | { |
4752 | 0 | proto_tree *tree; |
4753 | 0 | proto_item *item; |
4754 | |
|
4755 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CRowsSeekNext, &item, txt); |
4756 | |
|
4757 | 0 | proto_tree_add_item(tree, hf_mswsp_crowseeknext_cskip, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4758 | 0 | offset += 4; |
4759 | 0 | proto_item_set_end(item, tvb, offset); |
4760 | 0 | return offset; |
4761 | 0 | } |
4762 | | |
4763 | | |
4764 | | /* 2.2.1.37 CRowSeekAt */ |
4765 | | static int parse_CRowSeekAt(tvbuff_t *tvb, int offset, proto_tree *parent_tree, const char *txt) |
4766 | 0 | { |
4767 | 0 | proto_tree *tree; |
4768 | 0 | proto_item *item; |
4769 | |
|
4770 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CRowsSeekAt, &item, txt); |
4771 | |
|
4772 | 0 | proto_tree_add_item(tree, hf_mswsp_crowseekat_bmkoffset, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4773 | 0 | offset += 4; |
4774 | |
|
4775 | 0 | proto_tree_add_item(tree, hf_mswsp_crowseekat_skip, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4776 | 0 | offset += 4; |
4777 | |
|
4778 | 0 | proto_tree_add_item(tree, hf_mswsp_crowseekat_hregion, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4779 | 0 | offset += 4; |
4780 | |
|
4781 | 0 | proto_item_set_end(item, tvb, offset); |
4782 | 0 | return offset; |
4783 | 0 | } |
4784 | | |
4785 | | /* 2.2.1.38 CRowSeekAtRatio */ |
4786 | | static int parse_CRowSeekAtRatio(tvbuff_t *tvb, int offset, proto_tree *parent_tree, const char *txt) |
4787 | 0 | { |
4788 | 0 | proto_tree *tree; |
4789 | 0 | proto_item *item; |
4790 | |
|
4791 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CRowsSeekAtRatio, &item, txt); |
4792 | |
|
4793 | 0 | proto_tree_add_item(tree, hf_mswsp_crowseekatratio_ulnumerator, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4794 | 0 | offset += 4; |
4795 | |
|
4796 | 0 | proto_tree_add_item(tree, hf_mswsp_crowseekatratio_uldenominator, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4797 | 0 | offset += 4; |
4798 | |
|
4799 | 0 | proto_tree_add_item(tree, hf_mswsp_crowseekatratio_hregion, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4800 | 0 | offset += 4; |
4801 | |
|
4802 | 0 | proto_item_set_end(item, tvb, offset); |
4803 | 0 | return offset; |
4804 | 0 | } |
4805 | | |
4806 | | /* 2.2.1.39 CRowSeekByBookmark */ |
4807 | | static int parse_CRowSeekByBookmark(tvbuff_t *tvb, int offset, proto_tree *parent_tree, const char *txt) |
4808 | 0 | { |
4809 | 0 | proto_tree *tree; |
4810 | 0 | proto_item *item; |
4811 | 0 | uint32_t num; |
4812 | |
|
4813 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CRowsSeekByBookmark, &item, txt); |
4814 | |
|
4815 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_crowseekbybookmark_cbookmarks, tvb, offset, 4, ENC_LITTLE_ENDIAN, &num); |
4816 | 0 | offset += 4; |
4817 | |
|
4818 | 0 | offset = parse_UInt32Array(tvb, offset, tree, num, "abookmark", "abookmarks"); |
4819 | |
|
4820 | 0 | proto_tree_add_item_ret_uint(tree, hf_mswsp_crowseekbybookmark_maxret, tvb, offset, 4, ENC_LITTLE_ENDIAN, &num); |
4821 | 0 | offset += 4; |
4822 | |
|
4823 | 0 | offset = parse_UInt32Array(tvb, offset, tree, num, "ascret", "ascret"); |
4824 | |
|
4825 | 0 | proto_item_set_end(item, tvb, offset); |
4826 | 0 | return offset; |
4827 | 0 | } |
4828 | | |
4829 | | static int get_fixed_vtype_dataize(enum vType vtype) |
4830 | 0 | { |
4831 | 0 | struct vtype_data *vt_type = vType_get_type(vtype); |
4832 | 0 | if (vt_type) { |
4833 | 0 | return vt_type->size; |
4834 | 0 | } |
4835 | 0 | return -1; |
4836 | 0 | } |
4837 | | |
4838 | | static int parse_CRowVariantArrayInfo(tvbuff_t *tvb, int offset, proto_tree *tree, bool is_64bit, struct CRowVariant *variant) |
4839 | 0 | { |
4840 | 0 | if (is_64bit) { |
4841 | 0 | variant->content.array_vector.i64.count = |
4842 | 0 | tvb_get_letoh64(tvb, offset); |
4843 | 0 | proto_tree_add_uint64(tree, hf_mswsp_crowvariantinfo_count64, tvb, offset, 8, variant->content.array_vector.i64.count); |
4844 | 0 | offset += 8; |
4845 | 0 | variant->content.array_vector.i64.array_address = tvb_get_letoh64(tvb, offset); |
4846 | 0 | proto_tree_add_uint64(tree, hf_mswsp_arrayvector_address64, tvb, offset, 8, variant->content.array_vector.i64.array_address); |
4847 | 0 | offset += 8; |
4848 | |
|
4849 | 0 | } else { |
4850 | 0 | variant->content.array_vector.i32.count = |
4851 | 0 | tvb_get_letohl(tvb, offset); |
4852 | 0 | proto_tree_add_uint(tree, hf_mswsp_crowvariantinfo_count32, tvb, offset, 4, variant->content.array_vector.i32.count ); |
4853 | 0 | offset += 4; |
4854 | 0 | variant->content.array_vector.i32.array_address = tvb_get_letohl(tvb, offset); |
4855 | 0 | proto_tree_add_uint(tree, hf_mswsp_arrayvector_address32, tvb, offset, 4, variant->content.array_vector.i32.array_address); |
4856 | 0 | offset += 4; |
4857 | 0 | } |
4858 | 0 | return offset; |
4859 | 0 | } |
4860 | | |
4861 | | static int parse_VariantColVector(tvbuff_t *tvb, packet_info* pinfo, int offset, proto_tree *tree, uint64_t base_address, bool is_64bit, struct CRowVariant *variant, struct vtype_data *vt_list_type) |
4862 | 0 | { |
4863 | 0 | uint32_t i = 0; |
4864 | 0 | uint64_t count = 0; |
4865 | 0 | int buf_offset = 0; |
4866 | 0 | proto_tree *sub_tree; |
4867 | 0 | wmem_strbuf_t *strbuf; |
4868 | |
|
4869 | 0 | offset = parse_CRowVariantArrayInfo(tvb, offset, tree, is_64bit, variant); |
4870 | 0 | if (is_64bit) { |
4871 | 0 | buf_offset = |
4872 | 0 | (int)(variant->content.array_vector.i64.array_address - base_address); |
4873 | 0 | count = variant->content.array_vector.i64.count; |
4874 | 0 | } else { |
4875 | 0 | buf_offset = |
4876 | 0 | (int)(variant->content.array_vector.i32.array_address - base_address); |
4877 | 0 | count = variant->content.array_vector.i32.count; |
4878 | 0 | } |
4879 | 0 | sub_tree = proto_tree_add_subtree(tree, tvb, buf_offset, 0, ett_CRowVariant_Vector, NULL, "values"); |
4880 | 0 | for (i = 0; i < count; i++) { |
4881 | 0 | uint64_t item_address = 0; |
4882 | 0 | int address_of_address = 0; |
4883 | 0 | int size; |
4884 | 0 | union vt_single value; |
4885 | 0 | int len; |
4886 | 0 | if (is_64bit) { |
4887 | 0 | size = 8; |
4888 | 0 | address_of_address = buf_offset + (i * size); |
4889 | 0 | item_address = tvb_get_letoh64(tvb, address_of_address); |
4890 | 0 | proto_tree_add_uint64_format(sub_tree, hf_mswsp_rowvariant_item_address64, tvb, address_of_address, size, item_address, "address[%d] 0x%" PRIx64, i, item_address); |
4891 | 0 | } else { |
4892 | 0 | size = 4; |
4893 | 0 | item_address = tvb_get_letohl(tvb, buf_offset + (i * size)); |
4894 | 0 | proto_tree_add_uint_format(sub_tree, hf_mswsp_rowvariant_item_address32, tvb, address_of_address, size, (uint32_t)item_address, "address[%d] 0x%x", i, (uint32_t)item_address); |
4895 | 0 | } |
4896 | 0 | strbuf = wmem_strbuf_new(pinfo->pool, ""); |
4897 | 0 | if (vt_list_type->size == -1) { |
4898 | | /* dynamic type */ |
4899 | 0 | DISSECTOR_ASSERT_HINT(vt_list_type->tvb_get_value_only != 0, |
4900 | 0 | "appears this is a vector of dynamic types that we don't know yet how to handle, please submit a bug with trace"); |
4901 | 0 | len = vt_list_type->tvb_get_value_only(tvb, pinfo, (int)(item_address - base_address), 0, &value); |
4902 | 0 | vt_list_type->strbuf_append(strbuf, &value); |
4903 | 0 | } else { |
4904 | | /* |
4905 | | * assume non dynamic size types are stored directly. |
4906 | | * Note: not test as not seen in the wild. |
4907 | | */ |
4908 | 0 | len = vt_list_type->size; |
4909 | 0 | DISSECTOR_ASSERT_HINT(vt_list_type->tvb_get != 0, |
4910 | 0 | "appears this is a vector of fixed types that we don't know yet how to handle, please submit a bug with trace"); |
4911 | |
|
4912 | 0 | vt_list_type->tvb_get(tvb, pinfo, (int)(item_address - base_address), &value); |
4913 | 0 | vt_list_type->strbuf_append(strbuf, &value); |
4914 | 0 | } |
4915 | 0 | proto_tree_add_string(sub_tree, hf_mswsp_rowvariant_item_value, tvb, (int)(item_address - base_address), len, wmem_strbuf_get_str(strbuf)); |
4916 | 0 | } |
4917 | 0 | return offset; |
4918 | 0 | } |
4919 | | |
4920 | | static int parse_VariantCol(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, uint64_t base_address, uint32_t length _U_, bool is_64bit, struct CRowVariant *variant, const char *txt) |
4921 | 0 | { |
4922 | 0 | proto_tree *tree; |
4923 | 0 | proto_item *item, *ti_type; |
4924 | |
|
4925 | 0 | struct vtype_data *vt_type; |
4926 | 0 | const char *modifier = ""; |
4927 | 0 | int size; |
4928 | 0 | uint16_t vtype_high; |
4929 | |
|
4930 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CRowVariant, &item, txt); |
4931 | |
|
4932 | 0 | variant->vtype = tvb_get_letohs(tvb, offset); |
4933 | 0 | vt_type = vType_get_type((enum vType)variant->vtype); |
4934 | 0 | vtype_high = (variant->vtype & 0xFF00); |
4935 | 0 | if (vtype_high) { |
4936 | 0 | if (vtype_high == VT_VECTOR) { |
4937 | 0 | modifier = "|VT_VECTOR"; |
4938 | 0 | } else if (vtype_high == VT_ARRAY) { |
4939 | 0 | modifier = "|VT_ARRAY"; |
4940 | 0 | } else { |
4941 | 0 | modifier = "|Unknown, possibly error"; |
4942 | 0 | } |
4943 | 0 | } |
4944 | |
|
4945 | 0 | if (vt_type == NULL) { |
4946 | | /* |
4947 | | * Not a valid type. |
4948 | | */ |
4949 | 0 | ti_type = proto_tree_add_string(tree, hf_mswsp_ctablecolumn_vtype, tvb, offset, 4, "Unknown variant column type"); |
4950 | 0 | expert_add_info(pinfo, ti_type, &ei_mswsp_invalid_variant_type); |
4951 | |
|
4952 | 0 | THROW_FORMATTED(ReportedBoundsError, "Unknown variant column type%s", modifier); |
4953 | 0 | return offset; |
4954 | 0 | } |
4955 | 0 | proto_tree_add_string_format_value(tree, hf_mswsp_rowvariant_vtype, tvb, offset, 2, vt_type->str, "%s%s", vt_type->str, modifier); |
4956 | 0 | offset += 2; |
4957 | |
|
4958 | 0 | proto_tree_add_item(tree, hf_mswsp_rowvariant_reserved1, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4959 | 0 | variant->reserved1 = tvb_get_letohs(tvb, offset); |
4960 | |
|
4961 | 0 | offset += 2; |
4962 | 0 | proto_tree_add_item(tree, hf_mswsp_rowvariant_reserved2, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4963 | 0 | variant->reserved2 = tvb_get_letohl(tvb, offset); |
4964 | 0 | offset += 4; |
4965 | |
|
4966 | 0 | size = get_fixed_vtype_dataize((enum vType)(variant->vtype & 0x00FF)); |
4967 | |
|
4968 | 0 | if (vtype_high == VT_VECTOR || vtype_high == VT_ARRAY) { |
4969 | 0 | offset = parse_VariantColVector(tvb, pinfo, offset, tree, base_address, |
4970 | 0 | is_64bit, variant, vt_type); |
4971 | 0 | } else { |
4972 | 0 | wmem_strbuf_t *strbuf = wmem_strbuf_new(pinfo->pool, ""); |
4973 | 0 | if (size != -1) { |
4974 | | /* single fixed size value type */ |
4975 | 0 | const char* desc = vt_type->str; |
4976 | |
|
4977 | 0 | DISSECTOR_ASSERT_HINT(vt_type->tvb_get != 0, |
4978 | 0 | "appears fixed type that we don't know yet how to handle, please submit a bug with trace"); |
4979 | 0 | vt_type->tvb_get(tvb, pinfo, offset, &variant->content); |
4980 | 0 | vt_type->strbuf_append(strbuf, &variant->content); |
4981 | 0 | proto_tree_add_string_format_value(tree, hf_mswsp_rowvariant_item_value, tvb, offset, size, desc, "%s: %s", desc, wmem_strbuf_get_str(strbuf)); |
4982 | 0 | } else { |
4983 | 0 | int64_t value_address; |
4984 | 0 | int buf_offset = offset; |
4985 | 0 | int len; |
4986 | 0 | union vt_single non_fixed_size_val; |
4987 | 0 | DISSECTOR_ASSERT_HINT(vt_type->tvb_get_value_only != 0, "appears this is a dynamic type that we don't know yet how to handle, please submit a bug with network trace"); |
4988 | 0 | if (is_64bit) { |
4989 | 0 | variant->content.hyperw = tvb_get_letoh64(tvb, offset); |
4990 | 0 | offset += 8; |
4991 | 0 | value_address = variant->content.hyperw; |
4992 | 0 | proto_tree_add_uint64(tree, hf_mswsp_rowvariant_item_address64, tvb, buf_offset, 8, value_address); |
4993 | 0 | } else { |
4994 | 0 | variant->content.longw = tvb_get_letohl(tvb, offset); |
4995 | 0 | offset += 4; |
4996 | 0 | value_address = variant->content.longw; |
4997 | 0 | proto_tree_add_uint(tree, hf_mswsp_rowvariant_item_address32, tvb, buf_offset, 4, (uint32_t)value_address); |
4998 | 0 | } |
4999 | |
|
5000 | 0 | len = vt_type->tvb_get_value_only(tvb, pinfo, (int)(value_address - base_address), 0, &non_fixed_size_val); |
5001 | 0 | vt_type->strbuf_append(strbuf, &non_fixed_size_val); |
5002 | 0 | proto_tree_add_string(tree, hf_mswsp_rowvariant_item_value, tvb, (int)(value_address - base_address), len, wmem_strbuf_get_str(strbuf)); |
5003 | 0 | } |
5004 | 0 | } |
5005 | |
|
5006 | 0 | return offset; |
5007 | 0 | } |
5008 | | |
5009 | | static const value_string STATUS[] = { |
5010 | | {0, "StoreStatusOk"}, |
5011 | | {1, "StoreStatusDeferred"}, |
5012 | | {2, "StoreStatusNull"}, |
5013 | | {0, NULL} |
5014 | | }; |
5015 | | |
5016 | | static int parse_RowsBufferCol(tvbuff_t *tvb, packet_info *pinfo, int offset, uint32_t row, uint32_t col, struct CPMSetBindingsIn *bindingsin, struct rows_data *rowsin, bool b_is_64bit, proto_tree *parent_tree, const char *txt) |
5017 | 0 | { |
5018 | 0 | proto_tree *tree; |
5019 | 0 | proto_item *item; |
5020 | 0 | uint32_t buf_start = offset; |
5021 | 0 | uint32_t buf_offset = buf_start + (row * bindingsin->brow); |
5022 | 0 | struct CTableColumn *pcol = &bindingsin->acolumns[col]; |
5023 | |
|
5024 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_GetRowsColumn, &item, txt); |
5025 | 0 | proto_item_append_text(item, " (%s)", pcol->name); |
5026 | 0 | if (pcol->statusused) { |
5027 | 0 | int tmp_offset = buf_offset + pcol->statusoffset; |
5028 | 0 | proto_tree_add_item(tree, hf_mswsp_ctablecolumn_status, tvb, tmp_offset, 1, ENC_NA); |
5029 | 0 | } |
5030 | 0 | if (pcol->lengthused) { |
5031 | 0 | int tmp_offset = buf_offset + pcol->lengthoffset; |
5032 | 0 | proto_tree_add_item(tree, hf_mswsp_ctablecolumn_length, tvb, tmp_offset, 1, ENC_LITTLE_ENDIAN); |
5033 | 0 | } |
5034 | 0 | if (pcol->valueused) { |
5035 | 0 | int tmp_offset = buf_offset + pcol->valueoffset; |
5036 | 0 | struct CRowVariant variant; |
5037 | 0 | uint32_t len = pcol->valuesize; |
5038 | 0 | uint64_t base_address = rowsin->ulclientbase;/*( + rowsin->cbreserved;*/ |
5039 | 0 | ZERO_STRUCT(variant); |
5040 | |
|
5041 | 0 | if (pcol->lengthused) { |
5042 | 0 | len = tvb_get_letohs(tvb, buf_offset + pcol->lengthoffset) - pcol->valuesize; |
5043 | 0 | } |
5044 | 0 | if (pcol->vtype == VT_VARIANT) { |
5045 | 0 | parse_VariantCol(tvb, pinfo, tmp_offset, tree, base_address, len, b_is_64bit, &variant, "CRowVariant"); |
5046 | 0 | } |
5047 | 0 | } |
5048 | 0 | return offset; |
5049 | 0 | } |
5050 | | |
5051 | | static int parse_RowsBuffer(tvbuff_t *tvb, packet_info *pinfo, int offset, uint32_t num_rows, struct CPMSetBindingsIn *bindingsin, struct rows_data *rowsin, bool is64bit, proto_tree *parent_tree, const char *txt) |
5052 | 0 | { |
5053 | 0 | proto_tree *tree; |
5054 | 0 | proto_item *item; |
5055 | 0 | uint32_t num; |
5056 | |
|
5057 | 0 | tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_GetRowsRow, &item, txt); |
5058 | |
|
5059 | 0 | for (num = 0; num < num_rows; ++num) { |
5060 | 0 | uint32_t col; |
5061 | 0 | proto_tree *row_tree; |
5062 | 0 | row_tree = proto_tree_add_subtree_format(tree, tvb, offset, 0, ett_GetRowsRow, NULL, "Row[%d]", num); |
5063 | 0 | for (col = 0; col < bindingsin->ccolumns; col++) { |
5064 | 0 | parse_RowsBufferCol(tvb, pinfo, offset, num, col, bindingsin, rowsin, is64bit, row_tree, wmem_strdup_printf(pinfo->pool, "Col[%d]", col)); |
5065 | 0 | } |
5066 | 0 | } |
5067 | 0 | return offset; |
5068 | 0 | } |
5069 | | /* Code to actually dissect the packets */ |
5070 | | |
5071 | | static int dissect_CPMConnect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *private_data) |
5072 | 0 | { |
5073 | 0 | proto_item *ti; |
5074 | 0 | proto_tree *tree; |
5075 | 0 | int offset = 16; |
5076 | 0 | unsigned len; |
5077 | 0 | uint32_t version; |
5078 | 0 | struct message_data *data = NULL; |
5079 | 0 | struct mswsp_ct *ct = NULL; |
5080 | |
|
5081 | 0 | ti = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, -1, ENC_NA); |
5082 | 0 | tree = proto_item_add_subtree(ti, ett_mswsp_msg); |
5083 | 0 | proto_item_set_text(ti, "CPMConnect%s", in ? "In" : "Out"); |
5084 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Connect"); |
5085 | |
|
5086 | 0 | ti = proto_tree_add_item_ret_uint(tree, hf_mswsp_msg_Connect_Version, tvb, |
5087 | 0 | offset, 4, ENC_LITTLE_ENDIAN, &version); |
5088 | |
|
5089 | 0 | ct = get_create_converstation_data(pinfo); |
5090 | |
|
5091 | 0 | if (ct) { |
5092 | 0 | data = find_or_create_message_data(ct, pinfo, 0xC8, in, private_data); |
5093 | 0 | if (data) { |
5094 | 0 | data->content.version = version; |
5095 | 0 | } |
5096 | 0 | } |
5097 | 0 | offset += 4; |
5098 | |
|
5099 | 0 | if (in) { |
5100 | 0 | uint32_t blob_size1_off, blob_size2_off; |
5101 | 0 | proto_tree *pad_tree; |
5102 | |
|
5103 | 0 | pad_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_mswsp_pad, &ti, "Padding"); |
5104 | |
|
5105 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_ConnectIn_ClientIsRemote, tvb, |
5106 | 0 | offset, 4, ENC_LITTLE_ENDIAN); |
5107 | 0 | offset += 4; |
5108 | | |
5109 | | /* _cbBlob1 */ |
5110 | 0 | blob_size1_off = offset; |
5111 | 0 | offset += 4; |
5112 | |
|
5113 | 0 | offset = parse_padding(tvb, offset, 8, pad_tree, "_paddingcbBlob2"); |
5114 | | |
5115 | | /* _cbBlob2 */ |
5116 | 0 | blob_size2_off = offset; |
5117 | 0 | offset += 4; |
5118 | |
|
5119 | 0 | offset = parse_padding(tvb, offset, 16, pad_tree, "_padding"); |
5120 | |
|
5121 | 0 | len = tvb_unicode_strsize(tvb, offset); |
5122 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_ConnectIn_MachineName, tvb, |
5123 | 0 | offset, len, ENC_LITTLE_ENDIAN | ENC_UCS_2); |
5124 | 0 | offset += len; |
5125 | |
|
5126 | 0 | len = tvb_unicode_strsize(tvb, offset); |
5127 | 0 | ti = proto_tree_add_item(tree, hf_mswsp_msg_ConnectIn_UserName, tvb, |
5128 | 0 | offset, len, ENC_LITTLE_ENDIAN | ENC_UCS_2); |
5129 | 0 | offset += len; |
5130 | |
|
5131 | 0 | offset = parse_padding(tvb, offset, 8, pad_tree, "_paddingcPropSets"); |
5132 | |
|
5133 | 0 | offset = parse_PropertySetArray(tvb, pinfo, offset, blob_size1_off, tree, pad_tree, "PropSets"); |
5134 | |
|
5135 | 0 | offset = parse_padding(tvb, offset, 8, pad_tree, "paddingExtPropset"); |
5136 | |
|
5137 | 0 | offset = parse_PropertySetArray(tvb, pinfo, offset, blob_size2_off, tree, pad_tree, "ExtPropset"); |
5138 | |
|
5139 | 0 | offset = parse_padding(tvb, offset, 8, pad_tree, "???"); |
5140 | |
|
5141 | 0 | DISSECTOR_ASSERT(offset == (int)tvb_reported_length(tvb)); |
5142 | | |
5143 | | /* make "Padding" the last item */ |
5144 | 0 | proto_tree_move_item(tree, ti, proto_tree_get_parent(pad_tree)); |
5145 | 0 | } else { |
5146 | |
|
5147 | 0 | } |
5148 | 0 | return tvb_reported_length(tvb); |
5149 | 0 | } |
5150 | | |
5151 | | static int dissect_CPMDisconnect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, bool in _U_, void *data _U_) |
5152 | 0 | { |
5153 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Disconnect"); |
5154 | 0 | return tvb_reported_length(tvb); |
5155 | 0 | } |
5156 | | |
5157 | | static int dissect_CPMCreateQuery(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *data _U_) |
5158 | 0 | { |
5159 | 0 | int offset = 16; |
5160 | 0 | proto_item *item; |
5161 | 0 | proto_tree *tree; |
5162 | |
|
5163 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, -1, ENC_NA); |
5164 | 0 | tree = proto_item_add_subtree(item, ett_mswsp_msg); |
5165 | |
|
5166 | 0 | proto_item_set_text(item, "CPMCreateQuery%s", in ? "In" : "Out"); |
5167 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "CreateQuery"); |
5168 | |
|
5169 | 0 | if (in) { |
5170 | 0 | proto_item *ti; |
5171 | 0 | proto_tree *pad_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_mswsp_pad, &ti, "Padding"); |
5172 | 0 | uint8_t CColumnSetPresent, CRestrictionPresent, CSortSetPresent, CCategorizationSetPresent; |
5173 | 0 | uint32_t size = tvb_get_letohl(tvb, offset); |
5174 | 0 | proto_tree_add_uint(tree, hf_mswsp_msg_cpmcreatequery_size, tvb, offset, 4, size); |
5175 | 0 | offset += 4; |
5176 | |
|
5177 | 0 | CColumnSetPresent = tvb_get_uint8(tvb, offset); |
5178 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcreatequery_ccolumnsetpresent, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
5179 | 0 | offset += 1; |
5180 | |
|
5181 | 0 | if (CColumnSetPresent) { |
5182 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, "paddingCColumnSetPresent"); |
5183 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, "paddingCColumnSetPresent"); |
5184 | 0 | offset = parse_CColumnSet(tvb, offset, tree, "CColumnSet"); |
5185 | 0 | } |
5186 | |
|
5187 | 0 | CRestrictionPresent = tvb_get_uint8(tvb, offset); |
5188 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcreatequery_crestrictionpresent, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
5189 | 0 | offset += 1; |
5190 | |
|
5191 | 0 | if (CRestrictionPresent) { |
5192 | 0 | offset = parse_CRestrictionArray(tvb, pinfo, offset, tree, pad_tree, "RestrictionArray"); |
5193 | 0 | } |
5194 | |
|
5195 | 0 | CSortSetPresent = tvb_get_uint8(tvb, offset); |
5196 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcreatequery_csortpresent, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
5197 | 0 | offset += 1; |
5198 | |
|
5199 | 0 | if (CSortSetPresent) { |
5200 | 0 | offset = parse_padding(tvb, offset, 4, tree, "paddingCSortSetPresent"); |
5201 | 0 | offset = parse_CInGroupSortAggregSets(tvb, pinfo, offset, tree, pad_tree, "GroupSortAggregSets"); |
5202 | |
|
5203 | 0 | } |
5204 | |
|
5205 | 0 | CCategorizationSetPresent = tvb_get_uint8(tvb, offset); |
5206 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcreatequery_ccategpresent, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
5207 | 0 | offset += 1; |
5208 | |
|
5209 | 0 | if (CCategorizationSetPresent) { |
5210 | 0 | uint32_t count, i; |
5211 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, "paddingCCategorizationSetPresent"); |
5212 | | /* 2.2.1.19 CCategorizationSet */ |
5213 | 0 | count = tvb_get_letohl(tvb, offset); |
5214 | 0 | proto_tree_add_uint(tree, hf_mswsp_msg_cpmcreatequery_ccateg_count, tvb, offset, 4, count); |
5215 | 0 | offset += 4; |
5216 | 0 | for (i=0; i<count; i++) { |
5217 | 0 | offset = parse_CCategorizationSpec(tvb, pinfo, offset, tree, pad_tree, wmem_strdup_printf(pinfo->pool, "categories[%u]", i)); |
5218 | 0 | } |
5219 | 0 | } |
5220 | |
|
5221 | 0 | offset = parse_padding(tvb, offset, 4, tree, "XXXX"); |
5222 | |
|
5223 | 0 | offset = parse_CRowsetProperties(tvb, offset, tree, pad_tree, "RowSetProperties"); |
5224 | |
|
5225 | 0 | offset = parse_CPidMapper(tvb, pinfo, offset, tree, pad_tree, "PidMapper"); |
5226 | |
|
5227 | 0 | parse_CColumnGroupArray(tvb, pinfo, offset, tree, pad_tree, "GroupArray"); |
5228 | 0 | } else { /* out */ |
5229 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcreatequery_trueseq, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5230 | 0 | offset += 4; |
5231 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcreatequery_workid, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5232 | 0 | offset += 4; |
5233 | | /* |
5234 | | * #FIXME Cursors is an array of uint32 where the size of the array is |
5235 | | * determined by categories in the CategorizationSet in the CPMQuery |
5236 | | * request message. |
5237 | | */ |
5238 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcreatequery_cursors, tvb, offset, -1, ENC_NA); |
5239 | 0 | } |
5240 | |
|
5241 | 0 | return tvb_reported_length(tvb); |
5242 | 0 | } |
5243 | | |
5244 | | static int dissect_CPMFreeCursor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, bool in _U_, void *data _U_) |
5245 | 0 | { |
5246 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "FreeCursor"); |
5247 | 0 | return tvb_reported_length(tvb); |
5248 | 0 | } |
5249 | | |
5250 | | static int dissect_CPMGetRows(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *private_data) |
5251 | 0 | { |
5252 | 0 | struct mswsp_ct *ct = NULL; |
5253 | 0 | int offset = 16; |
5254 | 0 | proto_item *item; |
5255 | 0 | proto_tree *tree; |
5256 | 0 | proto_tree *seek_tree; |
5257 | 0 | uint32_t eType = 0; |
5258 | |
|
5259 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, in ? 0 : -1, ENC_NA); |
5260 | 0 | tree = proto_item_add_subtree(item, ett_mswsp_msg); |
5261 | |
|
5262 | 0 | proto_item_set_text(item, "GetRows%s", in ? "In" : "Out"); |
5263 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "GetRows"); |
5264 | |
|
5265 | 0 | ct = get_create_converstation_data(pinfo); |
5266 | 0 | if (in) { |
5267 | | /* 2.2.3.11 */ |
5268 | 0 | struct message_data *data = NULL; |
5269 | |
|
5270 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrows_hcursor, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5271 | 0 | offset += 4; |
5272 | |
|
5273 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrows_rowstotransfer, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5274 | 0 | offset += 4; |
5275 | |
|
5276 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrows_rowwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5277 | 0 | offset += 4; |
5278 | |
|
5279 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrows_cbseek, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5280 | 0 | offset += 4; |
5281 | |
|
5282 | 0 | data = find_or_create_message_data(ct, pinfo, 0xCC, in, private_data); |
5283 | 0 | if (data) { |
5284 | 0 | data->content.rowsin.cbreserved = tvb_get_letohl(tvb, offset); |
5285 | 0 | } |
5286 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrows_cbreserved, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5287 | 0 | offset += 4; |
5288 | |
|
5289 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrows_cbreadbuffer, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5290 | 0 | offset += 4; |
5291 | |
|
5292 | 0 | if (data) { |
5293 | 0 | data->content.rowsin.ulclientbase = tvb_get_letohl(tvb, offset); |
5294 | 0 | } |
5295 | |
|
5296 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrows_ulclientbase, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5297 | 0 | offset += 4; |
5298 | |
|
5299 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrows_fbwdfetch, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5300 | 0 | offset += 4; |
5301 | |
|
5302 | 0 | eType = tvb_get_letohl(tvb, offset); |
5303 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrows_etype, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5304 | 0 | offset += 4; |
5305 | |
|
5306 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrows_chapt, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5307 | 0 | offset += 4; |
5308 | |
|
5309 | 0 | seek_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_SeekDescription, NULL, "SeekDescription"); |
5310 | 0 | switch (eType) { |
5311 | 0 | case 0: /* eRowSeekNone */ |
5312 | 0 | break; |
5313 | 0 | case 1: /* eRowSeekNext */ |
5314 | 0 | parse_CRowSeekNext(tvb, offset, seek_tree, "CRowSeekNext"); |
5315 | 0 | break; |
5316 | 0 | case 2: /* eRowSeekAt */ |
5317 | 0 | parse_CRowSeekAt(tvb, offset, seek_tree, "CRowSeekAt"); |
5318 | |
|
5319 | 0 | break; |
5320 | 0 | case 3: /* eRowSeekAtRatio */ |
5321 | 0 | parse_CRowSeekAtRatio(tvb, offset, seek_tree, "CRowSeekAtRatio"); |
5322 | 0 | break; |
5323 | 0 | case 4: /* eRowSeekByBookmark */ |
5324 | 0 | parse_CRowSeekByBookmark(tvb, offset, seek_tree, "CRowSeekByRatio"); |
5325 | 0 | break; |
5326 | 0 | default: /*error*/ |
5327 | 0 | break; |
5328 | 0 | } |
5329 | 0 | } else { |
5330 | | /* 2.2.3.12 */ |
5331 | | /* |
5332 | | * GetRows response needs information from GetRow & SetBindings |
5333 | | * requests |
5334 | | */ |
5335 | | /* find the preceding SetBinding data */ |
5336 | 0 | uint32_t num_rows = 0; |
5337 | 0 | proto_item *ti; |
5338 | 0 | proto_tree *pad_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_mswsp_pad, &ti, "Padding"); |
5339 | 0 | struct CPMSetBindingsIn *bindingsin = find_binding_msg_data(ct, pinfo, |
5340 | 0 | private_data); |
5341 | 0 | struct rows_data *rowsin = find_rowsin_msg_data(ct, pinfo, private_data); |
5342 | 0 | bool b_64bit_mode = false; |
5343 | 0 | bool b_has_arch = is_64bit_mode(ct, pinfo, &b_64bit_mode, private_data); |
5344 | 0 | num_rows = tvb_get_letohl(tvb, offset); |
5345 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrows_crowsreturned, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5346 | 0 | offset += 4; |
5347 | |
|
5348 | 0 | eType = tvb_get_letohl(tvb, offset); |
5349 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrows_etype, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5350 | 0 | offset += 4; |
5351 | |
|
5352 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrows_chapt, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5353 | 0 | offset += 4; |
5354 | |
|
5355 | 0 | seek_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_SeekDescription, NULL, "SeekDescription"); |
5356 | 0 | switch (eType) { |
5357 | 0 | case 0: /* eRowSeekNone */ |
5358 | 0 | break; |
5359 | 0 | case 1: /* eRowSeekNext */ |
5360 | 0 | parse_CRowSeekNext(tvb, offset, seek_tree, "CRowSeekNext"); |
5361 | 0 | break; |
5362 | 0 | case 2: /* eRowSeekAt */ |
5363 | 0 | parse_CRowSeekAt(tvb, offset, seek_tree, "CRowSeekAt"); |
5364 | |
|
5365 | 0 | break; |
5366 | 0 | case 3: /* eRowSeekAtRatio */ |
5367 | 0 | parse_CRowSeekAtRatio(tvb, offset, seek_tree, "CRowSeekAtRatio"); |
5368 | 0 | break; |
5369 | 0 | case 4: /* eRowSeekByBookmark */ |
5370 | 0 | parse_CRowSeekByBookmark(tvb, offset, seek_tree, "CRowSeekByRatio"); |
5371 | 0 | break; |
5372 | 0 | default: /*error*/ |
5373 | 0 | break; |
5374 | 0 | } |
5375 | | |
5376 | 0 | if (b_has_arch && bindingsin && rowsin) { |
5377 | 0 | offset = parse_padding(tvb, offset, rowsin->cbreserved, pad_tree, |
5378 | 0 | "paddingRows"); |
5379 | 0 | parse_RowsBuffer(tvb, pinfo, offset, num_rows, bindingsin, rowsin, b_64bit_mode, tree, "Rows"); |
5380 | 0 | } else { |
5381 | 0 | int nbytes = tvb_reported_length_remaining(tvb, offset); |
5382 | 0 | proto_tree_add_expert_format(tree, pinfo, &ei_missing_msg_context, tvb, offset, nbytes, "Undissected %d bytes (due to missing preceding msg(s))", nbytes); |
5383 | 0 | } |
5384 | 0 | } |
5385 | | |
5386 | 0 | return tvb_reported_length(tvb); |
5387 | |
|
5388 | 0 | } |
5389 | | |
5390 | | static int dissect_CPMRatioFinished(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *data _U_) |
5391 | 0 | { |
5392 | 0 | int offset = 16; |
5393 | 0 | proto_item *item; |
5394 | 0 | proto_tree *tree; |
5395 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "RatioFinished"); |
5396 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, -1, ENC_NA); |
5397 | 0 | tree = proto_item_add_subtree(item, ett_mswsp_msg); |
5398 | 0 | proto_item_set_text(item, "RationFinished%s", in ? "In" : "Out"); |
5399 | 0 | if (in) { |
5400 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmratiofinished_hcursor, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5401 | 0 | offset += 4; |
5402 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmratiofinished_fquick, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5403 | 0 | } else { |
5404 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmratiofinished_ulnumerator, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5405 | 0 | offset += 4; |
5406 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmratiofinished_uldenominator, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5407 | 0 | offset += 4; |
5408 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmratiofinished_crows, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5409 | 0 | offset += 4; |
5410 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmratiofinished_fnewrows, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5411 | 0 | } |
5412 | |
|
5413 | 0 | return tvb_reported_length(tvb); |
5414 | 0 | } |
5415 | | |
5416 | | static int dissect_CPMCompareBmk(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *data _U_) |
5417 | 0 | { |
5418 | 0 | int offset = 16; |
5419 | 0 | proto_item *item; |
5420 | 0 | proto_tree *tree; |
5421 | |
|
5422 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, in ? 0 : -1, ENC_NA); |
5423 | 0 | tree = proto_item_add_subtree(item, ett_mswsp_msg); |
5424 | |
|
5425 | 0 | proto_item_set_text(item, "CompareBmk%s", in ? "In" : "Out"); |
5426 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "CompareBmk"); |
5427 | 0 | if (in) { |
5428 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcomparebmk_hcursor, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5429 | 0 | offset += 4; |
5430 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcomparebmk_chapt, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5431 | 0 | offset += 4; |
5432 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcomparebmk_bmkfirst, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5433 | 0 | offset += 4; |
5434 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcomparebmk_bmksecond, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5435 | 0 | } else { |
5436 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcomparebmk_dwcomparison, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5437 | 0 | } |
5438 | 0 | return tvb_reported_length(tvb); |
5439 | 0 | } |
5440 | | |
5441 | | static int dissect_CPMGetApproximatePosition(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *data _U_) |
5442 | 0 | { |
5443 | 0 | int offset = 16; |
5444 | 0 | proto_item *item; |
5445 | 0 | proto_tree *tree; |
5446 | |
|
5447 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, in ? 0 : -1, ENC_NA); |
5448 | 0 | tree = proto_item_add_subtree(item, ett_mswsp_msg); |
5449 | |
|
5450 | 0 | proto_item_set_text(item, "GetApproximatePosition%s", in ? "In" : "Out"); |
5451 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "GetApproximatePosition"); |
5452 | 0 | if (in) { |
5453 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetapproxpos_hcursor, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5454 | 0 | offset += 4; |
5455 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetapproxpos_chapt, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5456 | 0 | offset += 4; |
5457 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetapproxpos_bmk, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5458 | 0 | } else { |
5459 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetapproxpos_numerator, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5460 | 0 | offset += 4; |
5461 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetapproxpos_denominator, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5462 | 0 | } |
5463 | 0 | return tvb_reported_length(tvb); |
5464 | 0 | } |
5465 | | |
5466 | | /* 2.2.3.10 */ |
5467 | | static int dissect_CPMSetBindings(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *private_data) |
5468 | 0 | { |
5469 | 0 | int offset = 16; |
5470 | 0 | struct CPMSetBindingsIn request; |
5471 | |
|
5472 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "SetBindings"); |
5473 | 0 | if (in) { |
5474 | |
|
5475 | 0 | struct mswsp_ct *ct = NULL; |
5476 | 0 | struct message_data *data = NULL; |
5477 | 0 | proto_item *ti; |
5478 | 0 | proto_tree *tree, *pad_tree; |
5479 | 0 | uint32_t size, num, n; |
5480 | 0 | int64_t column_size; |
5481 | |
|
5482 | 0 | ti = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, -1, ENC_NA); |
5483 | 0 | tree = proto_item_add_subtree(ti, ett_mswsp_msg); |
5484 | |
|
5485 | 0 | proto_item_set_text(ti, "SetBindingsIn"); |
5486 | |
|
5487 | 0 | pad_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_mswsp_pad, &ti, "Padding"); |
5488 | |
|
5489 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmsetbinding_hcursor, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5490 | 0 | request.hcursor = tvb_get_letohl(tvb, offset); |
5491 | 0 | offset += 4; |
5492 | 0 | request.brow = tvb_get_letohl(tvb, offset); |
5493 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmsetbinding_cbrow, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5494 | 0 | offset += 4; |
5495 | |
|
5496 | 0 | size = tvb_get_letohl(tvb, offset); |
5497 | 0 | request.bbindingdesc = size; |
5498 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmsetbinding_desc, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5499 | 0 | offset += 4; |
5500 | |
|
5501 | 0 | request.dummy = tvb_get_letohl(tvb, offset); |
5502 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmsetbinding_dummy, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5503 | 0 | offset += 4; |
5504 | |
|
5505 | 0 | num = tvb_get_letohl(tvb, offset); |
5506 | 0 | request.ccolumns = num; |
5507 | 0 | ti = proto_tree_add_item(tree, hf_mswsp_msg_cpmsetbinding_ccolumns, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5508 | 0 | offset += 4; |
5509 | |
|
5510 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmsetbinding_acolumns, tvb, offset, size-4, ENC_NA); |
5511 | | |
5512 | | /* Sanity check size value */ |
5513 | 0 | column_size = num*MIN_CTABLECOL_SIZE; |
5514 | 0 | if (num > MAX_CTABLECOL_SIZE || column_size > tvb_reported_length_remaining(tvb, offset)) |
5515 | 0 | { |
5516 | 0 | expert_add_info(pinfo, ti, &ei_mswsp_msg_cpmsetbinding_ccolumns); |
5517 | 0 | return tvb_reported_length(tvb); |
5518 | 0 | } |
5519 | | |
5520 | 0 | ct = get_create_converstation_data(pinfo); |
5521 | |
|
5522 | 0 | request.acolumns = (struct CTableColumn*)wmem_alloc(wmem_file_scope(), |
5523 | 0 | sizeof(struct CTableColumn) * num); |
5524 | 0 | for (n=0; n<num; n++) { |
5525 | 0 | offset = parse_padding(tvb, offset, 4, pad_tree, wmem_strdup_printf(pinfo->pool, "padding_aColumns[%u]", n)); |
5526 | 0 | offset = parse_CTableColumn(tvb, pinfo, offset, tree, pad_tree, &request.acolumns[n], wmem_strdup_printf(pinfo->pool, "aColumns[%u]", n)); |
5527 | 0 | } |
5528 | 0 | data = find_or_create_message_data(ct, pinfo,0xD0,in, private_data); |
5529 | 0 | if (data) { |
5530 | 0 | data->content.bindingsin = request; |
5531 | 0 | } |
5532 | |
|
5533 | 0 | } else { /* server only returns status with header */ |
5534 | 0 | } |
5535 | | |
5536 | 0 | return tvb_reported_length(tvb); |
5537 | 0 | } |
5538 | | |
5539 | | static int dissect_CPMGetNotify(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, bool in _U_, void *data _U_) |
5540 | 0 | { |
5541 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "GetNotify"); |
5542 | 0 | return tvb_reported_length(tvb); |
5543 | 0 | } |
5544 | | |
5545 | | static int dissect_CPMSendNotifyOut(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in _U_, void *data _U_) |
5546 | 0 | { |
5547 | 0 | int offset = 16; |
5548 | 0 | proto_item *item; |
5549 | 0 | proto_tree *tree; |
5550 | |
|
5551 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "SendNotify"); |
5552 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, -1, ENC_NA); |
5553 | 0 | tree = proto_item_add_subtree(item, ett_mswsp_msg); |
5554 | 0 | proto_item_set_text(item, "GetSendNotifyOut"); |
5555 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmsendnotify_watchnotify, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5556 | 0 | return tvb_reported_length(tvb); |
5557 | 0 | } |
5558 | | |
5559 | | static int dissect_CPMGetQueryStatus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *data _U_) |
5560 | 0 | { |
5561 | 0 | int offset = 16; |
5562 | 0 | proto_item *item; |
5563 | 0 | proto_tree *tree; |
5564 | |
|
5565 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, -1, ENC_NA); |
5566 | 0 | tree = proto_item_add_subtree(item, ett_mswsp_msg); |
5567 | |
|
5568 | 0 | proto_item_set_text(item, "GetQueryStatus%s", in ? "In" : "Out"); |
5569 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "GetQueryStatus"); |
5570 | |
|
5571 | 0 | if (in) { |
5572 | | /* 2.2.3.7 */ |
5573 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetquerystatus_hcursor, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5574 | 0 | } else { |
5575 | | /* 2.2.3.7 */ |
5576 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetquerystatus_qstatus, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5577 | 0 | } |
5578 | |
|
5579 | 0 | return tvb_reported_length(tvb); |
5580 | 0 | } |
5581 | | |
5582 | | static int dissect_CPMCiState(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *data _U_) |
5583 | 0 | { |
5584 | 0 | int offset = 16; |
5585 | 0 | proto_item *item; |
5586 | 0 | proto_tree *tree; |
5587 | |
|
5588 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "CiState"); |
5589 | |
|
5590 | 0 | if (!in) { |
5591 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, -1, ENC_NA); |
5592 | 0 | tree = proto_item_add_subtree(item, ett_mswsp_msg); |
5593 | 0 | proto_item_set_text(item, "CiStateOut"); |
5594 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_cbstruct, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5595 | 0 | offset += 4; |
5596 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_cwordlist, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5597 | 0 | offset += 4; |
5598 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_cpersistindex, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5599 | 0 | offset += 4; |
5600 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_cqueries, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5601 | 0 | offset += 4; |
5602 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_cfreshtest, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5603 | 0 | offset += 4; |
5604 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_cfreshtest, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5605 | 0 | offset += 4; |
5606 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_dwmergeprogress, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5607 | 0 | offset += 4; |
5608 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_estate, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5609 | 0 | offset += 4; |
5610 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_cfiltereddocs, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5611 | 0 | offset += 4; |
5612 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_ctotaldocs, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5613 | 0 | offset += 4; |
5614 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_cpendingscans, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5615 | 0 | offset += 4; |
5616 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_dwindexsize, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5617 | 0 | offset += 4; |
5618 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_cuniquekeys, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5619 | 0 | offset += 4; |
5620 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_csecqdocuments, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5621 | 0 | offset += 4; |
5622 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmcistate_dwpropcachesize, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5623 | 0 | } |
5624 | 0 | return tvb_reported_length(tvb); |
5625 | 0 | } |
5626 | | |
5627 | | static int dissect_CPMFetchValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *data _U_) |
5628 | 0 | { |
5629 | 0 | int offset = 16; |
5630 | 0 | proto_item *item; |
5631 | 0 | proto_tree *tree, *pad_tree; |
5632 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "FetchValue"); |
5633 | |
|
5634 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, -1, ENC_NA); |
5635 | 0 | tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, 0, ett_mswsp_msg, &item, "FetchValue%s", in ? "In" : "Out"); |
5636 | 0 | pad_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_mswsp_pad, NULL, "Padding"); |
5637 | 0 | if (in) { |
5638 | 0 | struct CFullPropSpec prop; |
5639 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmfetchvalue_wid, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5640 | 0 | offset += 4; |
5641 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmfetchvalue_cbsofar, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5642 | 0 | offset += 4; |
5643 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmfetchvalue_cbpropspec, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5644 | 0 | offset += 4; |
5645 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmfetchvalue_cbchunk, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5646 | 0 | offset += 4; |
5647 | 0 | offset = parse_CFullPropSpec(tvb, pinfo, offset, tree, pad_tree, &prop, |
5648 | 0 | "PropSpec"); |
5649 | 0 | parse_padding(tvb, offset, 4, pad_tree,"_padding"); |
5650 | 0 | } else { |
5651 | 0 | uint32_t cbValue = tvb_get_letohl(tvb, offset); |
5652 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmfetchvalue_cbvalue, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5653 | 0 | offset += 4; |
5654 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmfetchvalue_fmoreexists, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5655 | 0 | offset += 4; |
5656 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmfetchvalue_fvalueexists, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5657 | 0 | offset += 4; |
5658 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmfetchvalue_vvalue, tvb, offset, cbValue, ENC_NA); |
5659 | 0 | } |
5660 | 0 | return tvb_reported_length(tvb); |
5661 | 0 | } |
5662 | | |
5663 | | static int dissect_CPMGetQueryStatusEx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *data _U_) |
5664 | 0 | { |
5665 | 0 | int offset = 16; |
5666 | 0 | proto_item *item; |
5667 | 0 | proto_tree *tree; |
5668 | |
|
5669 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, -1, ENC_NA); |
5670 | 0 | tree = proto_item_add_subtree(item, ett_mswsp_msg); |
5671 | |
|
5672 | 0 | proto_item_set_text(item, "GetQueryStatusEx%s", in ? "In" : "Out"); |
5673 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "GetQueryStatusEx"); |
5674 | |
|
5675 | 0 | if (in) { |
5676 | | /* 2.2.3.8 */ |
5677 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmquerystatusex_hcursor, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5678 | 0 | offset += 4; |
5679 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmquerystatusex_bmk, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5680 | 0 | } else { |
5681 | | /* 2.2.3.9 */ |
5682 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmquerystatusex_qstatus, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5683 | 0 | offset += 4; |
5684 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmquerystatusex_cfiltereddocs, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5685 | 0 | offset += 4; |
5686 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmquerystatusex_cdocstofilter, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5687 | 0 | offset += 4; |
5688 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmquerystatusex_dwratiodenom, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5689 | 0 | offset += 4; |
5690 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmquerystatusex_dwrationumer, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5691 | 0 | offset += 4; |
5692 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmquerystatusex_irowbmk, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5693 | 0 | offset += 4; |
5694 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmquerystatusex_crowstotal, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5695 | 0 | offset += 4; |
5696 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmquerystatusex_maxrank, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5697 | 0 | offset += 4; |
5698 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmquerystatusex_cresultsfound, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5699 | 0 | offset += 4; |
5700 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmquerystatusex_whereid, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5701 | 0 | } |
5702 | 0 | return tvb_reported_length(tvb); |
5703 | 0 | } |
5704 | | |
5705 | | static int dissect_CPMRestartPosition(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *data _U_) |
5706 | 0 | { |
5707 | 0 | int offset = 16; |
5708 | 0 | proto_item *item; |
5709 | 0 | proto_tree *tree; |
5710 | |
|
5711 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "CPMRestartPosition"); |
5712 | |
|
5713 | 0 | if (in) { |
5714 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, -1, ENC_NA); |
5715 | 0 | tree = proto_item_add_subtree(item, ett_mswsp_msg); |
5716 | 0 | proto_item_set_text(item, "CPMRestartPosition"); |
5717 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmrestartposition_hcursor, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5718 | 0 | offset += 4; |
5719 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmrestartposition_chapt, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5720 | 0 | } |
5721 | |
|
5722 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "RestartPosition"); |
5723 | 0 | return tvb_reported_length(tvb); |
5724 | 0 | } |
5725 | | |
5726 | | static int dissect_CPMSetCatState(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, bool in _U_, void *data _U_) |
5727 | 0 | { |
5728 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "SetCatState"); |
5729 | 0 | return tvb_reported_length(tvb); |
5730 | 0 | } |
5731 | | |
5732 | | static int dissect_CPMGetRowsetNotify(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *data _U_) |
5733 | 0 | { |
5734 | 0 | int offset = 16; |
5735 | 0 | proto_item *item; |
5736 | 0 | proto_tree *tree; |
5737 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "GetRowsetNotify"); |
5738 | 0 | if (!in) { |
5739 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, -1, ENC_NA); |
5740 | 0 | tree = proto_item_add_subtree(item, ett_mswsp_msg); |
5741 | 0 | proto_item_set_text(item, "GetRowsetNotifyOut"); |
5742 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrowsetnotify_wid, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5743 | 0 | offset += 4; |
5744 | | |
5745 | | /* moveevents */ |
5746 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrowsetnotify_moreevents, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
5747 | | /* eventType */ |
5748 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrowsetnotify_eventtype, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
5749 | 0 | offset += 1; |
5750 | | |
5751 | | /* rowSetItemState */ |
5752 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrowsetnotify_rowsetitemstate, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
5753 | 0 | offset += 1; |
5754 | | |
5755 | | /* changedItemState */ |
5756 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrowsetnotify_changeditemstate, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
5757 | 0 | offset += 1; |
5758 | | |
5759 | | /* rowSetEvent */ |
5760 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrowsetnotify_rowsetevent, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
5761 | 0 | offset += 1; |
5762 | |
|
5763 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrowsetnotify_rowseteventdata1, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
5764 | 0 | offset += 8; |
5765 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmgetrowsetnotify_rowseteventdata2, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
5766 | | /* it seems there is an extra unknown 8 bytes following */ |
5767 | 0 | } |
5768 | 0 | return tvb_reported_length(tvb); |
5769 | 0 | } |
5770 | | |
5771 | | static int dissect_CPMFindIndices(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *data _U_) |
5772 | 0 | { |
5773 | 0 | int offset = 16; |
5774 | 0 | proto_item *item; |
5775 | 0 | proto_tree *tree; |
5776 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "FindIndices"); |
5777 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, -1, ENC_NA); |
5778 | 0 | tree = proto_item_add_subtree(item, ett_mswsp_msg); |
5779 | 0 | proto_item_set_text(item, "FindIndices%s", in ? "In" : "Out"); |
5780 | |
|
5781 | 0 | if (in) { |
5782 | 0 | uint32_t cWids; |
5783 | 0 | uint32_t cDepthPrev; |
5784 | 0 | cWids = tvb_get_letohl(tvb, offset); |
5785 | 0 | proto_tree_add_uint(tree, hf_mswsp_msg_cpmfindindices_cwids, tvb, offset, 4, cWids); |
5786 | 0 | offset += 4; |
5787 | 0 | cDepthPrev = tvb_get_letohl(tvb, offset); |
5788 | 0 | proto_tree_add_uint(tree, hf_mswsp_msg_cpmfindindices_cdepthprev, tvb, offset, 4, cDepthPrev); |
5789 | 0 | offset += 4; |
5790 | 0 | offset = parse_uin32_array(tvb, offset, tree, cWids, "pwids"); |
5791 | 0 | parse_uin32_array(tvb, offset, tree, cDepthPrev, "prgiRowPrev"); |
5792 | 0 | } else { |
5793 | 0 | uint32_t cDepthNext; |
5794 | 0 | cDepthNext = tvb_get_letohl(tvb, offset); |
5795 | 0 | proto_tree_add_uint(tree, hf_mswsp_msg_cpmfindindices_cdepthnext, tvb, offset, 4, cDepthNext); |
5796 | 0 | offset += 4; |
5797 | 0 | parse_uin32_array(tvb, offset, tree, cDepthNext, "prgiRowNext"); |
5798 | 0 | } |
5799 | 0 | return tvb_reported_length(tvb); |
5800 | 0 | } |
5801 | | |
5802 | | static int dissect_CPMSetScopePrioritization(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *data _U_) |
5803 | 0 | { |
5804 | 0 | int offset = 16; |
5805 | 0 | proto_item *item; |
5806 | 0 | proto_tree *tree; |
5807 | |
|
5808 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "SetScopePrioritization"); |
5809 | |
|
5810 | 0 | if (in) { |
5811 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, -1, ENC_NA); |
5812 | 0 | tree = proto_item_add_subtree(item, ett_mswsp_msg); |
5813 | 0 | proto_item_set_text(item, "SetScopePrioritizationIn"); |
5814 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmsetscopeprioritization_priority, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5815 | 0 | offset += 4; |
5816 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmsetscopeprioritization_eventfreq, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5817 | 0 | } |
5818 | 0 | return tvb_reported_length(tvb); |
5819 | 0 | } |
5820 | | |
5821 | | static int dissect_CPMGetScopeStatistics(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, bool in, void *data _U_) |
5822 | 0 | { |
5823 | |
|
5824 | 0 | int offset = 16; |
5825 | 0 | proto_item *item; |
5826 | 0 | proto_tree *tree; |
5827 | |
|
5828 | 0 | item = proto_tree_add_item(parent_tree, hf_mswsp_msg, tvb, offset, in ? 0 : -1, ENC_NA); |
5829 | 0 | tree = proto_item_add_subtree(item, ett_mswsp_msg); |
5830 | |
|
5831 | 0 | proto_item_set_text(item, "GetScopeStatistics%s", in ? "In" : "Out"); |
5832 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "GetScopeStatistics"); |
5833 | |
|
5834 | 0 | if (in) { |
5835 | | /* 2.2.3.33 */ |
5836 | 0 | } else { |
5837 | | /* 2.2.3.34 */ |
5838 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmsetscopestatisics_dwindexitems, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5839 | 0 | offset += 4; |
5840 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmsetscopestatisics_dwoutstandingadds, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5841 | 0 | offset += 4; |
5842 | 0 | proto_tree_add_item(tree, hf_mswsp_msg_cpmsetscopestatisics_dwoutstandingmodifies, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
5843 | 0 | } |
5844 | |
|
5845 | 0 | return tvb_reported_length(tvb); |
5846 | 0 | } |
5847 | | |
5848 | | |
5849 | | static const value_string msg_ids[] = { |
5850 | | {0x000000C8, "CPMConnect"}, /* In/Out */ |
5851 | | {0x000000C9, "CPMDisconnect"}, |
5852 | | {0x000000CA, "CPMCreateQuery"}, /* In/Out */ |
5853 | | {0x000000CB, "CPMFreeCursor"}, /* In/Out */ |
5854 | | {0x000000CC, "CPMGetRows"}, /* In/Out */ |
5855 | | {0x000000CD, "CPMRatioFinished"}, /* In/Out */ |
5856 | | {0x000000CE, "CPMCompareBmk"}, /* In/Out */ |
5857 | | {0x000000CF, "CPMGetApproximatePosition"}, /* In/Out */ |
5858 | | {0x000000D0, "CPMSetBindingsIn"}, |
5859 | | {0x000000D1, "CPMGetNotify"}, |
5860 | | {0x000000D2, "CPMSendNotifyOut"}, |
5861 | | {0x000000D7, "CPMGetQueryStatusIn"}, /* In/Out */ |
5862 | | {0x000000D9, "CPMCiStateInOut"}, |
5863 | | {0x000000E4, "CPMFetchValue"}, /* In/Out */ |
5864 | | {0x000000E7, "CPMGetQueryStatusEx"}, /* In/Out */ |
5865 | | {0x000000E8, "CPMRestartPositionIn"}, |
5866 | | {0x000000EC, "CPMSetCatStateIn"}, /* (not supported) */ |
5867 | | {0x000000F1, "CPMGetRowsetNotify"}, /* In/Out */ |
5868 | | {0x000000F2, "CPMFindIndices"}, /* In/Out */ |
5869 | | {0x000000F3, "CPMSetScopePrioritization"}, /* In/Out */ |
5870 | | {0x000000F4, "CPMGetScopeStatistics"}, /* In/Out */ |
5871 | | {0, NULL} |
5872 | | }; |
5873 | | |
5874 | | |
5875 | | static int |
5876 | | dissect_mswsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, bool in, void *data) |
5877 | 0 | { |
5878 | 0 | proto_tree *mswsp_tree = NULL; |
5879 | 0 | proto_tree *hdr_tree; |
5880 | 0 | proto_item *ti, *hti; |
5881 | 0 | uint32_t msg; |
5882 | 0 | uint32_t status; |
5883 | | |
5884 | |
|
5885 | 0 | if (tvb_reported_length(tvb) < 16) { |
5886 | 0 | return 0; |
5887 | 0 | } |
5888 | | |
5889 | | /* col_set_str(pinfo->cinfo, COL_PROTOCOL, "MS-WSP"); */ |
5890 | 0 | col_append_str(pinfo->cinfo, COL_PROTOCOL, " WSP"); |
5891 | | /* col_clear(pinfo->cinfo, COL_INFO); */ |
5892 | |
|
5893 | 0 | col_set_str(pinfo->cinfo, COL_INFO, "WSP "); |
5894 | 0 | col_append_str(pinfo->cinfo, COL_INFO, in ? "Request: " : "Response: "); |
5895 | |
|
5896 | 0 | ti = proto_tree_add_item(tree, proto_mswsp, tvb, 0, -1, ENC_NA); |
5897 | 0 | mswsp_tree = proto_item_add_subtree(ti, ett_mswsp); |
5898 | |
|
5899 | 0 | hti = proto_tree_add_item(mswsp_tree, hf_mswsp_hdr, tvb, 0, 16, ENC_NA); |
5900 | 0 | hdr_tree = proto_item_add_subtree(hti, ett_mswsp_hdr); |
5901 | |
|
5902 | 0 | proto_tree_add_item_ret_uint(hdr_tree, hf_mswsp_hdr_msg, tvb, |
5903 | 0 | 0, 4, ENC_LITTLE_ENDIAN, &msg); |
5904 | 0 | proto_item_append_text(hti, " %s", val_to_str(pinfo->pool, msg, VALS(msg_ids), |
5905 | 0 | "(Unknown: 0x%x)")); |
5906 | |
|
5907 | 0 | proto_tree_add_item_ret_uint(hdr_tree, hf_mswsp_hdr_status, tvb, |
5908 | 0 | 4, 4, ENC_LITTLE_ENDIAN, &status); |
5909 | 0 | if (!in || status != 0) { |
5910 | 0 | proto_item_append_text(hti, " %s", |
5911 | 0 | val_to_str(pinfo->pool, status, VALS(dcom_hresult_vals), |
5912 | 0 | "(Unknown: 0x%x)")); |
5913 | 0 | } |
5914 | |
|
5915 | 0 | proto_tree_add_checksum(hdr_tree, tvb, 8, hf_mswsp_hdr_checksum, -1, NULL, pinfo, 0, ENC_LITTLE_ENDIAN, PROTO_CHECKSUM_NO_FLAGS); |
5916 | | /* todo: validate checksum */ |
5917 | |
|
5918 | 0 | proto_tree_add_item(hdr_tree, hf_mswsp_hdr_reserved, tvb, |
5919 | 0 | 12, 4, ENC_LITTLE_ENDIAN); |
5920 | | |
5921 | |
|
5922 | 0 | switch(msg) { |
5923 | 0 | case 0xC8: |
5924 | 0 | dissect_CPMConnect(tvb, pinfo, tree, in, data); |
5925 | 0 | break; |
5926 | 0 | case 0xC9: |
5927 | 0 | dissect_CPMDisconnect(tvb, pinfo, tree, in, data); |
5928 | 0 | break; |
5929 | 0 | case 0xCA: |
5930 | 0 | dissect_CPMCreateQuery(tvb, pinfo, tree, in, data); |
5931 | 0 | break; |
5932 | 0 | case 0xCB: |
5933 | 0 | dissect_CPMFreeCursor(tvb, pinfo, tree, in, data); |
5934 | 0 | break; |
5935 | 0 | case 0xCC: |
5936 | 0 | dissect_CPMGetRows(tvb, pinfo, tree, in, data); |
5937 | 0 | break; |
5938 | 0 | case 0xCD: |
5939 | 0 | dissect_CPMRatioFinished(tvb, pinfo, tree, in, data); |
5940 | 0 | break; |
5941 | 0 | case 0xCE: |
5942 | 0 | dissect_CPMCompareBmk(tvb, pinfo, tree, in, data); |
5943 | 0 | break; |
5944 | 0 | case 0xCF: |
5945 | 0 | dissect_CPMGetApproximatePosition(tvb, pinfo, tree, in, data); |
5946 | 0 | break; |
5947 | 0 | case 0xD0: |
5948 | 0 | dissect_CPMSetBindings(tvb, pinfo, tree, in, data); |
5949 | 0 | break; |
5950 | 0 | case 0xD1: |
5951 | 0 | dissect_CPMGetNotify(tvb, pinfo, tree, in, data); |
5952 | 0 | break; |
5953 | 0 | case 0xD2: |
5954 | 0 | dissect_CPMSendNotifyOut(tvb, pinfo, tree, in, data); |
5955 | 0 | break; |
5956 | 0 | case 0xD7: |
5957 | 0 | dissect_CPMGetQueryStatus(tvb, pinfo, tree, in, data); |
5958 | 0 | break; |
5959 | 0 | case 0xD9: |
5960 | 0 | dissect_CPMCiState(tvb, pinfo, tree, in, data); |
5961 | 0 | break; |
5962 | 0 | case 0xE4: |
5963 | 0 | dissect_CPMFetchValue(tvb, pinfo, tree, in, data); |
5964 | 0 | break; |
5965 | 0 | case 0xE7: |
5966 | 0 | dissect_CPMGetQueryStatusEx(tvb, pinfo, tree, in, data); |
5967 | 0 | break; |
5968 | 0 | case 0xE8: |
5969 | 0 | dissect_CPMRestartPosition(tvb, pinfo, tree, in, data); |
5970 | 0 | break; |
5971 | 0 | case 0xEC: |
5972 | 0 | dissect_CPMSetCatState(tvb, pinfo, tree, in, data); |
5973 | 0 | break; |
5974 | 0 | case 0xF1: |
5975 | 0 | dissect_CPMGetRowsetNotify(tvb, pinfo, tree, in, data); |
5976 | 0 | break; |
5977 | 0 | case 0xF2: |
5978 | 0 | dissect_CPMFindIndices(tvb, pinfo, tree, in, data); |
5979 | 0 | break; |
5980 | 0 | case 0xF3: |
5981 | 0 | dissect_CPMSetScopePrioritization(tvb, pinfo, tree, in, data); |
5982 | 0 | break; |
5983 | 0 | case 0xF4: |
5984 | 0 | dissect_CPMGetScopeStatistics(tvb, pinfo, tree, in, data); |
5985 | 0 | break; |
5986 | 0 | default: |
5987 | 0 | return 0; |
5988 | 0 | } |
5989 | | |
5990 | | /* Return the amount of data this dissector was able to dissect */ |
5991 | 0 | return tvb_reported_length(tvb); |
5992 | 0 | } |
5993 | | |
5994 | | |
5995 | | void |
5996 | | proto_register_mswsp(void) |
5997 | 14 | { |
5998 | 14 | expert_module_t* expert_mswsp = NULL; |
5999 | 14 | static hf_register_info hf[] = { |
6000 | 14 | { |
6001 | 14 | &hf_mswsp_hdr, |
6002 | 14 | { |
6003 | 14 | "Header", "mswsp.hdr", |
6004 | 14 | FT_NONE, BASE_NONE, NULL, 0, |
6005 | 14 | "Message header", HFILL |
6006 | 14 | } |
6007 | 14 | }, |
6008 | 14 | { |
6009 | 14 | &hf_mswsp_hdr_msg, |
6010 | 14 | { |
6011 | 14 | "Msg id", "mswsp.hdr.id", |
6012 | 14 | FT_UINT32, BASE_HEX, VALS(msg_ids), 0, |
6013 | 14 | "Message id", HFILL |
6014 | 14 | } |
6015 | 14 | }, |
6016 | 14 | { |
6017 | 14 | &hf_mswsp_hdr_status, |
6018 | 14 | { |
6019 | 14 | "Status", "mswsp.hdr.status", |
6020 | 14 | FT_UINT32, BASE_HEX, VALS(dcom_hresult_vals), 0, |
6021 | 14 | "Message Status", HFILL |
6022 | 14 | } |
6023 | 14 | }, |
6024 | 14 | { |
6025 | 14 | &hf_mswsp_hdr_checksum, |
6026 | 14 | { |
6027 | 14 | "checksum", "mswsp.hdr.checksum", |
6028 | 14 | FT_UINT32, BASE_HEX, NULL, 0, |
6029 | 14 | "Message Checksum", HFILL |
6030 | 14 | } |
6031 | 14 | }, |
6032 | 14 | { |
6033 | 14 | &hf_mswsp_hdr_reserved, |
6034 | 14 | { |
6035 | 14 | "Reserved", "mswsp.hdr.reserved", |
6036 | 14 | FT_UINT32, BASE_HEX, NULL, 0, |
6037 | 14 | "Reserved bytes", HFILL |
6038 | 14 | } |
6039 | 14 | }, |
6040 | 14 | { |
6041 | 14 | &hf_mswsp_msg, |
6042 | 14 | { |
6043 | 14 | "msg", "mswsp.msg", |
6044 | 14 | FT_NONE, BASE_NONE, NULL, 0, |
6045 | 14 | "Message", HFILL |
6046 | 14 | } |
6047 | 14 | }, |
6048 | 14 | { |
6049 | 14 | &hf_mswsp_msg_Connect_Version, |
6050 | 14 | { |
6051 | 14 | "Version", "mswsp.Connect.version", |
6052 | 14 | FT_UINT32, BASE_HEX, VALS(version_vals), 0, |
6053 | 14 | "OS Version", HFILL |
6054 | 14 | } |
6055 | 14 | }, |
6056 | 14 | { |
6057 | 14 | &hf_mswsp_msg_ConnectIn_ClientIsRemote, |
6058 | 14 | { |
6059 | 14 | "Remote", "mswsp.ConnectIn.isRemote", |
6060 | 14 | FT_BOOLEAN, BASE_NONE, NULL, 0, |
6061 | 14 | "Client is remote",HFILL |
6062 | 14 | } |
6063 | 14 | }, |
6064 | 14 | { |
6065 | 14 | &hf_mswsp_msg_ConnectIn_Blob1, |
6066 | 14 | { |
6067 | 14 | "Size", "mswsp.ConnectIn.propset.size", |
6068 | 14 | FT_UINT32, BASE_DEC, NULL, 0, |
6069 | 14 | "Size of PropSet fields",HFILL |
6070 | 14 | } |
6071 | 14 | }, |
6072 | 14 | { |
6073 | 14 | &hf_mswsp_msg_ConnectIn_MachineName, |
6074 | 14 | { |
6075 | 14 | "Remote machine", "mswsp.ConnectIn.machine", |
6076 | 14 | FT_STRINGZ, BASE_NONE, NULL, 0, |
6077 | 14 | "Name of remote machine",HFILL |
6078 | 14 | } |
6079 | 14 | }, |
6080 | 14 | { |
6081 | 14 | &hf_mswsp_msg_ConnectIn_UserName, |
6082 | 14 | { |
6083 | 14 | "User", "mswsp.ConnectIn.user", |
6084 | 14 | FT_STRINGZ, BASE_NONE, NULL, 0, |
6085 | 14 | "Name of remote user",HFILL |
6086 | 14 | } |
6087 | 14 | }, |
6088 | 14 | { |
6089 | 14 | &hf_mswsp_msg_ConnectIn_PropSets_num, |
6090 | 14 | { |
6091 | 14 | "Num", "mswsp.ConnectIn.propset.num", |
6092 | 14 | FT_UINT32, BASE_DEC, NULL, 0, |
6093 | 14 | "Number of Property Sets", HFILL |
6094 | 14 | } |
6095 | 14 | }, |
6096 | 14 | { |
6097 | 14 | &hf_mswsp_bool_options, |
6098 | 14 | { |
6099 | 14 | "uBooleanOptions", "mswsp.CPMCreateQuery.RowSetProperties.uBooleanOptions", |
6100 | 14 | FT_UINT32, BASE_HEX, NULL, 0, "Boolean options", HFILL |
6101 | 14 | } |
6102 | 14 | }, |
6103 | 14 | { |
6104 | 14 | &hf_mswsp_bool_options_cursor, |
6105 | 14 | { |
6106 | 14 | "Cursor", "mswsp.CPMCreateQuery.RowSetProperties.uBooleanOptions.cursor", FT_UINT32, |
6107 | 14 | BASE_HEX, VALS(cursor_vals), 0x00000007, "Cursor Type", HFILL |
6108 | 14 | } |
6109 | 14 | }, |
6110 | 14 | { |
6111 | 14 | &hf_mswsp_bool_options_async, |
6112 | 14 | { |
6113 | 14 | "eAsynchronous", "mswsp.CPMCreateQuery.RowSetProperties.uBooleanOptions.eAsynchronous", |
6114 | 14 | FT_BOOLEAN, 32, NULL, eAsynchronous, "The client will not wait for execution completion", HFILL |
6115 | 14 | } |
6116 | 14 | }, |
6117 | 14 | { |
6118 | 14 | &hf_mswsp_bool_options_firstrows, |
6119 | 14 | { |
6120 | 14 | "eFirstRows", "mswsp.CPMCreateQuery.RowSetProperties.uBooleanOptions.eFirstRows", |
6121 | 14 | FT_BOOLEAN, 32, NULL, eFirstRows, "Return the first rows encountered, not the best matches.", HFILL |
6122 | 14 | } |
6123 | 14 | }, |
6124 | 14 | { |
6125 | 14 | &hf_mswsp_bool_options_holdrows, |
6126 | 14 | { |
6127 | 14 | "eHoldRows", "mswsp.CPMCreateQuery.RowSetProperties.uBooleanOptions.eHoldRows", |
6128 | 14 | FT_BOOLEAN, 32, NULL, eHoldRows, "The server MUST NOT discard rows until the client is done with a query.", HFILL |
6129 | 14 | } |
6130 | 14 | }, |
6131 | 14 | { |
6132 | 14 | &hf_mswsp_bool_options_chaptered, |
6133 | 14 | { |
6134 | 14 | "eChaptered", "mswsp.CPMCreateQuery.RowSetProperties.uBooleanOptions.eChaptered", |
6135 | 14 | FT_BOOLEAN, 32, NULL, eChaptered, "The rowset supports chapters.", HFILL |
6136 | 14 | } |
6137 | 14 | }, |
6138 | 14 | { |
6139 | 14 | &hf_mswsp_bool_options_useci, |
6140 | 14 | { |
6141 | 14 | "eUseCI", "mswsp.CPMCreateQuery.RowSetProperties.uBooleanOptions.eUseCI", |
6142 | 14 | FT_BOOLEAN, 32, NULL, eUseCI, "Use the inverted index to evaluate content restrictions even if it is out of date.", HFILL |
6143 | 14 | } |
6144 | 14 | }, |
6145 | 14 | { |
6146 | 14 | &hf_mswsp_bool_options_defertrim, |
6147 | 14 | { |
6148 | 14 | "eDeferTrimming", "mswsp.CPMCreateQuery.RowSetProperties.uBooleanOptions.eDeferTrimming", |
6149 | 14 | FT_BOOLEAN, 32, NULL, eDeferTrimming, "Defer Non-indexed trimming operations like scoping or security checking which can be expensive.", HFILL |
6150 | 14 | } |
6151 | 14 | }, |
6152 | 14 | { |
6153 | 14 | &hf_mswsp_bool_options_rowsetevents, |
6154 | 14 | { |
6155 | 14 | "eEnableRowsetEvents", "mswsp.RowSetProperties.CPMCreateQuery.uBooleanOptions.eEnableRowsetEvents", |
6156 | 14 | FT_BOOLEAN, 32, NULL, eEnableRowsetEvents, "Enables storage of rowset events on the server side.", HFILL |
6157 | 14 | } |
6158 | 14 | }, |
6159 | 14 | { |
6160 | 14 | &hf_mswsp_bool_options_dontcomputeexpensive, |
6161 | 14 | { |
6162 | 14 | "eDoNotComputeExpensiveProps", "mswsp.CPMCreateQuery.RowSetProperties.uBooleanOptions.eDoNotComputeExpensiveProps", |
6163 | 14 | FT_BOOLEAN, 32, NULL, eDoNotComputeExpensiveProps, "Prevents computation of expensive properties.", HFILL |
6164 | 14 | } |
6165 | 14 | }, |
6166 | 14 | { |
6167 | 14 | &hf_mswsp_guid_time_low, |
6168 | 14 | { |
6169 | 14 | "time-low", "mswsp.guid.time_low", |
6170 | 14 | FT_UINT32, BASE_HEX, NULL, 0, "time low value", HFILL |
6171 | 14 | } |
6172 | 14 | }, |
6173 | 14 | { |
6174 | 14 | &hf_mswsp_guid_time_mid, |
6175 | 14 | { |
6176 | 14 | "time-mid", "mswsp.guid.time_mid", |
6177 | 14 | FT_UINT16, BASE_HEX, NULL, 0, "time mid value", HFILL |
6178 | 14 | } |
6179 | 14 | }, |
6180 | 14 | { |
6181 | 14 | &hf_mswsp_guid_time_high, |
6182 | 14 | { |
6183 | 14 | "time-high", "mswsp.guid.time_high", |
6184 | 14 | FT_UINT16, BASE_HEX, NULL, 0, "time high value", HFILL |
6185 | 14 | } |
6186 | 14 | }, |
6187 | 14 | { |
6188 | 14 | &hf_mswsp_guid_time_clock_hi, |
6189 | 14 | { |
6190 | 14 | "clock_seq_hi_and_reserved", "mswsp.guid.time_clock_high", |
6191 | 14 | FT_UINT8, BASE_HEX, NULL, 0, "time clock high value", HFILL |
6192 | 14 | } |
6193 | 14 | }, |
6194 | 14 | { |
6195 | 14 | &hf_mswsp_guid_time_clock_low, |
6196 | 14 | { |
6197 | 14 | "clock_seq_low", "mswsp.guid.time_clock_low", |
6198 | 14 | FT_UINT8, BASE_HEX, NULL, 0, "time clock high low", HFILL |
6199 | 14 | } |
6200 | 14 | }, |
6201 | 14 | { |
6202 | 14 | &hf_mswsp_guid_node, |
6203 | 14 | { |
6204 | 14 | "node", "mswsp.guid.node", |
6205 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6206 | 14 | } |
6207 | 14 | }, |
6208 | 14 | { |
6209 | 14 | &hf_mswsp_lcid, |
6210 | 14 | { |
6211 | 14 | "lcid", "mswsp.lcid", |
6212 | 14 | FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL |
6213 | 14 | } |
6214 | 14 | }, |
6215 | 14 | { |
6216 | 14 | &hf_mswsp_lcid_sortid, |
6217 | 14 | { |
6218 | 14 | "Sort ID", "mswsp.lcid.sortid", |
6219 | 14 | FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL |
6220 | 14 | } |
6221 | 14 | }, |
6222 | 14 | { |
6223 | 14 | &hf_mswsp_lcid_langid, |
6224 | 14 | { |
6225 | 14 | "Language ID", "mswsp.lcid.langid", |
6226 | 14 | FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL |
6227 | 14 | } |
6228 | 14 | }, |
6229 | 14 | { |
6230 | 14 | &hf_mswsp_cscort_column, |
6231 | 14 | { |
6232 | 14 | "column", "mswsp.csort.column", |
6233 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6234 | 14 | } |
6235 | 14 | }, |
6236 | 14 | { |
6237 | 14 | &hf_mswsp_cscort_order, |
6238 | 14 | { |
6239 | 14 | "order", "mswsp.csort.order", |
6240 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6241 | 14 | } |
6242 | 14 | }, |
6243 | 14 | { |
6244 | 14 | &hf_mswsp_cscort_individual, |
6245 | 14 | { |
6246 | 14 | "individual", "mswsp.csort.individual", |
6247 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6248 | 14 | } |
6249 | 14 | }, |
6250 | 14 | { |
6251 | 14 | &hf_mswsp_cscortset_count, |
6252 | 14 | { |
6253 | 14 | "count", "mswsp.csortset.count", |
6254 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6255 | 14 | } |
6256 | 14 | }, |
6257 | 14 | { |
6258 | 14 | &hf_mswsp_ctablecolumn_vtype, |
6259 | 14 | { |
6260 | 14 | "vType", "mswsp.ctablecolumn.vtype", |
6261 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6262 | 14 | } |
6263 | 14 | }, |
6264 | 14 | { |
6265 | 14 | &hf_mswsp_ctablecolumn_aggused, |
6266 | 14 | { |
6267 | 14 | "AggregateUsed", "mswsp.ctablecolumn.aggused", |
6268 | 14 | FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL |
6269 | 14 | } |
6270 | 14 | }, |
6271 | 14 | { |
6272 | 14 | &hf_mswsp_ctablecolumn_aggtype, |
6273 | 14 | { |
6274 | 14 | "AggregateType", "mswsp.ctablecolumn.aggtype", |
6275 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6276 | 14 | } |
6277 | 14 | }, |
6278 | 14 | { |
6279 | 14 | &hf_mswsp_ctablecolumn_valused, |
6280 | 14 | { |
6281 | 14 | "ValueUsed", "mswsp.ctablecolumn.valused", |
6282 | 14 | FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL |
6283 | 14 | } |
6284 | 14 | }, |
6285 | 14 | { |
6286 | 14 | &hf_mswsp_ctablecolumn_valoffset, |
6287 | 14 | { |
6288 | 14 | "ValueOffset", "mswsp.ctablecolumn.valoffset", |
6289 | 14 | FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL |
6290 | 14 | } |
6291 | 14 | }, |
6292 | 14 | { |
6293 | 14 | &hf_mswsp_ctablecolumn_valsize, |
6294 | 14 | { |
6295 | 14 | "ValueSize", "mswsp.ctablecolumn.valsize", |
6296 | 14 | FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL |
6297 | 14 | } |
6298 | 14 | }, |
6299 | 14 | { |
6300 | 14 | &hf_mswsp_ctablecolumn_statused, |
6301 | 14 | { |
6302 | 14 | "StatusUsed", "mswsp.ctablecolumn.statused", |
6303 | 14 | FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL |
6304 | 14 | } |
6305 | 14 | }, |
6306 | 14 | { |
6307 | 14 | &hf_mswsp_ctablecolumn_statoffset, |
6308 | 14 | { |
6309 | 14 | "StatusOffset", "mswsp.ctablecolumn.statoffset", |
6310 | 14 | FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL |
6311 | 14 | } |
6312 | 14 | }, |
6313 | 14 | { |
6314 | 14 | &hf_mswsp_ctablecolumn_lenused, |
6315 | 14 | { |
6316 | 14 | "LengthUsed", "mswsp.ctablecolumn.lenused", |
6317 | 14 | FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL |
6318 | 14 | } |
6319 | 14 | }, |
6320 | 14 | { |
6321 | 14 | &hf_mswsp_ctablecolumn_lenoffset, |
6322 | 14 | { |
6323 | 14 | "LengthOffset", "mswsp.ctablecolumn.lenoffset", |
6324 | 14 | FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL |
6325 | 14 | } |
6326 | 14 | }, |
6327 | 14 | { |
6328 | 14 | &hf_mswsp_cfullpropspec_kind, |
6329 | 14 | { |
6330 | 14 | "ulKind", "mswsp.cfullpropspec.kind", |
6331 | 14 | FT_UINT32, BASE_DEC, VALS(KIND_vals), 0, NULL, HFILL |
6332 | 14 | } |
6333 | 14 | }, |
6334 | 14 | { |
6335 | 14 | &hf_mswsp_cfullpropspec_propid, |
6336 | 14 | { |
6337 | 14 | "propid", "mswsp.cfullpropspec.propid", |
6338 | 14 | FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL |
6339 | 14 | } |
6340 | 14 | }, |
6341 | 14 | { |
6342 | 14 | &hf_mswsp_cfullpropspec_propname, |
6343 | 14 | { |
6344 | 14 | "propname", "mswsp.cfullpropspec.propname", |
6345 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6346 | 14 | } |
6347 | 14 | }, |
6348 | 14 | { |
6349 | 14 | &hf_mswsp_cproprestrict_relop, |
6350 | 14 | { |
6351 | 14 | "relop", "mswsp.cproprestrict.relop", |
6352 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6353 | 14 | } |
6354 | 14 | }, |
6355 | 14 | { |
6356 | 14 | &hf_mswsp_ccoercerestrict_value, |
6357 | 14 | { |
6358 | 14 | "value", "mswsp.ccoercerestrict.value", |
6359 | 14 | FT_FLOAT, BASE_NONE, NULL, 0, NULL, HFILL |
6360 | 14 | } |
6361 | 14 | }, |
6362 | 14 | { |
6363 | 14 | &hf_mswsp_ccontentrestrict_cc, |
6364 | 14 | { |
6365 | 14 | "cc", "mswsp.ccontentrestrict.cc", |
6366 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6367 | 14 | } |
6368 | 14 | }, |
6369 | 14 | { |
6370 | 14 | &hf_mswsp_ccontentrestrict_phrase, |
6371 | 14 | { |
6372 | 14 | "phrase", "mswsp.ccontentrestrict.phrase", |
6373 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6374 | 14 | } |
6375 | 14 | }, |
6376 | 14 | { |
6377 | 14 | &hf_mswsp_ccontentrestrict_method, |
6378 | 14 | { |
6379 | 14 | "method", "mswsp.ccontentrestrict.method", |
6380 | 14 | FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL |
6381 | 14 | } |
6382 | 14 | }, |
6383 | 14 | { |
6384 | 14 | &hf_mswsp_natlangrestrict_cc, |
6385 | 14 | { |
6386 | 14 | "cc", "mswsp.ccontentrestrict.cc", |
6387 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6388 | 14 | } |
6389 | 14 | }, |
6390 | 14 | { |
6391 | 14 | &hf_mswsp_natlangrestrict_phrase, |
6392 | 14 | { |
6393 | 14 | "phrase", "mswsp.ccontentrestrict.phrase", |
6394 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6395 | 14 | } |
6396 | 14 | }, |
6397 | 14 | { |
6398 | 14 | &hf_mswsp_crestrict_ultype, |
6399 | 14 | { |
6400 | 14 | "ulType", "mswsp.crestrict.ultype", |
6401 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6402 | 14 | } |
6403 | 14 | }, |
6404 | 14 | { |
6405 | 14 | &hf_mswsp_crestrict_weight, |
6406 | 14 | { |
6407 | 14 | "Weight", "mswsp.crestrict.weight", |
6408 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6409 | 14 | } |
6410 | 14 | }, |
6411 | 14 | { |
6412 | 14 | &hf_mswsp_crestrictarray_count, |
6413 | 14 | { |
6414 | 14 | "count", "mswsp.crestrictarray.count", |
6415 | 14 | FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL |
6416 | 14 | } |
6417 | 14 | }, |
6418 | 14 | { |
6419 | 14 | &hf_mswsp_crestrictarray_present, |
6420 | 14 | { |
6421 | 14 | "present", "mswsp.crestrictarray.present", |
6422 | 14 | FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL |
6423 | 14 | } |
6424 | 14 | }, |
6425 | 14 | { |
6426 | 14 | &hf_mswsp_cnoderestrict_cnode, |
6427 | 14 | { |
6428 | 14 | "Weight", "mswsp.cnoderestrict.cnode", |
6429 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6430 | 14 | } |
6431 | 14 | }, |
6432 | 14 | { |
6433 | 14 | &hf_mswsp_cbasestorvariant_vtype, |
6434 | 14 | { |
6435 | 14 | "vType", "mswsp.cbasestorvariant.vtype", |
6436 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6437 | 14 | } |
6438 | 14 | }, |
6439 | 14 | { |
6440 | 14 | &hf_mswsp_cbasestorvariant_vvalue, |
6441 | 14 | { |
6442 | 14 | "vValue", "mswsp.cbasestorvariant.vvalue", |
6443 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6444 | 14 | } |
6445 | 14 | }, |
6446 | 14 | { |
6447 | 14 | &hf_mswsp_cbasestorvariant_vdata1, |
6448 | 14 | { |
6449 | 14 | "vData1", "mswsp.cbasestorvariant.vdata1", |
6450 | 14 | FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL |
6451 | 14 | } |
6452 | 14 | }, |
6453 | 14 | { |
6454 | 14 | &hf_mswsp_cbasestorvariant_vdata2, |
6455 | 14 | { |
6456 | 14 | "vData2", "mswsp.cbasestorvariant.vdata2", |
6457 | 14 | FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL |
6458 | 14 | } |
6459 | 14 | }, |
6460 | 14 | { |
6461 | 14 | &hf_mswsp_cbasestorvariant_num, |
6462 | 14 | { |
6463 | 14 | "num", "mswsp.cbasestorvariant.num", |
6464 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6465 | 14 | } |
6466 | 14 | }, |
6467 | 14 | { |
6468 | 14 | &hf_mswsp_cbasestorvariant_cdims, |
6469 | 14 | { |
6470 | 14 | "cDims", "mswsp.cbasestorvariant.cdims", |
6471 | 14 | FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL |
6472 | 14 | } |
6473 | 14 | }, |
6474 | 14 | { |
6475 | 14 | &hf_mswsp_cbasestorvariant_ffeatures, |
6476 | 14 | { |
6477 | 14 | "fFeatures", "mswsp.cbasestorvariant.ffeatures", |
6478 | 14 | FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL |
6479 | 14 | } |
6480 | 14 | }, |
6481 | 14 | { |
6482 | 14 | &hf_mswsp_cbasestorvariant_cbelements, |
6483 | 14 | { |
6484 | 14 | "cbElements", "mswsp.cbasestorvariant.cbelements", |
6485 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6486 | 14 | } |
6487 | 14 | }, |
6488 | 14 | { |
6489 | 14 | &hf_mswsp_cbasestorvariant_rgsabound, |
6490 | 14 | { |
6491 | 14 | "Rgsabound", "mswsp.cbasestorvariant.rgsabound", |
6492 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6493 | 14 | } |
6494 | 14 | }, |
6495 | 14 | { |
6496 | 14 | &hf_mswsp_cdbcolid_ekind, |
6497 | 14 | { |
6498 | 14 | "eKind", "mswsp.cdbcolid.ekind", |
6499 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6500 | 14 | } |
6501 | 14 | }, |
6502 | 14 | { |
6503 | 14 | &hf_mswsp_cdbcolid_ulid, |
6504 | 14 | { |
6505 | 14 | "ulId", "mswsp.cdbcolid.ulid", |
6506 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6507 | 14 | } |
6508 | 14 | }, |
6509 | 14 | { |
6510 | 14 | &hf_mswsp_cdbcolid_vstring, |
6511 | 14 | { |
6512 | 14 | "vString", "mswsp.cdbcolid.vstring", |
6513 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6514 | 14 | } |
6515 | 14 | }, |
6516 | 14 | { |
6517 | 14 | &hf_mswsp_cdbprop_id, |
6518 | 14 | { |
6519 | 14 | "Id", "mswsp.cdbprop.id", |
6520 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6521 | 14 | } |
6522 | 14 | }, |
6523 | 14 | { |
6524 | 14 | &hf_mswsp_cdbprop_options, |
6525 | 14 | { |
6526 | 14 | "Options", "mswsp.cdbprop.options", |
6527 | 14 | FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL |
6528 | 14 | } |
6529 | 14 | }, |
6530 | 14 | { |
6531 | 14 | &hf_mswsp_cdbprop_status, |
6532 | 14 | { |
6533 | 14 | "Status", "mswsp.cdbprop.status", |
6534 | 14 | FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL |
6535 | 14 | } |
6536 | 14 | }, |
6537 | 14 | { |
6538 | 14 | &hf_mswsp_cdbpropset_cprops, |
6539 | 14 | { |
6540 | 14 | "cProperties", "mswsp.cdbpropset.cprops", |
6541 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6542 | 14 | } |
6543 | 14 | }, |
6544 | 14 | { |
6545 | 14 | &hf_mswsp_rangeboundry_ultype, |
6546 | 14 | { |
6547 | 14 | "ulType", "mswsp.rangeboundry.ultype", |
6548 | 14 | FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL |
6549 | 14 | } |
6550 | 14 | }, |
6551 | 14 | { |
6552 | 14 | &hf_mswsp_rangeboundry_labelpresent, |
6553 | 14 | { |
6554 | 14 | "labelPresent", "mswsp.rangeboundry.labelpresent", |
6555 | 14 | FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL |
6556 | 14 | } |
6557 | 14 | }, |
6558 | 14 | { |
6559 | 14 | &hf_mswsp_rangeboundry_cclabel, |
6560 | 14 | { |
6561 | 14 | "ccLabel", "mswsp.rangeboundry.cclabel", |
6562 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6563 | 14 | } |
6564 | 14 | }, |
6565 | 14 | { |
6566 | 14 | &hf_mswsp_rangeboundry_label, |
6567 | 14 | { |
6568 | 14 | "Label", "mswsp.rangeboundry.label", |
6569 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6570 | 14 | } |
6571 | 14 | }, |
6572 | 14 | { |
6573 | 14 | &hf_mswsp_crangecategspec_crange, |
6574 | 14 | { |
6575 | 14 | "cRange", "mswsp.crangecategspec.crange", |
6576 | 14 | FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL |
6577 | 14 | } |
6578 | 14 | }, |
6579 | 14 | { |
6580 | 14 | &hf_mswsp_ccategspec_type, |
6581 | 14 | { |
6582 | 14 | "type", "mswsp.ccategspec.type", |
6583 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6584 | 14 | } |
6585 | 14 | }, |
6586 | 14 | { |
6587 | 14 | &hf_mswsp_caggregspec_type, |
6588 | 14 | { |
6589 | 14 | "type", "mswsp.caggregspec.type", |
6590 | 14 | FT_UINT8, BASE_DEC, VALS(DBAGGTTYPE), 0, NULL, HFILL |
6591 | 14 | } |
6592 | 14 | }, |
6593 | 14 | { |
6594 | 14 | &hf_mswsp_caggregspec_ccalias, |
6595 | 14 | { |
6596 | 14 | "ccAlias", "mswsp.caggregspec.ccalias", |
6597 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6598 | 14 | } |
6599 | 14 | }, |
6600 | 14 | { |
6601 | 14 | &hf_mswsp_caggregspec_alias, |
6602 | 14 | { |
6603 | 14 | "Alias", "mswsp.caggregspec.alias", |
6604 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6605 | 14 | } |
6606 | 14 | }, |
6607 | 14 | { |
6608 | 14 | &hf_mswsp_caggregspec_idcolumn, |
6609 | 14 | { |
6610 | 14 | "idColumn", "mswsp.caggregspec.idcolumn", |
6611 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6612 | 14 | } |
6613 | 14 | }, |
6614 | 14 | { |
6615 | 14 | &hf_mswsp_caggregspec_ulmaxnumtoreturn, |
6616 | 14 | { |
6617 | 14 | "ulMaxNumToReturn", |
6618 | 14 | "mswsp.caggregspec.ulmaxnumtoreturn", |
6619 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6620 | 14 | } |
6621 | 14 | }, |
6622 | 14 | { |
6623 | 14 | &hf_mswsp_caggregspec_idrepresentative, |
6624 | 14 | { |
6625 | 14 | "idRepresentative", |
6626 | 14 | "mswsp.caggregspec.idrepresentative", |
6627 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6628 | 14 | } |
6629 | 14 | }, |
6630 | 14 | { |
6631 | 14 | &hf_mswsp_caggregset_count, |
6632 | 14 | { |
6633 | 14 | "count", "mswsp.caggregset.count", |
6634 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6635 | 14 | } |
6636 | 14 | }, |
6637 | 14 | { |
6638 | 14 | &hf_mswsp_caggregsortkey_order, |
6639 | 14 | { |
6640 | 14 | "order", "mswsp.caggregsortkey.order", |
6641 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6642 | 14 | } |
6643 | 14 | }, |
6644 | 14 | { |
6645 | 14 | &hf_mswsp_csortaggregset_count, |
6646 | 14 | { |
6647 | 14 | "count", "mswsp.csortaggregset.count", |
6648 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6649 | 14 | } |
6650 | 14 | }, |
6651 | 14 | { |
6652 | 14 | &hf_mswsp_cingroupsortaggregset_type, |
6653 | 14 | { |
6654 | 14 | "Type", "mswsp.cingroupsortaggregset.type", |
6655 | 14 | FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL |
6656 | 14 | } |
6657 | 14 | }, |
6658 | 14 | { |
6659 | 14 | &hf_mswsp_cingroupsortaggregsets_count, |
6660 | 14 | { |
6661 | 14 | "count", "mswsp.cingroupsortaggregsets.count", |
6662 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6663 | 14 | } |
6664 | 14 | }, |
6665 | 14 | { |
6666 | 14 | &hf_mswsp_categorizationspec_cmaxres, |
6667 | 14 | { |
6668 | 14 | "cMaxResults", "mswsp.categorizationspec.cmaxres", |
6669 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6670 | 14 | } |
6671 | 14 | }, |
6672 | 14 | { |
6673 | 14 | &hf_mswsp_crowsetprops_ulmaxopenrows, |
6674 | 14 | { |
6675 | 14 | "ulMaxOpenRows (ignored)", "mswsp.crowsetprops.ulmaxopenrows", |
6676 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6677 | 14 | } |
6678 | 14 | }, |
6679 | 14 | { |
6680 | 14 | &hf_mswsp_crowsetprops_ulmemusage, |
6681 | 14 | { |
6682 | 14 | "ulMemUsage (ignored)", "mswsp.crowsetprops.ulmemusage", |
6683 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6684 | 14 | } |
6685 | 14 | }, |
6686 | 14 | { |
6687 | 14 | &hf_mswsp_crowsetprops_cmaxresults, |
6688 | 14 | { |
6689 | 14 | "cMaxResults", "mswsp.crowsetprops.cmaxresults", |
6690 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6691 | 14 | } |
6692 | 14 | }, |
6693 | 14 | { |
6694 | 14 | &hf_mswsp_crowsetprops_ccmdtimeout, |
6695 | 14 | { |
6696 | 14 | "cCmdTimeout", "mswsp.crowsetprops.ccmdtimeout", |
6697 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6698 | 14 | } |
6699 | 14 | }, |
6700 | 14 | { |
6701 | 14 | &hf_mswsp_cpidmapper_count, |
6702 | 14 | { |
6703 | 14 | "count", "mswsp.cpidmapper.count", |
6704 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6705 | 14 | } |
6706 | 14 | }, |
6707 | 14 | { |
6708 | 14 | &hf_mswsp_ccolumngroup_count, |
6709 | 14 | { |
6710 | 14 | "count", "mswsp.ccolumngroup.count", |
6711 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6712 | 14 | } |
6713 | 14 | }, |
6714 | 14 | { |
6715 | 14 | &hf_mswsp_ccolumngroup_grouppid, |
6716 | 14 | { |
6717 | 14 | "groupPid", "mswsp.ccolumngroup.grouppid", |
6718 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6719 | 14 | } |
6720 | 14 | }, |
6721 | 14 | { |
6722 | 14 | &hf_mswsp_ccolumngroup_pid, |
6723 | 14 | { |
6724 | 14 | "pid", "mswsp.ccolumngroup.pid", |
6725 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6726 | 14 | } |
6727 | 14 | }, |
6728 | 14 | { |
6729 | 14 | &hf_mswsp_ccolumngrouparray_count, |
6730 | 14 | { |
6731 | 14 | "count", "mswsp.ccolumngrouparray.count", |
6732 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6733 | 14 | } |
6734 | 14 | }, |
6735 | 14 | { |
6736 | 14 | &hf_mswsp_int32array_value, |
6737 | 14 | { |
6738 | 14 | "value", "mswsp.int32array.value", |
6739 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6740 | 14 | } |
6741 | 14 | }, |
6742 | 14 | { |
6743 | 14 | &hf_mswsp_crowseeknext_cskip, |
6744 | 14 | { |
6745 | 14 | "cskip", "mswsp.crowseeknext.cskip", |
6746 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6747 | 14 | } |
6748 | 14 | }, |
6749 | 14 | { |
6750 | 14 | &hf_mswsp_crowseekat_bmkoffset, |
6751 | 14 | { |
6752 | 14 | "bmkoffset", "mswsp.crowseekat.bmkoffset", |
6753 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6754 | 14 | } |
6755 | 14 | }, |
6756 | 14 | { |
6757 | 14 | &hf_mswsp_crowseekat_skip, |
6758 | 14 | { |
6759 | 14 | "skip", "mswsp.crowseekat.skip", |
6760 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6761 | 14 | } |
6762 | 14 | }, |
6763 | 14 | { |
6764 | 14 | &hf_mswsp_crowseekat_hregion, |
6765 | 14 | { |
6766 | 14 | "hregion", "mswsp.crowseekat.hregion", |
6767 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6768 | 14 | } |
6769 | 14 | }, |
6770 | 14 | { |
6771 | 14 | &hf_mswsp_crowseekatratio_ulnumerator, |
6772 | 14 | { |
6773 | 14 | "ulnumerator", "mswsp.crowseekatratio.ulnumerator", |
6774 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6775 | 14 | } |
6776 | 14 | }, |
6777 | 14 | { |
6778 | 14 | &hf_mswsp_crowseekatratio_uldenominator, |
6779 | 14 | { |
6780 | 14 | "uldenominator", "mswsp.crowseekatratio.uldenominator", |
6781 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6782 | 14 | } |
6783 | 14 | }, |
6784 | 14 | { |
6785 | 14 | &hf_mswsp_crowseekatratio_hregion, |
6786 | 14 | { |
6787 | 14 | "hregion", "mswsp.crowseekatratio.hregion", |
6788 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6789 | 14 | } |
6790 | 14 | }, |
6791 | 14 | { |
6792 | 14 | &hf_mswsp_crowseekbybookmark_cbookmarks, |
6793 | 14 | { |
6794 | 14 | "cbookmarks", "mswsp.crowseekbybookmark.cbookmarks", |
6795 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6796 | 14 | } |
6797 | 14 | }, |
6798 | 14 | { |
6799 | 14 | &hf_mswsp_crowseekbybookmark_maxret, |
6800 | 14 | { |
6801 | 14 | "maxret", "mswsp.crowseekbybookmark.maxret", |
6802 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6803 | 14 | } |
6804 | 14 | }, |
6805 | 14 | { |
6806 | 14 | &hf_mswsp_crowvariantinfo_count64, |
6807 | 14 | { |
6808 | 14 | "count", "mswsp.crowvariantinfo.count64", |
6809 | 14 | FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL |
6810 | 14 | } |
6811 | 14 | }, |
6812 | 14 | { |
6813 | 14 | &hf_mswsp_arrayvector_address64, |
6814 | 14 | { |
6815 | 14 | "address of array", "mswsp.arrayvector.address64", |
6816 | 14 | FT_UINT64, BASE_HEX, NULL, 0, NULL, HFILL |
6817 | 14 | } |
6818 | 14 | }, |
6819 | 14 | { |
6820 | 14 | &hf_mswsp_crowvariantinfo_count32, |
6821 | 14 | { |
6822 | 14 | "count", "mswsp.crowvariantinfo.count32", |
6823 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6824 | 14 | } |
6825 | 14 | }, |
6826 | 14 | { |
6827 | 14 | &hf_mswsp_arrayvector_address32, |
6828 | 14 | { |
6829 | 14 | "address of array", "mswsp.arrayvector.address", |
6830 | 14 | FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL |
6831 | 14 | } |
6832 | 14 | }, |
6833 | 14 | { |
6834 | 14 | &hf_mswsp_rowvariant_item_address64, |
6835 | 14 | { |
6836 | 14 | "address", "mswsp.rowvariant.item.address64", |
6837 | 14 | FT_UINT64, BASE_HEX, NULL, 0, NULL, HFILL |
6838 | 14 | } |
6839 | 14 | }, |
6840 | 14 | { |
6841 | 14 | &hf_mswsp_rowvariant_item_address32, |
6842 | 14 | { |
6843 | 14 | "address", "mswsp.rowvariant.item.address32", |
6844 | 14 | FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL |
6845 | 14 | } |
6846 | 14 | }, |
6847 | 14 | { |
6848 | 14 | &hf_mswsp_rowvariant_item_value, |
6849 | 14 | { |
6850 | 14 | "value", "mswsp.rowvariant.item.value", |
6851 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6852 | 14 | } |
6853 | 14 | }, |
6854 | 14 | { |
6855 | 14 | &hf_mswsp_rowvariant_vtype, |
6856 | 14 | { |
6857 | 14 | "vtype", "mswsp.rowvariant.vtype", |
6858 | 14 | FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL |
6859 | 14 | } |
6860 | 14 | }, |
6861 | 14 | { |
6862 | 14 | &hf_mswsp_rowvariant_reserved1, |
6863 | 14 | { |
6864 | 14 | "reserved1", "mswsp.rowvariant.reserved1", |
6865 | 14 | FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL |
6866 | 14 | } |
6867 | 14 | }, |
6868 | 14 | { |
6869 | 14 | &hf_mswsp_rowvariant_reserved2, |
6870 | 14 | { |
6871 | 14 | "reserved2", "mswsp.rowvariant.reserved2", |
6872 | 14 | FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL |
6873 | 14 | } |
6874 | 14 | }, |
6875 | 14 | { |
6876 | 14 | &hf_mswsp_ctablecolumn_status, |
6877 | 14 | { |
6878 | 14 | "status", "mswsp.ctablecolumn.name", |
6879 | 14 | FT_UINT8, BASE_HEX, VALS(STATUS), 0, NULL, HFILL |
6880 | 14 | } |
6881 | 14 | }, |
6882 | 14 | { |
6883 | 14 | &hf_mswsp_ctablecolumn_length, |
6884 | 14 | { |
6885 | 14 | "length", "mswsp.ctablecolumn.length", |
6886 | 14 | FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL |
6887 | 14 | } |
6888 | 14 | }, |
6889 | 14 | { |
6890 | 14 | &hf_mswsp_msg_cpmcreatequery_size, |
6891 | 14 | { |
6892 | 14 | "size", "mswsp.cpmcreatequery.size", |
6893 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6894 | 14 | } |
6895 | 14 | }, |
6896 | 14 | { |
6897 | 14 | &hf_mswsp_msg_cpmcreatequery_ccolumnsetpresent, |
6898 | 14 | { |
6899 | 14 | "CColumnSetPresent", "mswsp.cpmcreatequery.ccolumnsetpresent", |
6900 | 14 | FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL |
6901 | 14 | } |
6902 | 14 | }, |
6903 | 14 | { |
6904 | 14 | &hf_mswsp_msg_cpmcreatequery_crestrictionpresent, |
6905 | 14 | { |
6906 | 14 | "CRestrictionPresent", "mswsp.cpmcreatequery.crestrictionpresent", |
6907 | 14 | FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL |
6908 | 14 | } |
6909 | 14 | }, |
6910 | 14 | { |
6911 | 14 | &hf_mswsp_msg_cpmcreatequery_csortpresent, |
6912 | 14 | { |
6913 | 14 | "CSortPresent", "mswsp.cpmcreatequery.csortpresent", |
6914 | 14 | FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL |
6915 | 14 | } |
6916 | 14 | }, |
6917 | 14 | { |
6918 | 14 | &hf_mswsp_msg_cpmcreatequery_ccategpresent, |
6919 | 14 | { |
6920 | 14 | "CCategorizationSetPresent", "mswsp.cpmcreatequery.ccategpresent", |
6921 | 14 | FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL |
6922 | 14 | } |
6923 | 14 | }, |
6924 | 14 | { |
6925 | 14 | &hf_mswsp_msg_cpmcreatequery_ccateg_count, |
6926 | 14 | { |
6927 | 14 | "count", "mswsp.cpmcreatequery.ccateg.count", |
6928 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6929 | 14 | } |
6930 | 14 | }, |
6931 | 14 | { |
6932 | 14 | &hf_mswsp_msg_cpmcreatequery_trueseq, |
6933 | 14 | { |
6934 | 14 | "TrueSequential", "mswsp.cpmcreatequery.trueseq", |
6935 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6936 | 14 | } |
6937 | 14 | }, |
6938 | 14 | { |
6939 | 14 | &hf_mswsp_msg_cpmcreatequery_workid, |
6940 | 14 | { |
6941 | 14 | "WorkId", "mswsp.cpmcreatequery.workid", |
6942 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6943 | 14 | } |
6944 | 14 | }, |
6945 | 14 | { |
6946 | 14 | &hf_mswsp_msg_cpmcreatequery_cursors, |
6947 | 14 | { |
6948 | 14 | "Cursors", "mswsp.cpmcreatequery.cursors", |
6949 | 14 | FT_BYTES, SEP_SPACE, NULL, 0, NULL, HFILL |
6950 | 14 | } |
6951 | 14 | }, |
6952 | 14 | { |
6953 | 14 | &hf_mswsp_msg_cpmgetrows_hcursor, |
6954 | 14 | { |
6955 | 14 | "hCursor", "mswsp.msg.cpmgetrows.hcursor", |
6956 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6957 | 14 | } |
6958 | 14 | }, |
6959 | 14 | { |
6960 | 14 | &hf_mswsp_msg_cpmgetrows_rowstotransfer, |
6961 | 14 | { |
6962 | 14 | "cRowsToTransfer", "mswsp.msg.cpmgetrows.rowstotransfer", |
6963 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6964 | 14 | } |
6965 | 14 | }, |
6966 | 14 | { |
6967 | 14 | &hf_mswsp_msg_cpmgetrows_rowwidth, |
6968 | 14 | { |
6969 | 14 | "cbRowWidth", "mswsp.msg.cpmgetrows.rowswidth", |
6970 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6971 | 14 | } |
6972 | 14 | }, |
6973 | 14 | { |
6974 | 14 | &hf_mswsp_msg_cpmgetrows_cbseek, |
6975 | 14 | { |
6976 | 14 | "cbSeek", "mswsp.msg.cpmgetrows.cbseek", |
6977 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6978 | 14 | } |
6979 | 14 | }, |
6980 | 14 | { |
6981 | 14 | &hf_mswsp_msg_cpmgetrows_cbreserved, |
6982 | 14 | { |
6983 | 14 | "cbReserved", "mswsp.msg.cpmgetrows.cbreserved", |
6984 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6985 | 14 | } |
6986 | 14 | }, |
6987 | 14 | { |
6988 | 14 | &hf_mswsp_msg_cpmgetrows_cbreadbuffer, |
6989 | 14 | { |
6990 | 14 | "cbReadBuffer", "mswsp.msg.cpmgetrows.cbreadbuffer", |
6991 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
6992 | 14 | } |
6993 | 14 | }, |
6994 | 14 | { |
6995 | 14 | &hf_mswsp_msg_cpmgetrows_ulclientbase, |
6996 | 14 | { |
6997 | 14 | "ulClientBase", "mswsp.msg.cpmgetrows.ulclientbase", |
6998 | 14 | FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL |
6999 | 14 | } |
7000 | 14 | }, |
7001 | 14 | { |
7002 | 14 | &hf_mswsp_msg_cpmgetrows_fbwdfetch, |
7003 | 14 | { |
7004 | 14 | "fBwdFetch", "mswsp.msg.cpmgetrows.fbwdfetch", |
7005 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7006 | 14 | } |
7007 | 14 | }, |
7008 | 14 | { |
7009 | 14 | &hf_mswsp_msg_cpmgetrows_etype, |
7010 | 14 | { |
7011 | 14 | "eType", "mswsp.msg.cpmgetrows.etype", |
7012 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7013 | 14 | } |
7014 | 14 | }, |
7015 | 14 | { |
7016 | 14 | &hf_mswsp_msg_cpmgetrows_chapt, |
7017 | 14 | { |
7018 | 14 | "chapt", "mswsp.msg.cpmgetrows.chapt", |
7019 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7020 | 14 | } |
7021 | 14 | }, |
7022 | 14 | { |
7023 | 14 | &hf_mswsp_msg_cpmgetrows_crowsreturned, |
7024 | 14 | { |
7025 | 14 | "cRowsReturned", "mswsp.msg.cpmgetrows.crowsreturned", |
7026 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7027 | 14 | } |
7028 | 14 | }, |
7029 | 14 | { |
7030 | 14 | &hf_mswsp_msg_cpmratiofinished_hcursor, |
7031 | 14 | { |
7032 | 14 | "hCursor", "mswsp.msg.cpmratiofinished_hcursor", |
7033 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7034 | 14 | } |
7035 | 14 | }, |
7036 | 14 | { |
7037 | 14 | &hf_mswsp_msg_cpmratiofinished_fquick, |
7038 | 14 | { |
7039 | 14 | "fQuick", "mswsp.msg.cpmratiofinished_fquick", |
7040 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7041 | 14 | } |
7042 | 14 | }, |
7043 | 14 | { |
7044 | 14 | &hf_mswsp_msg_cpmratiofinished_ulnumerator, |
7045 | 14 | { |
7046 | 14 | "ulNumerator", "mswsp.msg.cpmratiofinished_ulnumerator", |
7047 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7048 | 14 | } |
7049 | 14 | }, |
7050 | 14 | { |
7051 | 14 | &hf_mswsp_msg_cpmratiofinished_uldenominator, |
7052 | 14 | { |
7053 | 14 | "ulDenominator", "mswsp.msg.cpmratiofinished_uldenominator", |
7054 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7055 | 14 | } |
7056 | 14 | }, |
7057 | 14 | { |
7058 | 14 | &hf_mswsp_msg_cpmratiofinished_crows, |
7059 | 14 | { |
7060 | 14 | "cRows", "mswsp.msg.cpmratiofinished_crows", |
7061 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7062 | 14 | } |
7063 | 14 | }, |
7064 | 14 | { |
7065 | 14 | &hf_mswsp_msg_cpmratiofinished_fnewrows, |
7066 | 14 | { |
7067 | 14 | "fNewRows", "mswsp.msg.cpmratiofinished_fnewrows", |
7068 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7069 | 14 | } |
7070 | 14 | }, |
7071 | 14 | { |
7072 | 14 | &hf_mswsp_msg_cpmcomparebmk_hcursor, |
7073 | 14 | { |
7074 | 14 | "hCursor", "mswsp.msg.cpmcomparebmk.hcursor", |
7075 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7076 | 14 | } |
7077 | 14 | }, |
7078 | 14 | { |
7079 | 14 | &hf_mswsp_msg_cpmcomparebmk_chapt, |
7080 | 14 | { |
7081 | 14 | "chapt", "mswsp.msg.cpmcomparebmk.chapt", |
7082 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7083 | 14 | } |
7084 | 14 | }, |
7085 | 14 | { |
7086 | 14 | &hf_mswsp_msg_cpmcomparebmk_bmkfirst, |
7087 | 14 | { |
7088 | 14 | "bmkFirst", "mswsp.msg.cpmcomparebmk.bmkfirst", |
7089 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7090 | 14 | } |
7091 | 14 | }, |
7092 | 14 | { |
7093 | 14 | &hf_mswsp_msg_cpmcomparebmk_bmksecond, |
7094 | 14 | { |
7095 | 14 | "bmkSecond", "mswsp.msg.cpmcomparebmk.bmksecond", |
7096 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7097 | 14 | } |
7098 | 14 | }, |
7099 | 14 | { |
7100 | 14 | &hf_mswsp_msg_cpmcomparebmk_dwcomparison, |
7101 | 14 | { |
7102 | 14 | "dwComparison", "mswsp.msg.cpmcomparebmk.dwcomparison", |
7103 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7104 | 14 | } |
7105 | 14 | }, |
7106 | 14 | { |
7107 | 14 | &hf_mswsp_msg_cpmgetapproxpos_hcursor, |
7108 | 14 | { |
7109 | 14 | "hCursor", "mswsp.msg.cpmgetapproxpos.hcursor", |
7110 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7111 | 14 | } |
7112 | 14 | }, |
7113 | 14 | { |
7114 | 14 | &hf_mswsp_msg_cpmgetapproxpos_chapt, |
7115 | 14 | { |
7116 | 14 | "chapt", "mswsp.msg.cpmgetapproxpos.chapt", |
7117 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7118 | 14 | } |
7119 | 14 | }, |
7120 | 14 | { |
7121 | 14 | &hf_mswsp_msg_cpmgetapproxpos_bmk, |
7122 | 14 | { |
7123 | 14 | "bmk", "mswsp.msg.cpmgetapproxpos.bmk", |
7124 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7125 | 14 | } |
7126 | 14 | }, |
7127 | 14 | { |
7128 | 14 | &hf_mswsp_msg_cpmgetapproxpos_numerator, |
7129 | 14 | { |
7130 | 14 | "numerator", "mswsp.msg.cpmgetapproxpos.numerator", |
7131 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7132 | 14 | } |
7133 | 14 | }, |
7134 | 14 | { |
7135 | 14 | &hf_mswsp_msg_cpmgetapproxpos_denominator, |
7136 | 14 | { |
7137 | 14 | "denominator", "mswsp.msg.cpmgetapproxpos.denominator", |
7138 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7139 | 14 | } |
7140 | 14 | }, |
7141 | 14 | { |
7142 | 14 | &hf_mswsp_msg_cpmsetbinding_hcursor, |
7143 | 14 | { |
7144 | 14 | "hCursor", "mswsp.msg.cpmsetbinding.hcursor", |
7145 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7146 | 14 | } |
7147 | 14 | }, |
7148 | 14 | { |
7149 | 14 | &hf_mswsp_msg_cpmsetbinding_cbrow, |
7150 | 14 | { |
7151 | 14 | "cBrow", "mswsp.msg.cpmsetbinding.cbrow", |
7152 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7153 | 14 | } |
7154 | 14 | }, |
7155 | 14 | { |
7156 | 14 | &hf_mswsp_msg_cpmsetbinding_desc, |
7157 | 14 | { |
7158 | 14 | "cbBindingDesc", "mswsp.msg.cpmsetbinding.desc", |
7159 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7160 | 14 | } |
7161 | 14 | }, |
7162 | 14 | { |
7163 | 14 | &hf_mswsp_msg_cpmsetbinding_dummy, |
7164 | 14 | { |
7165 | 14 | "dummy", "mswsp.msg.cpmsetbinding.dummy", |
7166 | 14 | FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL |
7167 | 14 | } |
7168 | 14 | }, |
7169 | 14 | { |
7170 | 14 | &hf_mswsp_msg_cpmsetbinding_ccolumns, |
7171 | 14 | { |
7172 | 14 | "cColumns", "mswsp.msg.cpmsetbinding.ccolumns", |
7173 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7174 | 14 | } |
7175 | 14 | }, |
7176 | 14 | { |
7177 | 14 | &hf_mswsp_msg_cpmsetbinding_acolumns, |
7178 | 14 | { |
7179 | 14 | "aColumns", "mswsp.msg.cpmsetbinding.acolumns", |
7180 | 14 | FT_BYTES, SEP_DOT, NULL, 0, NULL, HFILL |
7181 | 14 | } |
7182 | 14 | }, |
7183 | 14 | { |
7184 | 14 | &hf_mswsp_msg_cpmsendnotify_watchnotify, |
7185 | 14 | { |
7186 | 14 | "watchNotify", "mswsp.msg.cpmsendnotify.watchnotify", |
7187 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7188 | 14 | } |
7189 | 14 | }, |
7190 | 14 | { |
7191 | 14 | &hf_mswsp_msg_cpmgetquerystatus_hcursor, |
7192 | 14 | { |
7193 | 14 | "hCursor", "mswsp.msg.cpmquerystatus.hcursor", |
7194 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7195 | 14 | } |
7196 | 14 | }, |
7197 | 14 | { |
7198 | 14 | &hf_mswsp_msg_cpmgetquerystatus_qstatus, |
7199 | 14 | { |
7200 | 14 | "QStatus", "mswsp.msg.cpmquerystatus.qstatus", |
7201 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7202 | 14 | } |
7203 | 14 | }, |
7204 | 14 | { |
7205 | 14 | &hf_mswsp_msg_cpmcistate_cbstruct, |
7206 | 14 | { |
7207 | 14 | "cbStruct", "mswsp.msg.cpmcistate.cbstruct", |
7208 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7209 | 14 | } |
7210 | 14 | }, |
7211 | 14 | { |
7212 | 14 | &hf_mswsp_msg_cpmcistate_cwordlist, |
7213 | 14 | { |
7214 | 14 | "cbWordList", "mswsp.msg.cpmcistate.cbwordlist", |
7215 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7216 | 14 | } |
7217 | 14 | }, |
7218 | 14 | { |
7219 | 14 | &hf_mswsp_msg_cpmcistate_cpersistindex, |
7220 | 14 | { |
7221 | 14 | "cbPersistentIndex", "mswsp.msg.cpmcistate.cbpersistindex", |
7222 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7223 | 14 | } |
7224 | 14 | }, |
7225 | 14 | { |
7226 | 14 | &hf_mswsp_msg_cpmcistate_cqueries, |
7227 | 14 | { |
7228 | 14 | "cQueries", "mswsp.msg.cpmcistate.cqueries", |
7229 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7230 | 14 | } |
7231 | 14 | }, |
7232 | 14 | { |
7233 | 14 | &hf_mswsp_msg_cpmcistate_cfreshtest, |
7234 | 14 | { |
7235 | 14 | "cFreshTest", "mswsp.msg.cpmcistate.cfreshtest", |
7236 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7237 | 14 | } |
7238 | 14 | }, |
7239 | 14 | { |
7240 | 14 | &hf_mswsp_msg_cpmcistate_dwmergeprogress, |
7241 | 14 | { |
7242 | 14 | "dwMergeProgress", "mswsp.msg.cpmcistate.dwmergeprogress", |
7243 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7244 | 14 | } |
7245 | 14 | }, |
7246 | 14 | { |
7247 | 14 | &hf_mswsp_msg_cpmcistate_estate, |
7248 | 14 | { |
7249 | 14 | "eState", "mswsp.msg.cpmcistate.estate", |
7250 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7251 | 14 | } |
7252 | 14 | }, |
7253 | 14 | { |
7254 | 14 | &hf_mswsp_msg_cpmcistate_cfiltereddocs, |
7255 | 14 | { |
7256 | 14 | "cFilteredDocuments", "mswsp.msg.cpmcistate.cfiltereddocs", |
7257 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7258 | 14 | } |
7259 | 14 | }, |
7260 | 14 | { |
7261 | 14 | &hf_mswsp_msg_cpmcistate_ctotaldocs, |
7262 | 14 | { |
7263 | 14 | "cTotalDocuments", "mswsp.msg.cpmcistate.ctotaldocs", |
7264 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7265 | 14 | } |
7266 | 14 | }, |
7267 | 14 | { |
7268 | 14 | &hf_mswsp_msg_cpmcistate_cpendingscans, |
7269 | 14 | { |
7270 | 14 | "cPendingScans", "mswsp.msg.cpmcistate.cpendingscans", |
7271 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7272 | 14 | } |
7273 | 14 | }, |
7274 | 14 | { |
7275 | 14 | &hf_mswsp_msg_cpmcistate_dwindexsize, |
7276 | 14 | { |
7277 | 14 | "dwIndexSize", "mswsp.msg.cpmcistate.dwindexsize", |
7278 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7279 | 14 | } |
7280 | 14 | }, |
7281 | 14 | { |
7282 | 14 | &hf_mswsp_msg_cpmcistate_cuniquekeys, |
7283 | 14 | { |
7284 | 14 | "cUniqueKeys", "mswsp.msg.cpmcistate.cuniquekeys", |
7285 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7286 | 14 | } |
7287 | 14 | }, |
7288 | 14 | { |
7289 | 14 | &hf_mswsp_msg_cpmcistate_csecqdocuments, |
7290 | 14 | { |
7291 | 14 | "cSecQDocuments", "mswsp.msg.cpmcistate.csecqdocuments", |
7292 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7293 | 14 | } |
7294 | 14 | }, |
7295 | 14 | { |
7296 | 14 | &hf_mswsp_msg_cpmcistate_dwpropcachesize, |
7297 | 14 | { |
7298 | 14 | "dwPropCacheSize", "mswsp.msg.cpmcistate.dwpropcachesize", |
7299 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7300 | 14 | } |
7301 | 14 | }, |
7302 | 14 | { |
7303 | 14 | &hf_mswsp_msg_cpmfetchvalue_wid, |
7304 | 14 | { |
7305 | 14 | "wid", "mswsp.msg.cpmfetchvalue.wid", |
7306 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7307 | 14 | } |
7308 | 14 | }, |
7309 | 14 | { |
7310 | 14 | &hf_mswsp_msg_cpmfetchvalue_cbsofar, |
7311 | 14 | { |
7312 | 14 | "cbSoFar", "mswsp.msg.cpmfetchvalue.cbsofar", |
7313 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7314 | 14 | } |
7315 | 14 | }, |
7316 | 14 | { |
7317 | 14 | &hf_mswsp_msg_cpmfetchvalue_cbpropspec, |
7318 | 14 | { |
7319 | 14 | "cbPropSpec", "mswsp.msg.cpmfetchvalue.cbpropspec", |
7320 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7321 | 14 | } |
7322 | 14 | }, |
7323 | 14 | { |
7324 | 14 | &hf_mswsp_msg_cpmfetchvalue_cbchunk, |
7325 | 14 | { |
7326 | 14 | "cbChunk", "mswsp.msg.cpmfetchvalue.chunk", |
7327 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7328 | 14 | } |
7329 | 14 | }, |
7330 | 14 | { |
7331 | 14 | &hf_mswsp_msg_cpmfetchvalue_cbvalue, |
7332 | 14 | { |
7333 | 14 | "cbValue", "mswsp.msg.cpmfetchvalue.cbvalue", |
7334 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7335 | 14 | } |
7336 | 14 | }, |
7337 | 14 | { |
7338 | 14 | &hf_mswsp_msg_cpmfetchvalue_fmoreexists, |
7339 | 14 | { |
7340 | 14 | "fMoreExists", "mswsp.msg.cpmfetchvalue.fmoreexists", |
7341 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7342 | 14 | } |
7343 | 14 | }, |
7344 | 14 | { |
7345 | 14 | &hf_mswsp_msg_cpmfetchvalue_fvalueexists, |
7346 | 14 | { |
7347 | 14 | "fValueExists", "mswsp.msg.cpmfetchvalue.fvalueexists", |
7348 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7349 | 14 | } |
7350 | 14 | }, |
7351 | 14 | { |
7352 | 14 | &hf_mswsp_msg_cpmfetchvalue_vvalue, |
7353 | 14 | { |
7354 | 14 | "vvalue", "mswsp.msg.cpmfetchvalue.vvalue", |
7355 | 14 | FT_BYTES, SEP_SPACE, NULL, 0, NULL, HFILL |
7356 | 14 | } |
7357 | 14 | }, |
7358 | 14 | { |
7359 | 14 | &hf_mswsp_msg_cpmquerystatusex_qstatus, |
7360 | 14 | { |
7361 | 14 | "qStatus", "mswsp.msg.cpmquerystatusex.qstatus", |
7362 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7363 | 14 | } |
7364 | 14 | }, |
7365 | 14 | { |
7366 | 14 | &hf_mswsp_msg_cpmquerystatusex_hcursor, |
7367 | 14 | { |
7368 | 14 | "hCursor", "mswsp.msg.cpmquerystatusex.hcursor", |
7369 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7370 | 14 | } |
7371 | 14 | }, |
7372 | 14 | { |
7373 | 14 | &hf_mswsp_msg_cpmquerystatusex_bmk, |
7374 | 14 | { |
7375 | 14 | "bmk", "mswsp.msg.cpmquerystatusex.bmk", |
7376 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7377 | 14 | } |
7378 | 14 | }, |
7379 | 14 | { |
7380 | 14 | &hf_mswsp_msg_cpmquerystatusex_cfiltereddocs, |
7381 | 14 | { |
7382 | 14 | "cFilteredDocuments", "mswsp.msg.cpmquerystatusex.cfiltereddocs", |
7383 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7384 | 14 | } |
7385 | 14 | }, |
7386 | 14 | { |
7387 | 14 | &hf_mswsp_msg_cpmquerystatusex_cdocstofilter, |
7388 | 14 | { |
7389 | 14 | "cDocumentsToFilter", "mswsp.msg.cpmquerystatusex.cdocstofilter", |
7390 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7391 | 14 | } |
7392 | 14 | }, |
7393 | 14 | { |
7394 | 14 | &hf_mswsp_msg_cpmquerystatusex_dwratiodenom, |
7395 | 14 | { |
7396 | 14 | "dwRatioFinishedDenominator", "mswsp.msg.cpmquerystatusex.dwratiodenom", |
7397 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7398 | 14 | } |
7399 | 14 | }, |
7400 | 14 | { |
7401 | 14 | &hf_mswsp_msg_cpmquerystatusex_dwrationumer, |
7402 | 14 | { |
7403 | 14 | "dwRatioFinishedNumerator", "mswsp.msg.cpmquerystatusex.dwrationumer", |
7404 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7405 | 14 | } |
7406 | 14 | }, |
7407 | 14 | { |
7408 | 14 | &hf_mswsp_msg_cpmquerystatusex_irowbmk, |
7409 | 14 | { |
7410 | 14 | "iRowBmk", "mswsp.msg.cpmquerystatusex.irowbmk", |
7411 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7412 | 14 | } |
7413 | 14 | }, |
7414 | 14 | { |
7415 | 14 | &hf_mswsp_msg_cpmquerystatusex_crowstotal, |
7416 | 14 | { |
7417 | 14 | "cRowsTotal", "mswsp.msg.cpmquerystatusex.crowstotal", |
7418 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7419 | 14 | } |
7420 | 14 | }, |
7421 | 14 | { |
7422 | 14 | &hf_mswsp_msg_cpmquerystatusex_maxrank, |
7423 | 14 | { |
7424 | 14 | "maxRank", "mswsp.msg.cpmquerystatusex.maxrank", |
7425 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7426 | 14 | } |
7427 | 14 | }, |
7428 | 14 | { |
7429 | 14 | &hf_mswsp_msg_cpmquerystatusex_cresultsfound, |
7430 | 14 | { |
7431 | 14 | "cResultsFound", "mswsp.msg.cpmquerystatusex.cresultsfound", |
7432 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7433 | 14 | } |
7434 | 14 | }, |
7435 | 14 | { |
7436 | 14 | &hf_mswsp_msg_cpmquerystatusex_whereid, |
7437 | 14 | { |
7438 | 14 | "whereId", "mswsp.msg.cpmquerystatusex.whereid", |
7439 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7440 | 14 | } |
7441 | 14 | }, |
7442 | 14 | { |
7443 | 14 | &hf_mswsp_msg_cpmrestartposition_hcursor, |
7444 | 14 | { |
7445 | 14 | "hCursor", "mswsp.msg.cpmrestartposition.hcursor", |
7446 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7447 | 14 | } |
7448 | 14 | }, |
7449 | 14 | { |
7450 | 14 | &hf_mswsp_msg_cpmrestartposition_chapt, |
7451 | 14 | { |
7452 | 14 | "chapt", "mswsp.msg.cpmrestartposition.chapt", |
7453 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7454 | 14 | } |
7455 | 14 | }, |
7456 | 14 | { |
7457 | 14 | &hf_mswsp_msg_cpmgetrowsetnotify_wid, |
7458 | 14 | { |
7459 | 14 | "wid", "mswsp.msg.cpmgetrowsetnotify.wid", |
7460 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7461 | 14 | } |
7462 | 14 | }, |
7463 | 14 | { |
7464 | 14 | &hf_mswsp_msg_cpmgetrowsetnotify_moreevents, |
7465 | 14 | { |
7466 | 14 | "moreEvents", "mswsp.msg.cpmgetrowsetnotify.moreevents", |
7467 | 14 | FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL |
7468 | 14 | } |
7469 | 14 | }, |
7470 | 14 | { |
7471 | 14 | &hf_mswsp_msg_cpmgetrowsetnotify_eventtype, |
7472 | 14 | { |
7473 | 14 | "eventType", "mswsp.msg.cpmgetrowsetnotify.eventType", |
7474 | 14 | FT_UINT8, BASE_DEC, NULL, 0xFE, NULL, HFILL |
7475 | 14 | } |
7476 | 14 | }, |
7477 | 14 | { |
7478 | 14 | &hf_mswsp_msg_cpmgetrowsetnotify_rowsetitemstate, |
7479 | 14 | { |
7480 | 14 | "rowSetItemState", "mswsp.msg.cpmgetrowsetnotify.rowsetitemstate", |
7481 | 14 | FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL |
7482 | 14 | } |
7483 | 14 | }, |
7484 | 14 | { |
7485 | 14 | &hf_mswsp_msg_cpmgetrowsetnotify_changeditemstate, |
7486 | 14 | { |
7487 | 14 | "changedItemState", "mswsp.msg.cpmgetrowsetnotify.changeditemState", |
7488 | 14 | FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL |
7489 | 14 | } |
7490 | 14 | }, |
7491 | 14 | { |
7492 | 14 | &hf_mswsp_msg_cpmgetrowsetnotify_rowsetevent, |
7493 | 14 | { |
7494 | 14 | "rowSetEvent", "mswsp.msg.cpmgetrowsetnotify.rowsetevent", |
7495 | 14 | FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL |
7496 | 14 | } |
7497 | 14 | }, |
7498 | 14 | { |
7499 | 14 | &hf_mswsp_msg_cpmgetrowsetnotify_rowseteventdata1, |
7500 | 14 | { |
7501 | 14 | "rowSetEventdata1", "mswsp.msg.cpmgetrowsetnotify.rowseteventdata1", |
7502 | 14 | FT_UINT64, BASE_HEX, NULL, 0, NULL, HFILL |
7503 | 14 | } |
7504 | 14 | }, |
7505 | 14 | { |
7506 | 14 | &hf_mswsp_msg_cpmgetrowsetnotify_rowseteventdata2, |
7507 | 14 | { |
7508 | 14 | "rowSetEventdata2", "mswsp.msg.cpmgetrowsetnotify.rowseteventdata2", |
7509 | 14 | FT_UINT64, BASE_HEX, NULL, 0, NULL, HFILL |
7510 | 14 | } |
7511 | 14 | }, |
7512 | 14 | { |
7513 | 14 | &hf_mswsp_msg_cpmfindindices_cwids, |
7514 | 14 | { |
7515 | 14 | "cWids", "mswsp.msg.cpmfindindices.cwids", |
7516 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7517 | 14 | } |
7518 | 14 | }, |
7519 | 14 | { |
7520 | 14 | &hf_mswsp_msg_cpmfindindices_cdepthprev, |
7521 | 14 | { |
7522 | 14 | "cDepthPrev", "mswsp.msg.cpmfindindices.cdepthprev", |
7523 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7524 | 14 | } |
7525 | 14 | }, |
7526 | 14 | { |
7527 | 14 | &hf_mswsp_msg_cpmfindindices_cdepthnext, |
7528 | 14 | { |
7529 | 14 | "cDepthNext", "mswsp.msg.cpmfindindices.cdepthnext", |
7530 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7531 | 14 | } |
7532 | 14 | }, |
7533 | 14 | { |
7534 | 14 | &hf_mswsp_msg_cpmsetscopeprioritization_priority, |
7535 | 14 | { |
7536 | 14 | "priority", "mswsp.msg.cpmsetscopeprioritization.priority", |
7537 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7538 | 14 | } |
7539 | 14 | }, |
7540 | 14 | { |
7541 | 14 | &hf_mswsp_msg_cpmsetscopeprioritization_eventfreq, |
7542 | 14 | { |
7543 | 14 | "eventFrequency", "mswsp.msg.cpmsetscopeprioritization.eventfreq", |
7544 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7545 | 14 | } |
7546 | 14 | }, |
7547 | 14 | { |
7548 | 14 | &hf_mswsp_msg_cpmsetscopestatisics_dwindexitems, |
7549 | 14 | { |
7550 | 14 | "dwIndexedItems", "mswsp.msg.cpmsetscopestatistics.dwindexitems", |
7551 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7552 | 14 | } |
7553 | 14 | }, |
7554 | 14 | { |
7555 | 14 | &hf_mswsp_msg_cpmsetscopestatisics_dwoutstandingadds, |
7556 | 14 | { |
7557 | 14 | "dwOutstandingAdds", "mswsp.msg.cpmsetscopestatistics.dwoutstandingadds", |
7558 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7559 | 14 | } |
7560 | 14 | }, |
7561 | 14 | { |
7562 | 14 | &hf_mswsp_msg_cpmsetscopestatisics_dwoutstandingmodifies, |
7563 | 14 | { |
7564 | 14 | "dwOutstandingModifies", "mswsp.msg.cpmsetscopestatistics.dwoutstandingmodifies", |
7565 | 14 | FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL |
7566 | 14 | } |
7567 | 14 | } |
7568 | 14 | }; |
7569 | | |
7570 | 14 | static int *ett[] = { |
7571 | 14 | &ett_mswsp, |
7572 | 14 | &ett_mswsp_hdr, |
7573 | 14 | &ett_mswsp_msg, |
7574 | 14 | &ett_mswsp_pad, |
7575 | 14 | &ett_mswsp_property_restriction, |
7576 | 14 | &ett_CRestrictionArray, |
7577 | 14 | &ett_CBaseStorageVariant, |
7578 | 14 | &ett_CBaseStorageVariant_Vector, |
7579 | 14 | &ett_CBaseStorageVariant_Array, |
7580 | 14 | &ett_CDbColId, |
7581 | 14 | &ett_GUID, |
7582 | 14 | &ett_CDbProp, |
7583 | 14 | &ett_CDbPropSet, |
7584 | 14 | &ett_CDbPropSet_Array, |
7585 | 14 | &ett_CRestriction, |
7586 | 14 | &ett_CNodeRestriction, |
7587 | 14 | &ett_CPropertyRestriction, |
7588 | 14 | &ett_CCoercionRestriction, |
7589 | 14 | &ett_CContentRestriction, |
7590 | 14 | &ett_RANGEBOUNDARY, |
7591 | 14 | &ett_CRangeCategSpec, |
7592 | 14 | &ett_CCategSpec, |
7593 | 14 | &ett_CAggregSpec, |
7594 | 14 | &ett_CAggregSet, |
7595 | 14 | &ett_CCategorizationSpec, |
7596 | 14 | &ett_CAggregSortKey, |
7597 | 14 | &ett_CSortAggregSet, |
7598 | 14 | &ett_CInGroupSortAggregSet, |
7599 | 14 | &ett_CInGroupSortAggregSets, |
7600 | 14 | &ett_CRowsetProperties, |
7601 | 14 | &ett_CFullPropSpec, |
7602 | 14 | &ett_CPidMapper, |
7603 | 14 | &ett_CSort, |
7604 | 14 | &ett_CSortSet, |
7605 | 14 | &ett_CNatLanguageRestriction, |
7606 | 14 | &ett_CColumnGroup, |
7607 | 14 | &ett_CColumnGroupArray, |
7608 | 14 | &ett_LCID, |
7609 | 14 | &ett_CTableColumn, |
7610 | 14 | &ett_Array, |
7611 | 14 | &ett_SeekDescription, |
7612 | 14 | &ett_CRowsSeekNext, |
7613 | 14 | &ett_CRowsSeekAt, |
7614 | 14 | &ett_CRowsSeekAtRatio, |
7615 | 14 | &ett_CRowsSeekByBookmark, |
7616 | 14 | &ett_GetRowsRow, |
7617 | 14 | &ett_GetRowsColumn, |
7618 | 14 | &ett_CRowVariant, |
7619 | 14 | &ett_CRowVariant_Vector, |
7620 | 14 | &ett_mswsp_bool_options, |
7621 | 14 | &ett_mswsp_uin32_array, |
7622 | 14 | &ett_mswsp_msg_padding, |
7623 | 14 | &ett_mswsp_msg_creusewhere |
7624 | 14 | }; |
7625 | | |
7626 | 14 | static ei_register_info ei[] = { |
7627 | 14 | { &ei_mswsp_invalid_variant_type, { "mswsp.invalid_variant_type", PI_PROTOCOL, PI_ERROR, "Invalid variant type", EXPFILL }}, |
7628 | 14 | { &ei_missing_msg_context, { "mswsp.msg.cpmgetrows.missing_msg_context", PI_SEQUENCE, PI_WARN, "previous messages needed for context not captured", EXPFILL }}, |
7629 | 14 | { &ei_mswsp_msg_cpmsetbinding_ccolumns, { "mswsp.msg.cpmsetbinding.ccolumns.invalid", PI_PROTOCOL, PI_WARN, "Invalid number of cColumns for packet", EXPFILL }} |
7630 | 14 | }; |
7631 | 14 | int i; |
7632 | | |
7633 | 14 | proto_mswsp = proto_register_protocol("Windows Search Protocol", "MS-WSP", "mswsp"); |
7634 | | |
7635 | 14 | proto_register_field_array(proto_mswsp, hf, array_length(hf)); |
7636 | 14 | proto_register_subtree_array(ett, array_length(ett)); |
7637 | 14 | expert_mswsp = expert_register_protocol(proto_mswsp); |
7638 | 14 | expert_register_field_array(expert_mswsp, ei, array_length(ei)); |
7639 | 2.87k | for (i=0; i<(int)array_length(GuidPropertySet); i++) { |
7640 | 2.85k | guids_add_guid(&GuidPropertySet[i].guid, GuidPropertySet[i].def); |
7641 | 2.85k | } |
7642 | 14 | } |
7643 | | |
7644 | | static int dissect_mswsp_smb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
7645 | 32 | { |
7646 | 32 | smb_info_t *si = (smb_info_t*)data; |
7647 | 32 | bool in = si->request; |
7648 | | |
7649 | 32 | smb_fid_info_t *fid_info = NULL; |
7650 | 32 | fid_info = find_fid_info(si); |
7651 | | |
7652 | 32 | if (!fid_info || !fid_info->fsi || !fid_info->fsi->filename) { |
7653 | 32 | return 0; |
7654 | 32 | } |
7655 | | |
7656 | | |
7657 | 0 | if (g_ascii_strcasecmp(fid_info->fsi->filename, "\\MsFteWds") != 0) { |
7658 | 0 | return 0; |
7659 | 0 | } |
7660 | 0 | p_add_proto_data(wmem_file_scope(), pinfo, proto_mswsp, 0, (void*)&SMB1); |
7661 | 0 | return dissect_mswsp(tvb, pinfo, tree, in, data); |
7662 | 0 | } |
7663 | | |
7664 | | static bool |
7665 | | dissect_mswsp_smb_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) |
7666 | 32 | { |
7667 | 32 | return dissect_mswsp_smb(tvb, pinfo, tree, data) > 0; |
7668 | 32 | } |
7669 | | |
7670 | | static int dissect_mswsp_smb2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
7671 | 0 | { |
7672 | 0 | smb2_info_t *si = (smb2_info_t*)data; |
7673 | 0 | bool in; |
7674 | 0 | char* fid_name = NULL; |
7675 | 0 | uint32_t open_frame = 0, close_frame = 0; |
7676 | |
|
7677 | 0 | if (!si) { |
7678 | 0 | return 0; |
7679 | 0 | } |
7680 | | |
7681 | 0 | if (si->saved) { |
7682 | 0 | dcerpc_fetch_polhnd_data(&si->saved->policy_hnd, &fid_name, NULL, &open_frame, &close_frame, pinfo->num); |
7683 | 0 | } |
7684 | |
|
7685 | 0 | if (!fid_name || g_ascii_strcasecmp(fid_name, "File: MsFteWds") != 0) { |
7686 | 0 | return 0; |
7687 | 0 | } |
7688 | | |
7689 | 0 | in = !(si->flags & SMB2_FLAGS_RESPONSE); |
7690 | 0 | p_add_proto_data(wmem_file_scope(), pinfo, proto_mswsp, 0, (void*)&SMB2); |
7691 | 0 | return dissect_mswsp(tvb, pinfo, tree, in, data); |
7692 | 0 | } |
7693 | | |
7694 | | static bool |
7695 | | dissect_mswsp_smb2_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) |
7696 | 0 | { |
7697 | 0 | return dissect_mswsp_smb2(tvb, pinfo, tree, data) > 0; |
7698 | 0 | } |
7699 | | |
7700 | | void |
7701 | | proto_reg_handoff_mswsp(void) |
7702 | 14 | { |
7703 | 14 | heur_dissector_add("smb_transact", dissect_mswsp_smb_heur, "WSP over SMB1", "smb1_wsp", proto_mswsp, HEURISTIC_ENABLE); |
7704 | 14 | heur_dissector_add("smb2_pipe_subdissectors", dissect_mswsp_smb2_heur, "WSP over SMB2", "smb2_wsp", proto_mswsp, HEURISTIC_ENABLE); |
7705 | 14 | } |
7706 | | |
7707 | | |
7708 | | /* |
7709 | | * Editor modelines - https://www.wireshark.org/tools/modelines.html |
7710 | | * |
7711 | | * Local variables: |
7712 | | * c-basic-offset: 4 |
7713 | | * tab-width: 8 |
7714 | | * indent-tabs-mode: t |
7715 | | * End: |
7716 | | * |
7717 | | * vi: set shiftwidth=4 tabstop=8 noexpandtab: |
7718 | | * :indentSize=4:tabSize=8:noTabs=false: |
7719 | | */ |