Add some PidTag* mapping involved with Recipients and RecipientRow
[OpenChange-git-clone.git] / exchange.idl
blob225835a2bc2b98898ee8baa4f81f41ad2a875c88
1 #include "idl_types.h"
3 cpp_quote("#include <gen_ndr/ndr_misc.h>")
5 /*
6 http://support.microsoft.com/default.aspx?scid=KB;en-us;q159298
7 Any UUID starting with:
8 A4 - store
9 F5 - directory
13 uuid("99e64010-b032-11d0-97a4-00c04fd6551d"),
14 pointer_default(unique),
15 version(3.0)
16 ] interface exchange_store_admin3
18 void ec_store_admin3_dummy();
23 uuid("89742ace-a9ed-11cf-9c0c-08002be7ae86"),
24 pointer_default(unique),
25 version(2.0)
26 ] interface exchange_store_admin2
28 void ec_store_admin2_dummy();
32 uuid("a4f1db00-ca47-1067-b31e-00dd010662da"),
33 pointer_default(unique),
34 version(1.0)
35 ] interface exchange_store_admin1
37 void ec_store_admin1_dummy();
42 uuid("1544f5e0-613c-11d1-93df-00c04fd7bd09"),
43 endpoint("ncacn_np:[\\pipe\\lsass]","ncacn_np:[\\pipe\\protected_storage]","ncacn_ip_tcp:[]"),
44 pointer_default(unique),
45 version(1.0),
46 helpstring("Exchange 2003 Directory Request For Response")
47 ] interface exchange_ds_rfr
50 #include "mapitags_enum.h"
51 #include "mapicodes_enum.h"
53 /*****************/
54 /* Function 0x00 */
55 MAPISTATUS RfrGetNewDSA(
56 [in] uint32 ulFlags,
57 [in,string,charset(DOS)] uint8 *pUserDN,
58 [in,out,unique,string,charset(DOS)] uint8 **ppszUnused,
59 [in,out,unique,string,charset(DOS)] uint8 **ppszServer
62 /*****************/
63 /* Function 0x01 */
64 MAPISTATUS RfrGetFQDNFromLegacyDN(
65 [in] uint32 ulFlags,
66 [in,range(10,1024)] uint32 cbMailboxServerDN,
67 [in,string,charset(DOS),size_is(cbMailboxServerDN)] uint8 *szMailboxServerDN,
68 [out,ref,string,charset(DOS)] uint8 **ppszServerFQDN
73 uuid("f930c514-1215-11d3-99a5-00a0c9b61b04"),
74 helpstring("System Attendant Cluster Interface"),
75 pointer_default(unique),
76 version(1.0)
77 ] interface exchange_sysatt_cluster
79 void sysatt_cluster_dummy();
83 [83d72bf0-0d89-11ce-b13f-00aa003bac6c] MS Exchange
84 System Attendant Private Interface
88 uuid("469d6ec0-0d87-11ce-b13f-00aa003bac6c"),
89 pointer_default(unique),
90 helpstring("Exchange 5.5 System Attendant Request for Response")
91 ] interface exchange_system_attendant
93 void sysatt_dummy();
97 uuid("9e8ee830-4559-11ce-979b-00aa005ffebe"),
98 pointer_default(unique),
99 version(2.0),
100 helpstring("Exchange 5.5 MTA")
101 ] interface exchange_mta
103 /*****************/
104 /* Function 0x00 */
105 void MtaBind();
107 /*****************/
108 /* Function 0x01 */
109 void MtaBindAck();
113 uuid("f5cc59b4-4264-101a-8c59-08002b2f8426"),
114 pointer_default(unique),
115 version(21.0),
116 helpstring("Exchange 5.5 DRS")
117 ] interface exchange_drs
119 /*****************/
120 /* Function 0x00 */
121 void ds_abandon();
123 /*****************/
124 /* Function 0x01 */
125 void ds_add_entry();
127 void ds_bind();
128 void ds_compare();
129 void ds_list();
130 void ds_modify_entry();
131 void ds_modify_rdn();
132 void ds_read();
133 void ds_receive_result();
134 void ds_remove_entry();
135 void ds_search();
136 void ds_unbind();
137 void ds_wait();
138 void dra_replica_add();
139 void dra_replica_delete();
140 void dra_replica_synchronize();
141 void dra_reference_update();
142 void dra_authorize_replica();
143 void dra_unauthorize_replica();
144 void dra_adopt();
145 void dra_set_status();
146 void dra_modify_entry();
147 void dra_delete_subref();
151 uuid("f5cc5a7c-4264-101a-8c59-08002b2f8426"),
152 version(21.0),
153 pointer_default(unique),
154 helpstring("Exchange 5.5 XDS")
155 ] interface exchange_xds
157 void xds_dummy();
161 uuid("38a94e72-a9bc-11d2-8faf-00c04fa378ff"),
162 pointer_default(unique),
163 version(1.0)
164 ] interface exchange_mta_qadmin
166 void exchange_mta_qadmin();
171 uuid("0e4a0156-dd5d-11d2-8c2f-00c04fb6bcde"),
172 pointer_default(unique),
173 version(1.0)
174 ] interface exchange_store_information
176 void exchange_store_information_dummy();
180 uuid("f5cc5a18-4264-101a-8c59-08002b2f8426"),
181 endpoint("ncacn_np:[\\pipe\\lsass]","ncacn_np:[\\pipe\\protected_storage]","ncacn_ip_tcp:[]"),
182 pointer_default(unique),
183 version(56.0),
184 helpstring("Exchange 5.5 Name Service Provider")
185 ] interface exchange_nsp
188 #define PT_UNSPECIFIED 0x0000
189 #define PT_NULL 0x0001
190 #define PT_I2 0x0002
191 #define PT_LONG 0x0003
192 #define PT_R4 0x0004
193 #define PT_DOUBLE 0x0005
194 #define PT_CURRENCY 0x0006
195 #define PT_APPTIME 0x0007
196 #define PT_ERROR 0x000a /* means the given attr contains no value */
197 #define PT_BOOLEAN 0x000b
198 #define PT_OBJECT 0x000d
199 #define PT_I8 0x0014
200 #define PT_STRING8 0x001e
201 #define PT_UNICODE 0x001f
202 #define PT_SYSTIME 0x0040
203 #define PT_CLSID 0x0048
204 #define PT_SVREID 0x00fb
205 #define PT_SRESTRICT 0x00fd
206 #define PT_ACTIONS 0x00fe
207 #define PT_BINARY 0x0102
208 /* Multi-valued properties */
209 #define PT_MV_I2 0x1002
210 #define PT_MV_LONG 0x1003
211 #define PT_MV_R4 0x1004
212 #define PT_MV_DOUBLE 0x1005
213 #define PT_MV_CURRENCY 0x1006
214 #define PT_MV_APPTIME 0x1007
215 #define PT_MV_I8 0x1014
216 #define PT_MV_STRING8 0x101e
217 #define PT_MV_TSTRING 0x101e
218 #define PT_MV_UNICODE 0x101f
219 #define PT_MV_SYSTIME 0x1040
220 #define PT_MV_CLSID 0x1048
221 #define PT_MV_BINARY 0x1102
223 typedef [v1_enum] enum {
224 SortTypeDisplayName = 0x00000000,
225 SortTypePhoneticDisplayName = 0x00000003,
226 SortTypeDisplayName_RO = 0x000003E8,
227 SortTypeDisplayName_W = 0x000003E9
228 } TableSortOrders;
230 typedef [flag(NDR_NOALIGN)] struct {
231 TableSortOrders SortType;
232 uint32 ContainerID;
233 uint32 CurrentRec;
234 uint32 Delta;
235 uint32 NumPos;
236 uint32 TotalRecs;
237 uint32 CodePage;
238 uint32 TemplateLocale;
239 uint32 SortLocale;
240 } STAT;
242 typedef struct {
243 uint8 ab[16];
244 } FlatUID_r;
246 typedef struct {
247 FlatUID_r *lpguid;
248 uint32 ulReserved;
249 uint32 lID;
250 } PropertyName_r;
252 typedef struct {
253 [range(0,100000)] uint32 cNames;
254 [size_is(cNames)] PropertyName_r aNames[];
255 } PropertyNameSet_r;
257 typedef struct {
258 [range(0,100000)] uint32 cValues;
259 [string,size_is(cValues),charset(DOS)] uint8 **lppszA;
260 } StringArray_r;
262 typedef struct {
263 [range(0,100000)] uint32 Count;
264 [string,size_is(Count),charset(DOS)] uint8 *Strings[];
265 } StringsArray_r;
267 typedef struct {
268 [range(0,100000)] uint32 cValues;
269 [string,size_is(cValues),charset(UTF16)] uint16 **lppszW;
270 } WStringArray_r;
272 typedef struct {
273 [range(0,100000)] uint32 Count;
274 [string,size_is(Count),charset(UTF16)] uint16 *Strings[];
275 } WStringsArray_r;
277 typedef struct {
278 [range(0,100001)] uint32 cValues;
279 [size_is(cValues+1),length_is(cValues)] MAPITAGS aulPropTag[];
280 } SPropTagArray;
282 typedef [public] struct {
283 [range(0,2097152)] uint32 cb;
284 [size_is(cb)] uint8 *lpb;
285 } Binary_r;
287 typedef [public] struct {
288 uint32 dwLowDateTime;
289 uint32 dwHighDateTime;
290 } FILETIME;
292 typedef struct {
293 [range(0,100000)] uint32 cValues;
294 [size_is(cValues)] uint16 *lpi;
295 } ShortArray_r;
297 typedef struct {
298 [range(0,100000)] uint32 cValues;
299 [size_is(cValues)] uint32 *lpl;
300 } LongArray_r;
302 typedef struct {
303 [range(0,100000)] uint32 cValues;
304 [size_is(cValues)] Binary_r *lpbin;
305 } BinaryArray_r;
307 typedef [flag(NDR_NOALIGN)] struct {
308 [range(0,100000)]uint32 cValues;
309 [size_is(cValues)] FlatUID_r **lpguid;
310 } FlatUIDArray_r;
312 typedef struct {
313 [range(0,100000)] uint32 cValues;
314 [size_is(cValues)] FILETIME *lpft;
315 } DateTimeArray_r;
317 typedef [switch_type(uint32)] union {
318 [case(PT_I2)] uint16 i;
319 [case(PT_LONG)] uint32 l;
320 [case(PT_DOUBLE)] dlong dbl;
321 [case(PT_BOOLEAN)] uint8 b;
322 [case(PT_I8)] dlong d;
323 [case(PT_STRING8)][unique][string,charset(DOS)] uint8 *lpszA;
324 [case(PT_BINARY)] Binary_r bin;
325 [case(PT_UNICODE)][string,charset(UTF16)] uint16 *lpszW;
326 [case(PT_CLSID)] FlatUID_r *lpguid;
327 [case(PT_SYSTIME)] FILETIME ft;
328 [case(PT_ERROR)] MAPISTATUS err;
329 [case(PT_MV_I2)] ShortArray_r MVi;
330 [case(PT_MV_LONG)] LongArray_r MVl;
331 [case(PT_MV_STRING8)] StringArray_r MVszA;
332 [case(PT_MV_BINARY)] BinaryArray_r MVbin;
333 [case(PT_MV_CLSID)] FlatUIDArray_r MVguid;
334 [case(PT_MV_UNICODE)] WStringArray_r MVszW;
335 [case(PT_MV_SYSTIME)] DateTimeArray_r MVft;
336 [case(PT_NULL)] uint32 null;
337 [case(PT_OBJECT)] uint32 object;
338 } SPropValue_CTR;
340 typedef [public]struct {
341 MAPITAGS ulPropTag;
342 uint32 dwAlignPad;
343 [switch_is(ulPropTag & 0xFFFF)] SPropValue_CTR value;
344 } SPropValue;
346 typedef struct {
347 uint32 ulAdrEntryPad;
348 [range(0,100000)] uint32 cValues;
349 [size_is(cValues)]SPropValue *lpProps;
350 } SRow;
353 typedef [public] struct {
354 [range(0,100000)] uint32 cRows;
355 [size_is(cRows)] SRow aRow[];
356 } SRowSet;
358 typedef struct {
359 [range(0,100000)] uint32 cRes;
360 [size_is(cRes)] Restriction_r *lpRes;
361 } AndRestriction_r;
363 typedef struct {
364 [range(0,100000)] uint32 cRes;
365 [size_is(cRes)] Restriction_r *lpRes;
366 } OrRestriction_r;
368 typedef struct {
369 Restriction_r *lpRes;
370 } NotRestriction_r;
372 typedef struct {
373 uint32 ulFuzzyLevel;
374 MAPITAGS ulPropTag;
375 SPropValue *lpProp;
376 } ContentRestriction_r;
378 typedef struct {
379 uint32 relop;
380 MAPITAGS ulPropTag;
381 SPropValue *lpProp;
382 } PropertyRestriction_r;
384 typedef struct {
385 uint32 relop;
386 MAPITAGS ulPropTag1;
387 MAPITAGS ulPropTag2;
388 } ComparePropsRestriction_r;
390 typedef struct {
391 uint32 relMBR;
392 MAPITAGS ulPropTag;
393 uint32 ulMask;
394 } BitMaskRestriction_r;
396 typedef struct {
397 uint32 relop;
398 MAPITAGS ulPropTag;
399 uint32 cb;
400 } SizeRestriction_r;
402 typedef struct {
403 uint32 ulReserved1;
404 MAPITAGS ulPropTag;
405 uint32 ulReserved2;
406 } ExistRestriction_r;
408 typedef struct {
409 uint32 ulSubObject;
410 Restriction_r *lpRes;
411 } SubRestriction_r;
413 typedef [v1_enum] enum {
414 RES_AND = 0x0,
415 RES_OR = 0x1,
416 RES_NOT = 0x2,
417 RES_CONTENT = 0x3,
418 RES_PROPERTY = 0x4,
419 RES_COMPAREPROPS = 0x5,
420 RES_BITMASK = 0x6,
421 RES_SIZE = 0x7,
422 RES_EXIST = 0x8,
423 RES_SUBRESTRICTION = 0x9,
424 RES_COMMENT = 0xA
425 } RestrictionType_r;
427 typedef [switch_type(uint32)] union {
428 [case(RES_AND)] AndRestriction_r resAnd;
429 [case(RES_OR)] OrRestriction_r resOr;
430 [case(RES_NOT)] NotRestriction_r resNot;
431 [case(RES_CONTENT)] ContentRestriction_r resContent;
432 [case(RES_PROPERTY)] PropertyRestriction_r resProperty;
433 [case(RES_COMPAREPROPS)] ComparePropsRestriction_r resCompareProps;
434 [case(RES_BITMASK)] BitMaskRestriction_r resBitMask;
435 [case(RES_SIZE)] SizeRestriction_r resSize;
436 [case(RES_EXIST)] ExistRestriction_r resExist;
437 [case(RES_SUBRESTRICTION)] SubRestriction_r resSub;
438 } RestrictionUnion_r;
440 typedef [public] struct _Restriction_r{
441 RestrictionType_r rt;
442 [switch_is(rt)] RestrictionUnion_r res;
443 } Restriction_r;
445 /*****************/
446 /* Function 0x00 */
447 typedef [bitmap32bit] bitmap {
448 fAnonymousLogin = 0x00000020
449 } NspiBind_dwFlags;
451 MAPISTATUS NspiBind(
452 [in] NspiBind_dwFlags dwFlags,
453 [in] STAT *pStat,
454 [in,out,unique] GUID *mapiuid,
455 [out] policy_handle *handle
458 /*****************/
459 /* Function 0x01 */
460 MAPISTATUS NspiUnbind(
461 [in, out] policy_handle *handle,
462 [in] uint32 Reserved
465 /*****************/
466 /* Function 0x02 */
467 MAPISTATUS NspiUpdateStat(
468 [in] policy_handle *handle,
469 [in] uint32 Reserved,
470 [in,out] STAT *pStat,
471 [in,out,unique] uint32 *plDelta
474 /*****************/
475 /* Function 0x03 */
476 typedef [bitmap32bit] bitmap {
477 fSkipObjects = 0x00000001,
478 fEphID = 0x00000002
479 } NspiQueryRows_dwFlags;
481 MAPISTATUS NspiQueryRows(
482 [in] policy_handle *handle,
483 [in] NspiQueryRows_dwFlags dwFlags,
484 [in,out] STAT *pStat,
485 [in,range(0,100000)] uint32 dwETableCount,
486 [in,unique,size_is(dwETableCount)] uint32 *lpETable,
487 [in] uint32 Count,
488 [in,unique] SPropTagArray *pPropTags,
489 [out] SRowSet **ppRows
492 /*****************/
493 /* Function 0x04 */
494 MAPISTATUS NspiSeekEntries(
495 [in] policy_handle *handle,
496 [in] uint32 Reserved,
497 [in,out] STAT *pStat,
498 [in] SPropValue *pTarget,
499 [in,unique] SPropTagArray *lpETable,
500 [in,unique] SPropTagArray *pPropTags,
501 [out] SRowSet **pRows
504 /*****************/
505 /* Function 0x05 */
506 MAPISTATUS NspiGetMatches(
507 [in] policy_handle *handle,
508 [in] uint32 Reserved,
509 [in,out] STAT *pStat,
510 [in][unique] SPropTagArray *pReserved,
511 [in] uint32 Reserved2,
512 [in][unique] Restriction_r *Filter,
513 [in][unique] PropertyName_r *lpPropName,
514 [in] uint32 ulRequested,
515 [out] SPropTagArray **ppOutMIds,
516 [in][unique] SPropTagArray *pPropTags,
517 [out] SRowSet **ppRows
520 /*****************/
521 /* Function 0x06 */
522 MAPISTATUS NspiResortRestriction(
523 [in] policy_handle *handle,
524 [in] uint32 Reserved,
525 [in,out] STAT *pStat,
526 [in] SPropTagArray *pInMIds,
527 [in,out] SPropTagArray **ppMIds
530 /*****************/
531 /* Function 0x07 */
532 MAPISTATUS NspiDNToMId(
533 [in] policy_handle *handle,
534 [in] uint32 Reserved,
535 [in] StringsArray_r *pNames,
536 [out] SPropTagArray **ppMIds
539 /*****************/
540 /* Function 0x08 */
541 MAPISTATUS NspiGetPropList(
542 [in] policy_handle *handle,
543 [in] uint32 dwFlags,
544 [in] uint32 dwMId,
545 [in] uint32 CodePage,
546 [out] SPropTagArray **ppPropTags
549 /*****************/
550 /* Function 0x09 */
551 MAPISTATUS NspiGetProps(
552 [in] policy_handle *handle,
553 [in] uint32 dwFlags,
554 [in] STAT *pStat,
555 [in,unique] SPropTagArray *pPropTags,
556 [out] SRow **ppRows
559 /*****************/
560 /* Funcion 0xa */
561 MAPISTATUS NspiCompareMIds(
562 [in] policy_handle *handle,
563 [in] uint32 Reserved,
564 [in] STAT *pStat,
565 [in] uint32 MId1,
566 [in] uint32 MId2,
567 [out] uint32 *plResult
570 /*****************/
571 /* Function 0xb */
572 MAPISTATUS NspiModProps(
573 [in] policy_handle *handle,
574 [in] uint32 Reserved,
575 [in] STAT *pStat,
576 [in,unique] SPropTagArray *pPropTags,
577 [in] SRow *pRow
580 /*****************/
581 /* Function 0x0c */
582 typedef [bitmap32bit] bitmap {
583 NspiAddressCreationTemplates = 0x00000002,
584 NspiUnicodeStrings = 0x00000004
585 } NspiGetSpecialTable_dwFlags;
587 MAPISTATUS NspiGetSpecialTable(
588 [in] policy_handle *handle,
589 [in] NspiGetSpecialTable_dwFlags dwFlags,
590 [in] STAT *pStat,
591 [in,out] uint32 *lpVersion,
592 [out] SRowSet **ppRows
595 /*******************/
596 /* Function 0x0d */
597 typedef [bitmap32bit] bitmap {
598 TI_TEMPLATE = 0x00000001,
599 TI_SCRIPT = 0x00000004,
600 TI_EMT = 0x00000010,
601 TI_HELPFILE_NAME = 0x00000020,
602 TI_HELPFILE_CONTENTS = 0x00000040
603 } TI_dwFlags;
605 MAPISTATUS NspiGetTemplateInfo(
606 [in] policy_handle *handle,
607 [in] TI_dwFlags dwFlags,
608 [in] uint32 ulType,
609 [in,unique,string,charset(DOS)] uint8 *pDN,
610 [in] uint32 dwCodePage,
611 [in] uint32 dwLocaleID,
612 [out] SRow **ppData
615 /*******************/
616 /* Function 0x0e */
617 MAPISTATUS NspiModLinkAtt(
618 [in] policy_handle *handle,
619 [in] uint32 dwFlags,
620 [in] uint32 ulPropTag,
621 [in] uint32 MId,
622 [in] BinaryArray_r *lpEntryIds
625 /*************************************/
626 /* Function 0x0f: Not used on wire */
627 MAPISTATUS NspiDeleteEntries(
628 [in] policy_handle *Reserved1,
629 [in] uint32 Reserved2,
630 [in] uint32 Reserved3,
631 [in] BinaryArray_r *Reserved4
634 /*******************/
635 /* Function 0x10 */
636 typedef [bitmap32bit] bitmap {
637 NspiUnicodeProptypes = 0x80000000
638 } NspiQueryColumns_dwFlags;
640 MAPISTATUS NspiQueryColumns(
641 [in] policy_handle *handle,
642 [in] uint32 Reserved,
643 [in] NspiQueryColumns_dwFlags dwFlags,
644 [out] SPropTagArray **ppColumns
647 /*******************/
648 /* Function 0x11 */
649 MAPISTATUS NspiGetNamesFromIDs(
650 [in] policy_handle *handle,
651 [in] uint32 Reserved,
652 [in,unique] FlatUID_r *lpGuid,
653 [in,unique] SPropTagArray *pPropTags,
654 [out] SPropTagArray **ppReturnedPropTags,
655 [out] PropertyNameSet_r **ppNames
658 /*******************/
659 /* Function 0x12 */
660 MAPISTATUS NspiGetIDsFromNames(
661 [in] policy_handle *handle,
662 [in] uint32 Reserved,
663 [in] uint32 dwFlags,
664 [in,range(0,100000)] uint32 cPropNames,
665 [in,size_is(cPropNames)] PropertyName_r **ppNames,
666 [out] SPropTagArray **ppPropTags
669 /*****************/
670 /* Function 0x13 */
671 MAPISTATUS NspiResolveNames(
672 [in] policy_handle *handle,
673 [in] uint32 Reserved,
674 [in] STAT *pStat,
675 [in,unique] SPropTagArray *pPropTags,
676 [in] StringsArray_r *paStr,
677 [out] SPropTagArray **ppMIds,
678 [out] SRowSet **ppRows
681 /*****************/
682 /* Function 0x14 */
683 MAPISTATUS NspiResolveNamesW(
684 [in] policy_handle *handle,
685 [in] uint32 Reserved,
686 [in] STAT *pStat,
687 [in,unique] SPropTagArray *pPropTags,
688 [in] WStringsArray_r *paWStr,
689 [out] SPropTagArray **ppMIds,
690 [out] SRowSet **ppRows
695 uuid("a4f1db00-ca47-1067-b31f-00dd010662da"),
696 pointer_default(unique),
697 endpoint("ncacn_np:[\\pipe\\lsass]","ncacn_np:[\\pipe\\protected_storage]","ncacn_ip_tcp:"),
698 //version(0.81),
699 version(5308416),
700 helpstring("Exchange 5.5 EMSMDB")
701 ] interface exchange_emsmdb
703 /*****************/
704 /* Function 0x00 */
706 MAPISTATUS EcDoConnect(
707 [out] policy_handle *handle,
708 [in,string,charset(DOS)] uint8 szUserDN[],
709 [in] uint32 ulFlags,
710 [in] uint32 ulConMod,
711 [in] uint32 cbLimit,
712 [in] uint32 ulCpid,
713 [in] uint32 ulLcidString,
714 [in] uint32 ulLcidSort,
715 [in] uint32 ulIcxrLink,
716 [in] uint16 usFCanConvertCodePages,
717 [out] uint32 *pcmsPollsMax,
718 [out] uint32 *pcRetry,
719 [out] uint32 *pcmsRetryDelay,
720 [out] uint32 *picxr,
721 [out,unique,string,charset(DOS)]uint8 *szDNPrefix,
722 [out,unique,string,charset(DOS)]uint8 *szDisplayName,
723 [out] uint16 rgwServerVersion[3],
724 [in,out] uint16 rgwClientVersion[3],
725 [in,out] uint32 *pullTimeStamp
728 /*****************/
729 /* Function 0x01 */
730 MAPISTATUS EcDoDisconnect(
731 [in,out] policy_handle *handle
734 /*****************/
735 /* Function 0x02 */
738 EcDoRpc opnums
741 typedef [public, enum8bit, flag(NDR_PAHEX)] enum
743 MAPI_STORE = 0x1,
744 MAPI_ADDRBOOK = 0x2,
745 MAPI_FOLDER = 0x3,
746 MAPI_ABCONT = 0x4,
747 MAPI_MESSAGE = 0x5,
748 MAPI_MAILUSER = 0x6, /* Individual Recipient */
749 MAPI_ATTACH = 0x7,
750 MAPI_DISTLIST = 0x8,
751 MAPI_PROFSECT = 0x9,
752 MAPI_STATUS = 0xA,
753 MAPI_SESSION = 0xB,
754 MAPI_FORMINFO = 0xC
755 } MAPI_OBJTYPE;
757 typedef [public, v1_enum, flag(NDR_PAHEX)] enum
759 RightsNone = 0x00000000,
760 RightsReadItems = 0x00000001,
761 RightsCreateItems = 0x00000002,
762 RightsEditOwn = 0x00000008,
763 RightsDeleteOwn = 0x00000010,
764 RightsEditAll = 0x00000020,
765 RightsDeleteAll = 0x00000040,
766 RightsCreateSubfolders = 0x00000080,
767 RightsFolderOwner = 0x00000100,
768 RightsFolderContact = 0x00000200,
769 RoleNone = 0x00000400,
770 RoleReviewer = 0x00000401,
771 RoleContributor = 0x00000402,
772 RoleNoneditingAuthor = 0x00000413,
773 RoleAuthor = 0x0000041B,
774 RoleEditor = 0x0000047B,
775 RolePublishAuthor = 0x0000049B,
776 RolePublishEditor = 0x000004FB,
777 RightsAll = 0x000005FB,
778 RoleOwner = 0x000007FB
779 } ACLRIGHTS;
781 typedef [public, enum8bit, flag(NDR_PAHEX)] enum
783 op_MAPI_Release = 0x1,
784 op_MAPI_OpenFolder = 0x2,
785 op_MAPI_OpenMessage = 0x3,
786 op_MAPI_GetHierarchyTable = 0x4,
787 op_MAPI_GetContentsTable = 0x5,
788 op_MAPI_CreateMessage = 0x6,
789 op_MAPI_GetProps = 0x7,
790 op_MAPI_GetPropsAll = 0x8,
791 op_MAPI_GetPropList = 0x9,
792 op_MAPI_SetProps = 0xa,
793 op_MAPI_DeleteProps = 0xb,
794 op_MAPI_SaveChangesMessage = 0xc,
795 op_MAPI_RemoveAllRecipients = 0xd,
796 op_MAPI_ModifyRecipients = 0xe,
797 op_MAPI_ReadRecipients = 0xf,
798 op_MAPI_ReloadCachedInformation = 0x10,
799 op_MAPI_SetMessageReadFlag = 0x11,
800 op_MAPI_SetColumns = 0x12,
801 op_MAPI_SortTable = 0x13,
802 op_MAPI_Restrict = 0x14,
803 op_MAPI_QueryRows = 0x15,
804 op_MAPI_GetStatus = 0x16,
805 op_MAPI_QueryPosition = 0x17,
806 op_MAPI_SeekRow = 0x18,
807 op_MAPI_SeekRowBookmark = 0x19,
808 op_MAPI_SeekRowApprox = 0x1a,
809 op_MAPI_CreateBookmark = 0x1b,
810 op_MAPI_CreateFolder = 0x1c,
811 op_MAPI_DeleteFolder = 0x1d,
812 op_MAPI_DeleteMessages = 0x1e,
813 op_MAPI_GetMessageStatus = 0x1f,
814 op_MAPI_SetMessageStatus = 0x20,
815 op_MAPI_GetAttachmentTable = 0x21,
816 op_MAPI_OpenAttach = 0x22,
817 op_MAPI_CreateAttach = 0x23,
818 op_MAPI_DeleteAttach = 0x24,
819 op_MAPI_SaveChangesAttachment = 0x25,
820 op_MAPI_SetReceiveFolder = 0x26,
821 op_MAPI_GetReceiveFolder = 0x27,
822 op_MAPI_RegisterNotification = 0x29,
823 op_MAPI_Notify = 0x2a,
824 op_MAPI_OpenStream = 0x2b,
825 op_MAPI_ReadStream = 0x2c,
826 op_MAPI_WriteStream = 0x2d,
827 op_MAPI_SeekStream = 0x2e,
828 op_MAPI_SetStreamSize = 0x2f,
829 op_MAPI_SetSearchCriteria = 0x30,
830 op_MAPI_GetSearchCriteria = 0x31,
831 op_MAPI_SubmitMessage = 0x32,
832 op_MAPI_MoveCopyMessages = 0x33,
833 op_MAPI_AbortSubmit = 0x34,
834 op_MAPI_MoveFolder = 0x35,
835 op_MAPI_CopyFolder = 0x36,
836 op_MAPI_QueryColumnsAll = 0x37,
837 op_MAPI_Abort = 0x38,
838 op_MAPI_CopyTo = 0x39,
839 op_MAPI_CopyToStream = 0x3a,
840 op_MAPI_CloneStream = 0x3b,
841 op_MAPI_GetTable = 0x3e,
842 op_MAPI_GetRulesTable = 0x3f,
843 op_MAPI_ModifyTable = 0x40,
844 op_MAPI_ModifyRules = 0x41,
845 op_MAPI_GetOwningServers = 0x42,
846 op_MAPI_LongTermIdFromId = 0x43,
847 op_MAPI_IdFromLongTermId = 0x44,
848 op_MAPI_PublicFolderIsGhosted = 0x45,
849 op_MAPI_OpenEmbeddedMessage = 0x46,
850 op_MAPI_SetSpooler = 0x47,
851 op_MAPI_SpoolerLockMessage = 0x48,
852 op_MAPI_AddressTypes = 0x49,
853 op_MAPI_TransportSend = 0x4a,
854 op_MAPI_FastTransferSourceGetBuffer = 0x4e,
855 op_MAPI_FindRow = 0x4f,
856 op_MAPI_Progress = 0x50,
857 op_MAPI_TransportNewMail = 0x51,
858 op_MAPI_GetNamesFromIDs = 0x55,
859 op_MAPI_GetIDsFromNames = 0x56,
860 op_MAPI_UpdateDeferredActionMessages = 0x57,
861 op_MAPI_EmptyFolder = 0x58,
862 op_MAPI_ExpandRow = 0x59,
863 op_MAPI_CollapseRow = 0x5a,
864 op_MAPI_LockRegionStream = 0x5b,
865 op_MAPI_UnlockRegionStream = 0x5c,
866 op_MAPI_CommitStream = 0x5d,
867 op_MAPI_GetStreamSize = 0x5e,
868 op_MAPI_QueryNamedProperties = 0x5f,
869 op_MAPI_GetPerUserLongTermIds = 0x60,
870 op_MAPI_GetPerUserGuid = 0x61,
871 op_MAPI_ReadPerUserInformation = 0x63,
872 op_MAPI_SetReadFlags = 0x66,
873 op_MAPI_CopyProperties = 0x67,
874 op_MAPI_GetReceiveFolderTable = 0x68,
875 op_MAPI_GetCollapseState = 0x6b,
876 op_MAPI_SetCollapseState = 0x6c,
877 op_MAPI_GetTransportFolder = 0x6d,
878 op_MAPI_Pending = 0x6e,
879 op_MAPI_RegisterOptions = 0x6f,
880 op_MAPI_SyncConfigure = 0x70,
881 op_MAPI_SyncImportMessageChange = 0x72,
882 op_MAPI_SyncImportHierarchyChange = 0x73,
883 op_MAPI_SyncImportDeletes = 0x74,
884 op_MAPI_SyncUploadStateStreamBegin = 0x75,
885 op_MAPI_SyncUploadStateStreamContinue = 0x76,
886 op_MAPI_SyncUploadStateStreamEnd = 0x77,
887 op_MAPI_SyncImportMessageMove = 0x78,
888 op_MAPI_SetPropertiesNoReplicate = 0x79,
889 op_MAPI_DeletePropertiesNoReplicate = 0x7a,
890 op_MAPI_GetStoreState = 0x7b,
891 op_MAPI_SyncOpenCollector = 0x7e,
892 op_MAPI_GetLocalReplicaIds = 0x7f,
893 op_MAPI_SyncImportReadStateChanges = 0x80,
894 op_MAPI_ResetTable = 0x81,
895 op_MAPI_SyncGetTransferState = 0x82,
896 op_MAPI_OpenPublicFolderByName = 0x87,
897 op_MAPI_SetSyncNotificationGuid = 0x88,
898 op_MAPI_FreeBookmark = 0x89,
899 op_MAPI_WriteAndCommitStream = 0x90,
900 op_MAPI_HardDeleteMessages = 0x91,
901 op_MAPI_HardDeleteMessagesAndSubfolders = 0x92,
902 op_MAPI_Logon = 0xfe,
903 /****** custom MAPI opnum for mapiproxy ******/
904 op_MAPI_proxypack = 0xa5
905 } MAPI_OPNUM;
908 typedef [public,noprint,flag(NDR_NOALIGN)] struct {
909 uint16 cb;
910 [flag(NDR_BUFFERS)]uint8 lpb[cb];
911 } SBinary_short;
913 typedef [public] struct {
914 uint32 cValues;
915 uint32 lpl[cValues];
916 } mapi_MV_LONG_STRUCT;
918 typedef [public] struct {
919 astring lppszA;
920 } mapi_LPSTR;
922 typedef [public] struct {
923 uint32 cValues;
924 mapi_LPSTR strings[cValues];
925 } mapi_SLPSTRArray;
927 typedef struct {
928 [flag(STR_NULLTERM)] string lppszW;
929 } mapi_LPWSTR;
931 typedef struct {
932 uint32 cValues;
933 mapi_LPWSTR strings[cValues];
934 } mapi_SPLSTRArrayW;
936 typedef [public] struct {
937 uint32 cValues;
938 SBinary_short bin[cValues];
939 } mapi_SBinaryArray;
941 typedef struct {
942 uint32 cValues;
943 GUID lpguid[cValues];
944 } mapi_SGuidArray;
946 /******* part of the no-pointer deep recursion hack *******/
947 typedef [nopull,nopush,noprint,flag(NDR_NOALIGN)] struct {
948 uint8 wrap[0x8000];
949 } mapi_SRestriction_wrap;
951 typedef [nopush,nopull,noprint,flag(NDR_NOALIGN)] struct {
952 uint8 wrap[0x8000];
953 } mapi_SPropValue_wrap;
955 typedef [nopush,nopull,noprint,flag(NDR_NOALIGN)] struct {
956 uint8 wrap[0x8000];
957 } mapi_SPropValue_array_wrap;
958 /**********************************************************/
960 typedef [enum8bit] enum {
961 ActionType_OP_MOVE = 0x1,
962 ActionType_OP_COPY = 0x2,
963 ActionType_OP_REPLY = 0x3,
964 ActionType_OP_OOF_REPLY = 0x4,
965 ActionType_OP_DEFER_ACTION = 0x5,
966 ActionType_OP_BOUNCE = 0x6,
967 ActionType_OP_FORWARD = 0x7,
968 ActionType_OP_DELEGATE = 0x8,
969 ActionType_OP_TAG = 0x9,
970 ActionType_OP_DELETE = 0xA,
971 ActionType_OP_MARK_AS_READ = 0xB
972 } ActionType;
974 typedef [flag(NDR_NOALIGN)] struct {
975 boolean8 FolderInThisStore;
976 SBinary_short StoreEID;
977 SBinary_short FolderEID;
978 } MoveCopy_Action;
980 typedef [flag(NDR_NOALIGN)] struct {
981 hyper ReplyTemplateFID;
982 hyper ReplyTemplateMID;
983 GUID ReplyTemplateGUID;
984 } ReplyOOF_Action;
986 typedef [flag(NDR_NOALIGN)] struct {
987 uint8 Reserved;
988 mapi_SPropValue_array_wrap PropertyValue;
989 } RecipientBlock;
991 typedef [flag(NDR_NOALIGN)] enum {
992 BOUNCE_MESSAGE_TOO_LARGE = 0x0000000d,
993 BOUNCE_MESSAGE_NOT_DISPLAYED = 0x0000001f,
994 BOUNCE_MESSAGE_DENIED = 0x00000026
995 } BounceCode;
997 typedef [flag(NDR_NOALIGN)] struct {
998 uint16 RecipientCount;
999 RecipientBlock RecipientBlock[RecipientCount];
1000 } ForwardDelegate_Action;
1002 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1003 [case(ActionType_OP_MOVE)] MoveCopy_Action MoveAction;
1004 [case(ActionType_OP_COPY)] MoveCopy_Action CopyAction;
1005 [case(ActionType_OP_REPLY)] ReplyOOF_Action ReplyAction;
1006 [case(ActionType_OP_OOF_REPLY)] ReplyOOF_Action ReplyOOFAction;
1007 [case(ActionType_OP_DEFER_ACTION)][flag(NDR_REMAINING)] DATA_BLOB DeferAction;
1008 [case(ActionType_OP_BOUNCE)] BounceCode BounceCode;
1009 [case(ActionType_OP_TAG)] mapi_SPropValue_wrap PropValue;
1010 [case(ActionType_OP_FORWARD)] ForwardDelegate_Action ForwardAction;
1011 [case(ActionType_OP_DELEGATE)] ForwardDelegate_Action DelegateAction;
1012 [case(ActionType_OP_DELETE)];
1013 [case(ActionType_OP_MARK_AS_READ)];
1014 } ActionData;
1016 typedef [flag(NDR_NOALIGN)] struct {
1017 ActionType ActionType;
1018 uint32 ActionFlavor;
1019 uint32 ActionFlags;
1020 [switch_is(ActionType)] ActionData ActionDataBuffer;
1021 } ActionBlockData;
1023 typedef [flag(NDR_NOALIGN)] struct {
1024 uint16 ActionLength;
1025 [subcontext(0),subcontext_size(ActionLength),flag(NDR_REMAINING)] ActionBlockData ActionBlockData;
1026 } ActionBlock;
1028 typedef [flag(NDR_NOALIGN)] struct {
1029 uint16 count;
1030 ActionBlock ActionBlock[count];
1031 } RuleAction;
1033 typedef [public,nodiscriminant,flag(NDR_NOALIGN)] union {
1034 [case(PT_I2)] uint16 i;
1035 [case(PT_LONG)] uint32 l;
1036 [case(PT_DOUBLE)] dlong dbl;
1037 [case(PT_ERROR)] uint32 err;
1038 [case(PT_BOOLEAN)] uint8 b;
1039 [case(PT_I8)] dlong d;
1040 [case(PT_STRING8)] astring lpszA;
1041 [case(PT_UNICODE)][flag(STR_NULLTERM)] string lpszW;
1042 [case(PT_SYSTIME)] FILETIME ft;
1043 [case(PT_CLSID)] GUID lpguid;
1044 [case(PT_SRESTRICT)] mapi_SRestriction_wrap Restrictions;
1045 [case(PT_ACTIONS)] RuleAction RuleAction;
1046 [case(PT_BINARY)] SBinary_short bin;
1047 [case(PT_SVREID)] SBinary_short bin;
1048 [case(PT_MV_LONG)] mapi_MV_LONG_STRUCT MVl;
1049 [case(PT_MV_STRING8)] mapi_SLPSTRArray MVszA;
1050 [case(PT_MV_UNICODE)] mapi_SPLSTRArrayW MVszW;
1051 [case(PT_MV_CLSID)] mapi_SGuidArray MVguid;
1052 [case(PT_MV_BINARY)] mapi_SBinaryArray MVbin;
1053 } mapi_SPropValue_CTR;
1055 typedef [public,flag(NDR_NOALIGN)] struct {
1056 MAPITAGS ulPropTag;
1057 [switch_is(ulPropTag & 0xFFFF)] mapi_SPropValue_CTR value;
1058 } mapi_SPropValue;
1060 typedef [public,flag(NDR_NOALIGN)] struct {
1061 uint16 cValues;
1062 [flag(NDR_REMAINING)]mapi_SPropValue lpProps[cValues];
1063 } mapi_SPropValue_array;
1065 typedef [flag(NDR_NOALIGN)] struct {
1066 uint16 cValues;
1067 MAPITAGS aulPropTag[cValues];
1068 } mapi_SPropTagArray;
1070 typedef [enum8bit, flag(NDR_PAHEX)] enum {
1071 ROW_ADD = 0x1,
1072 ROW_MODIFY = 0x2,
1073 ROW_REMOVE = 0x4
1074 } ulRowFlags;
1076 typedef [flag(NDR_NOALIGN)] struct {
1077 ulRowFlags ulRowFlags;
1078 mapi_SPropValue_array lpProps;
1079 } mapi_SRow;
1081 typedef [flag(NDR_NOALIGN)] struct {
1082 uint8 padding;
1083 uint16 cEntries;
1084 mapi_SRow aEntries[cEntries];
1085 } mapi_SRowList;
1087 /**************************/
1088 /* EcDoRpc Function 0x1 */
1089 typedef [nopush,nopull,flag(NDR_NOALIGN)] struct {
1090 } Release_req;
1092 typedef [nopush,nopull,flag(NDR_NOALIGN)] struct {
1093 } Release_repl;
1095 /**************************/
1096 /* EcDoRpc Function 0x2 */
1097 typedef [enum8bit] enum {
1098 OpenModeFlags_Folder = 0x0,
1099 OpenModeFlags_SoftDeleted = 0x4
1100 } OpenFolder_OpenModeFlags;
1102 typedef [flag(NDR_NOALIGN)] struct {
1103 uint8 handle_idx;
1104 hyper folder_id;
1105 OpenFolder_OpenModeFlags OpenModeFlags;
1106 } OpenFolder_req;
1108 typedef [flag(NDR_NOALIGN)] struct {
1109 uint16 ServerCount;
1110 uint16 CheapServerCount;
1111 astring Servers[ServerCount];
1112 } OpenFolder_Replicas;
1114 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1115 [case(0x0)];
1116 [case(0x1)] OpenFolder_Replicas Replicas;
1117 } IsGhosted;
1119 typedef [flag(NDR_NOALIGN)] struct {
1120 boolean8 HasRules;
1121 boolean8 IsGhosted;
1122 [switch_is(IsGhosted)] IsGhosted Ghost;
1123 } OpenFolder_repl;
1125 /**************************/
1126 /* EcDoRpc Function 0x3 */
1127 typedef [enum8bit] enum {
1128 StringType_NONE = 0x0,
1129 StringType_EMPTY = 0x1,
1130 StringType_STRING8 = 0x2,
1131 StringType_UNICODE_REDUCED = 0x3,
1132 StringType_UNICODE = 0x4
1133 } StringType;
1135 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1136 [case(0x0)];
1137 [case(0x1)];
1138 [case(0x2)] astring lpszA;
1139 [case(0x3)] astring lpszW_reduced;
1140 [case(0x4)] [flag(STR_NULLTERM)] string lpszW;
1141 } String;
1143 typedef [flag(NDR_NOALIGN)] struct {
1144 StringType StringType;
1145 [switch_is(StringType)] String String;
1146 } TypedString;
1148 typedef [bitmap8bit] bitmap {
1149 /* 0x0 means Read Only */
1150 ReadWrite = 0x1,
1151 Create = 0x3
1152 } OpenMessage_OpenModeFlags;
1154 typedef [flag(NDR_NOALIGN)] struct {
1155 uint8 handle_idx;
1156 uint16 CodePageId;
1157 hyper FolderId;
1158 OpenMessage_OpenModeFlags OpenModeFlags;
1159 hyper MessageId;
1160 } OpenMessage_req;
1162 typedef [v1_enum, flag(NDR_PAHEX)] enum {
1163 CP_USASCII = 0x04E4,
1164 CP_UNICODE = 0x04B0,
1165 CP_JAUTODETECT = 0xC6F4,
1166 CP_KAUTODETECT = 0xC705,
1167 CP_ISO2022JPESC = 0xC42D,
1168 CP_ISO2022JPSIO = 0xC42E
1169 } CODEPAGEID;
1171 typedef [enum8bit, flag(NDR_PAHEX)] enum {
1172 MAPI_ORIG = 0x0,
1173 MAPI_TO = 0x1,
1174 MAPI_CC = 0x2,
1175 MAPI_BCC = 0x3
1176 } ulRecipClass;
1178 typedef [enum8bit, flag(NDR_PAHEX)] enum {
1179 SINGLE_RECIPIENT = 0x0,
1180 DISTRIBUTION_LIST = 0x1
1181 } addr_type;
1183 typedef [flag(NDR_NOALIGN)]struct {
1184 uint8 organization_length;
1185 addr_type addr_type;
1186 astring username;
1187 } RecipExchange;
1189 typedef [flag(NDR_NOALIGN)] struct {
1190 } RecipSMTP;
1192 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1193 [case(0x0)] RecipExchange EXCHANGE;
1194 [case(0xA)] RecipSMTP SMTP;
1195 [default];
1196 } recipient_type;
1198 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1199 [case(0x0)];
1200 [case(0x400)] astring lpszA;
1201 [case(0x600)][flag(STR_NULLTERM)] string lpszW;
1202 [default];
1203 } recipient_SimpleDisplayName;
1205 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1206 [case(0x0)];
1207 [case(0x20)] astring lpszA;
1208 [case(0x220)][flag(STR_NULLTERM)] string lpszW;
1209 [default];
1210 } recipient_TransmittableDisplayName;
1212 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1213 [case(0x0)];
1214 [case(0x10)] astring lpszA;
1215 [case(0x210)][flag(STR_NULLTERM)] string lpszW;
1216 [default];
1217 } recipient_DisplayName;
1219 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1220 [case(0x0)];
1221 [case(0x8)] astring lpszA;
1222 [case(0x208)][flag(STR_NULLTERM)] string lpszW;
1223 [default];
1224 } recipient_EmailAddress;
1226 typedef [flag(NDR_NOALIGN)] struct {
1227 uint16 RecipientFlags;
1228 [switch_is(RecipientFlags & 0xA)] recipient_type type;
1229 [switch_is(RecipientFlags & 0x208)] recipient_EmailAddress EmailAddress;
1230 [switch_is(RecipientFlags & 0x210)] recipient_DisplayName DisplayName;
1231 [switch_is(RecipientFlags & 0x600)] recipient_SimpleDisplayName SimpleDisplayName;
1232 [switch_is(RecipientFlags & 0x220)] recipient_TransmittableDisplayName TransmittableDisplayName;
1233 uint16 prop_count;
1234 uint8 layout;
1235 [flag(NDR_REMAINING)] DATA_BLOB prop_values;
1236 } RecipientRow;
1238 typedef [flag(NDR_NOALIGN)] struct {
1239 ulRecipClass RecipClass;
1240 CODEPAGEID codepage;
1241 [subcontext(2)] RecipientRow RecipientRow;
1242 } OpenMessage_recipients;
1244 typedef [flag(NDR_NOALIGN)] struct {
1245 boolean8 HasNamedProperties;
1246 TypedString SubjectPrefix;
1247 TypedString NormalizedSubject;
1248 uint16 RecipientCount;
1249 mapi_SPropTagArray RecipientColumns;
1250 uint8 RowCount;
1251 OpenMessage_recipients recipients[RowCount];
1252 } OpenMessage_repl;
1254 /**************************/
1255 /* EcDoRpc Function 0x4 */
1256 typedef [bitmap8bit] bitmap {
1257 TableFlags_Depth = 0x4,
1258 TableFlags_DeferredErrors = 0x8,
1259 TableFlags_NoNotifications = 0x10,
1260 TableFlags_SoftDeletes = 0x20,
1261 TableFlags_UseUnicode = 0x40,
1262 TableFlags_SuppressNotifications = 0x80
1263 } TableFlags;
1265 typedef [flag(NDR_NOALIGN)] struct {
1266 uint8 handle_idx;
1267 TableFlags TableFlags;
1268 } GetHierarchyTable_req;
1270 typedef [flag(NDR_NOALIGN)] struct {
1271 uint32 RowCount;
1272 } GetHierarchyTable_repl;
1274 /**************************/
1275 /* EcDoRpc Function 0x5 */
1276 typedef [flag(NDR_NOALIGN)] struct {
1277 uint8 handle_idx;
1278 TableFlags TableFlags;
1279 } GetContentsTable_req;
1281 typedef [flag(NDR_NOALIGN)] struct {
1282 uint32 RowCount;
1283 } GetContentsTable_repl;
1285 /**************************/
1286 /* EcDoRpc Function 0x6 */
1287 typedef [flag(NDR_NOALIGN)] struct {
1288 uint8 handle_idx;
1289 uint16 CodePageId;
1290 hyper FolderId;
1291 boolean8 AssociatedFlag;
1292 } CreateMessage_req;
1294 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1295 [case(0x0)];
1296 [case(0x1)] hyper MessageId;
1297 } CreateMessage_MessageId;
1299 typedef [flag(NDR_NOALIGN)] struct {
1300 boolean8 HasMessageId;
1301 [switch_is(HasMessageId)] CreateMessage_MessageId MessageId;
1302 } CreateMessage_repl;
1304 /*************************/
1305 /* EcDoRpc Function 0x7 */
1306 typedef [flag(NDR_NOALIGN)] struct {
1307 uint16 PropertySizeLimit;
1308 uint16 WantUnicode;
1309 uint16 prop_count;
1310 MAPITAGS properties[prop_count];
1311 } GetProps_req;
1313 typedef [flag(NDR_NOALIGN)] struct {
1314 uint8 layout;
1315 [flag(NDR_REMAINING)] DATA_BLOB prop_data;
1316 } GetProps_repl;
1318 /*************************/
1319 /* EcDoRpc Function 0x8 */
1320 typedef [flag(NDR_NOALIGN)] struct {
1321 uint16 PropertySizeLimit;
1322 uint16 WantUnicode;
1323 } GetPropsAll_req;
1325 typedef [flag(NDR_NOALIGN)] struct {
1326 mapi_SPropValue_array properties;
1327 } GetPropsAll_repl;
1329 /*************************/
1330 /* EcDoRpc Function 0x9 */
1331 typedef [flag(NDR_NOALIGN)] struct {
1332 } GetPropList_req;
1334 typedef [flag(NDR_NOALIGN)] struct {
1335 uint16 count;
1336 MAPITAGS tags[count];
1337 } GetPropList_repl;
1339 /*************************/
1340 /* EcDoRpc Function 0xa */
1341 typedef [flag(NDR_NOALIGN)] struct {
1342 uint32 index; /* index into array of property tags */
1343 MAPITAGS property_tag; /* property for which there was an error */
1344 MAPISTATUS error_code; /* the error that occurred for this property */
1345 } PropertyProblem;
1347 typedef [flag(NDR_NOALIGN)] struct {
1348 [subcontext(2)] mapi_SPropValue_array values;
1349 } SetProps_req;
1351 typedef [flag(NDR_NOALIGN)] struct {
1352 uint16 PropertyProblemCount;
1353 PropertyProblem PropertyProblem[PropertyProblemCount];
1354 } SetProps_repl;
1356 /*************************/
1357 /* EcDoRpc Function 0xb */
1358 typedef [flag(NDR_NOALIGN)] struct {
1359 uint16 count;
1360 MAPITAGS tags[count];
1361 } DeleteProps_req;
1363 typedef [flag(NDR_NOALIGN)] struct {
1364 uint16 PropertyProblemCount;
1365 PropertyProblem PropertyProblem[PropertyProblemCount];
1366 } DeleteProps_repl;
1368 /*************************/
1369 /* EcDoRpc Function 0xc */
1370 typedef [enum8bit] enum {
1371 KeepOpenReadOnly = 0x9,
1372 KeepOpenReadWrite = 0xA,
1373 ForceSave = 0xC
1374 } SaveFlags;
1376 typedef [flag(NDR_NOALIGN)] struct {
1377 uint8 handle_idx;
1378 uint8 SaveFlags;
1379 } SaveChangesMessage_req;
1381 typedef [flag(NDR_NOALIGN)] struct {
1382 uint8 handle_idx;
1383 hyper MessageId;
1384 } SaveChangesMessage_repl;
1386 /*************************/
1387 /* EcDoRpc Function 0xd */
1388 typedef [flag(NDR_NOALIGN)] struct {
1389 uint32 ulReserved;
1390 } RemoveAllRecipients_req;
1392 typedef [flag(NDR_NOALIGN)] struct {
1394 } RemoveAllRecipients_repl;
1396 /*************************/
1397 /* EcDoRpc Function 0xe */
1400 * MODRECIP_NULL and INVALID are not part of the msdn flags
1401 * but are added for printing support
1403 typedef [enum8bit,flag(NDR_PAHEX)] enum {
1404 MODRECIP_NULL = 0x0,
1405 MODRECIP_INVALID = 0x1,
1406 MODRECIP_ADD = 0x2,
1407 MODRECIP_MODIFY = 0x4,
1408 MODRECIP_REMOVE = 0x8
1409 } modrecip;
1411 typedef [flag(NDR_NOALIGN)]struct {
1412 uint32 idx;
1413 ulRecipClass RecipClass;
1414 [subcontext(2),flag(NDR_REMAINING)] RecipientRow RecipientRow;
1415 } ModifyRecipientRow;
1417 typedef [flag(NDR_NOALIGN)] struct {
1418 uint16 prop_count;
1419 MAPITAGS properties[prop_count];
1420 uint16 cValues;
1421 ModifyRecipientRow RecipientRow[cValues];
1422 } ModifyRecipients_req;
1424 typedef [flag(NDR_NOALIGN)] struct {
1426 } ModifyRecipients_repl;
1428 /*************************/
1429 /* EcDoRpc Function 0xf */
1430 typedef [flag(NDR_NOALIGN)] struct {
1431 uint32 RowId;
1432 uint16 ulReserved;
1433 } ReadRecipients_req;
1435 typedef [flag(NDR_NOALIGN)] struct {
1436 uint32 RowId;
1437 ulRecipClass RecipientType;
1438 uint16 CodePageId;
1439 uint16 ulReserved;
1440 [subcontext(2)] RecipientRow RecipientRow;
1441 } ReadRecipientRow;
1443 typedef [flag(NDR_NOALIGN)] struct {
1444 uint8 RowCount;
1445 ReadRecipientRow RecipientRows[RowCount];
1446 } ReadRecipients_repl;
1448 /*************************/
1449 /* EcDoRpc Function 0x10 */
1450 typedef [flag(NDR_NOALIGN)] struct {
1451 ulRecipClass RecipientType;
1452 uint16 CodePageId;
1453 uint16 Reserved;
1454 uint16 RecipientRowSize;
1455 [subcontext(0),subcontext_size(RecipientRowSize),flag(NDR_REMAINING)]RecipientRow RecipientRow;
1456 } OpenRecipientRow;
1458 typedef [flag(NDR_NOALIGN)] struct {
1459 uint16 Reserved;
1460 } ReloadCachedInformation_req;
1462 typedef [flag(NDR_NOALIGN)] struct {
1463 boolean8 HasNamedProperties;
1464 TypedString SubjectPrefix;
1465 TypedString NormalizedSubject;
1466 uint16 RecipientCount;
1467 uint16 ColumnCount;
1468 MAPITAGS RecipientColumns[ColumnCount];
1469 uint8 RowCount;
1470 OpenRecipientRow RecipientRows[RowCount];
1471 } ReloadCachedInformation_repl;
1473 /*************************/
1474 /* EcDoRpc Function 0x11 */
1476 typedef [bitmap8bit] bitmap {
1477 SUPPRESS_RECEIPT = 0x01,
1478 CLEAR_READ_FLAG = 0x04,
1479 MAPI_DEFERRED_ERRORS = 0x08,
1480 GENERATE_RECEIPT_ONLY = 0x10,
1481 CLEAR_RN_PENDING = 0x20,
1482 CLEAR_NRN_PENDING = 0x40
1483 } MSGFLAG_READ;
1485 /* TODO: there is a variation that can provide "client data" here */
1486 typedef [flag(NDR_NOALIGN)] struct {
1487 uint8 handle_idx;
1488 MSGFLAG_READ flags;
1489 [flag(NDR_REMAINING)] DATA_BLOB clientdata;
1490 } SetMessageReadFlag_req;
1492 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1493 [case(0x0)];
1494 [case(0x1)] uint8 LogonId;
1495 } SetMessageReadFlag_LogonId;
1497 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1498 [case(0x0)];
1499 [case(0x1)] uint8 ClientData[24];
1500 } SetMessageReadFlag_ClientData;
1502 typedef [flag(NDR_NOALIGN)] struct {
1503 boolean8 ReadStatusChanged;
1504 [switch_is(ReadStatusChanged)] SetMessageReadFlag_LogonId LogonId;
1505 [switch_is(ReadStatusChanged)] SetMessageReadFlag_ClientData ClientData;
1506 } SetMessageReadFlag_repl;
1508 /*************************/
1509 /* EcDoRpc Function 0x12 */
1510 typedef [enum8bit] enum {
1511 SetColumns_TBL_SYNC = 0x0,
1512 SetColumns_TBL_ASYNC = 0x1
1513 } SetColumnsFlags;
1515 typedef [enum8bit] enum {
1516 TBLSTAT_COMPLETE = 0x0,
1517 TBLSTAT_SORTING = 0x9,
1518 TBLSTAT_SORT_ERROR = 0xA,
1519 TBLSTAT_SETTING_COLS = 0xB,
1520 TBLSTAT_SETCOL_ERROR = 0xD,
1521 TBLSTAT_RESTRICTING = 0xE,
1522 TBLSTAT_RESTRICT_ERROR = 0xF
1523 } TableStatus;
1525 typedef [flag(NDR_NOALIGN)] struct {
1526 SetColumnsFlags SetColumnsFlags;
1527 uint16 prop_count;
1528 MAPITAGS properties[prop_count];
1529 } SetColumns_req;
1531 typedef [flag(NDR_NOALIGN)] struct {
1532 TableStatus TableStatus;
1533 } SetColumns_repl;
1535 /**************************/
1536 /* EcDoRpc Function 0x13 */
1537 typedef [enum8bit, flag(NDR_PAHEX)] enum {
1538 TBL_ASYNC = 0x1,
1539 TBL_BATCH = 0x2
1540 } TBL_FLAGS;
1542 typedef [enum8bit, flag(NDR_PAHEX)] enum {
1543 TABLE_SORT_ASCEND = 0x0,
1544 TABLE_SORT_COMBINE = 0x1,
1545 TABLE_SORT_DESCEND = 0x2
1546 } TABLE_SORT;
1548 typedef [public, flag(NDR_NOALIGN)] struct _SSortOrder{
1549 MAPITAGS ulPropTag;
1550 TABLE_SORT ulOrder;
1551 } SSortOrder;
1553 typedef [public, flag(NDR_NOALIGN)] struct _SSortOrderSet {
1554 uint16 cSorts;
1555 uint16 cCategories;
1556 uint16 cExpanded;
1557 SSortOrder aSort[cSorts];
1558 } SSortOrderSet;
1560 typedef [flag(NDR_NOALIGN)] struct {
1561 uint8 SortTableFlags;
1562 SSortOrderSet lpSortCriteria;
1563 } SortTable_req;
1565 typedef [flag(NDR_NOALIGN)] struct {
1566 TableStatus TableStatus;
1567 } SortTable_repl;
1569 /**************************/
1570 /* EcDoRpc Function 0x14 */
1571 typedef [flag(NDR_NOALIGN)] struct {
1572 uint16 cRes;
1573 mapi_SRestriction_and res[cRes];
1574 } mapi_SAndRestriction;
1576 typedef [flag(NDR_NOALIGN)] struct {
1577 uint16 cRes;
1578 mapi_SRestriction_or res[cRes];
1579 } mapi_SOrRestriction;
1581 typedef [flag(NDR_NOALIGN)] struct {
1582 mapi_SRestriction_wrap res;
1583 } mapi_SNotRestriction;
1585 typedef [noprint, bitmap32bit] bitmap {
1586 FL_FULLSTRING = 0x00000,
1587 FL_SUBSTRING = 0x00001,
1588 FL_PREFIX = 0x00002,
1589 FL_IGNORECASE = 0x10000,
1590 FL_IGNORENONSPACE = 0x20000,
1591 FL_LOOSE = 0x40000
1592 } fuzzyLevel;
1594 typedef [flag(NDR_NOALIGN)] struct {
1595 fuzzyLevel fuzzy;
1596 MAPITAGS ulPropTag;
1597 mapi_SPropValue lpProp;
1598 } mapi_SContentRestriction;
1600 typedef [enum8bit, flag(NDR_PAHEX)] enum {
1601 BMR_EQZ = 0x0,
1602 BMR_NEZ = 0x1
1603 } relMBR;
1605 typedef [flag(NDR_NOALIGN)] struct {
1606 relMBR relMBR;
1607 MAPITAGS ulPropTag;
1608 uint32 ulMask;
1609 } mapi_SBitmaskRestriction;
1611 typedef [enum8bit, flag(NDR_PAHEX)] enum {
1612 RELOP_LT = 0x0, /* < */
1613 RELOP_LE = 0x1, /* <= */
1614 RELOP_GT = 0x2, /* > */
1615 RELOP_GE = 0x3, /* >= */
1616 RELOP_EQ = 0x4, /* == */
1617 RELOP_NE = 0x5, /* != */
1618 RELOP_RE = 0x6 /* LIKE (Regular expression) */
1619 } CompareRelop;
1621 typedef [flag(NDR_NOALIGN)] struct {
1622 CompareRelop relop;
1623 MAPITAGS ulPropTag;
1624 uint32 size;
1625 } mapi_SSizeRestriction;
1627 typedef [flag(NDR_NOALIGN)] struct {
1628 uint8 relop;
1629 MAPITAGS ulPropTag;
1630 mapi_SPropValue lpProp;
1631 } mapi_SPropertyRestriction;
1633 typedef [flag(NDR_NOALIGN)] struct {
1634 CompareRelop relop;
1635 MAPITAGS ulPropTag1;
1636 MAPITAGS ulPropTag2;
1637 } mapi_SCompareProps;
1639 typedef [flag(NDR_NOALIGN)] struct {
1640 MAPITAGS ulPropTag;
1641 } mapi_SExistRestriction;
1643 typedef [flag(NDR_NOALIGN)] struct {
1644 MAPITAGS ulSubObject;
1645 mapi_SRestriction_sub res[ulSubObject - ulSubObject + 1]; /* nasty hack - generates fake pointer */
1646 } mapi_SSubRestriction;
1648 typedef [nopush,nopull,noprint,nodiscriminant] union {
1649 [case(0x0)];
1650 [case(0x1)] mapi_SRestriction_comment *res;
1651 } RestrictionVariable;
1653 typedef [flag(NDR_NOALIGN)] struct {
1654 uint8 TaggedValuesCount;
1655 mapi_SPropValue TaggedValues[TaggedValuesCount];
1656 boolean8 RestrictionPresent;
1657 [switch_is(RestrictionPresent)] RestrictionVariable Restriction;
1658 } mapi_SCommentRestriction;
1660 typedef [public,nodiscriminant] union {
1661 [case(RES_AND)] mapi_SAndRestriction resAnd;
1662 [case(RES_OR)] mapi_SOrRestriction resOr;
1663 [case(RES_NOT)] mapi_SNotRestriction resNot;
1664 [case(RES_CONTENT)] mapi_SContentRestriction resContent;
1665 [case(RES_PROPERTY)] mapi_SPropertyRestriction resProperty;
1666 [case(RES_COMPAREPROPS)] mapi_SCompareProps resCompareProps;
1667 [case(RES_BITMASK)] mapi_SBitmaskRestriction resBitmask;
1668 [case(RES_SIZE)] mapi_SSizeRestriction resSize;
1669 [case(RES_EXIST)] mapi_SExistRestriction resExist;
1670 [case(RES_SUBRESTRICTION)] mapi_SSubRestriction resSub;
1671 [case(RES_COMMENT)] mapi_SCommentRestriction resComment;
1672 [default];
1673 } mapi_SRestriction_CTR;
1675 typedef [public,flag(NDR_NOALIGN)] struct {
1676 uint8 rt;
1677 [switch_is(rt)] mapi_SRestriction_CTR res;
1678 } mapi_SRestriction;
1680 typedef [public,flag(NDR_NOALIGN)] struct _mapi_SRestriction {
1681 uint8 rt;
1682 [switch_is(rt)] mapi_SRestriction_CTR res;
1683 } mapi_SRestriction_and;
1685 typedef [public,flag(NDR_NOALIGN)] struct _mapi_SRestriction {
1686 uint8 rt;
1687 [switch_is(rt)] mapi_SRestriction_CTR res;
1688 } mapi_SRestriction_or;
1690 typedef [public,flag(NDR_NOALIGN)] struct _mapi_SRestriction {
1691 uint8 rt;
1692 [switch_is(rt)] mapi_SRestriction_CTR res;
1693 } mapi_SRestriction_sub;
1695 typedef [public,flag(NDR_NOALIGN)] struct _mapi_SRestriction {
1696 uint8 rt;
1697 [switch_is(rt)] mapi_SRestriction_CTR res;
1698 } mapi_SRestriction_comment;
1700 typedef [flag(NDR_NOALIGN)] struct {
1701 uint8 handle_idx;
1702 [subcontext(2)] mapi_SRestriction restrictions;
1703 } Restrict_req;
1705 typedef [flag(NDR_NOALIGN)] struct {
1706 TableStatus TableStatus;
1707 } Restrict_repl;
1709 /**************************/
1710 /* EcDoRpc Function 0x15 */
1711 typedef [enum8bit] enum {
1712 TBL_ADVANCE = 0x0,
1713 TBL_NOADVANCE = 0x1,
1714 TBL_ENABLEPACKEDBUFFERS = 0x2
1715 } QueryRowsFlags;
1717 typedef [flag(NDR_NOALIGN)] struct {
1718 QueryRowsFlags QueryRowsFlags;
1719 uint8 ForwardRead;
1720 uint16 RowCount;
1721 } QueryRows_req;
1723 typedef [nopush,nopull,flag(NDR_NOALIGN)] struct {
1724 uint8 Origin;
1725 uint16 RowCount;
1726 [flag(NDR_REMAINING)]DATA_BLOB RowData;
1727 } QueryRows_repl;
1729 /**************************/
1730 /* EcDoRpc Function 0x16 */
1731 typedef [flag(NDR_NOALIGN)] struct {
1732 } GetStatus_req;
1734 typedef [flag(NDR_NOALIGN)] struct {
1735 TableStatus TableStatus;
1736 } GetStatus_repl;
1738 /**************************/
1739 /* EcDoRpc Function 0x17 */
1740 typedef [flag(NDR_NOALIGN)] struct {
1741 } QueryPosition_req;
1743 typedef [flag(NDR_NOALIGN)] struct {
1744 uint32 Numerator;
1745 uint32 Denominator;
1746 } QueryPosition_repl;
1748 /**************************/
1749 /* EcDoRpc Function 0x18 */
1750 typedef [enum8bit] enum {
1751 BOOKMARK_BEGINNING = 0x0,
1752 BOOKMARK_CURRENT = 0x1,
1753 BOOKMARK_END = 0x2,
1754 BOOKMARK_USER = 0x3
1755 } BOOKMARK;
1757 typedef [flag(NDR_NOALIGN)] struct {
1758 BOOKMARK origin;
1759 int32 offset;
1760 boolean8 WantRowMovedCount;
1761 } SeekRow_req;
1763 typedef [flag(NDR_NOALIGN)] struct {
1764 boolean8 HasSoughtLess;
1765 uint32 RowsSought;
1766 } SeekRow_repl;
1768 /**************************/
1769 /* EcDoRpc Function 0x19 */
1770 typedef [flag(NDR_NOALIGN)] struct {
1771 SBinary_short Bookmark;
1772 uint32 RowCount;
1773 boolean8 WantRowMovedCount;
1774 } SeekRowBookmark_req;
1776 typedef [flag(NDR_NOALIGN)] struct {
1777 boolean8 RowNoLongerVisible;
1778 boolean8 HasSoughtLess;
1779 uint32 RowsSought;
1780 } SeekRowBookmark_repl;
1782 /**************************/
1783 /* EcDoRpc Function 0x1a */
1784 typedef [flag(NDR_NOALIGN)] struct {
1785 uint32 ulNumerator;
1786 uint32 ulDenominator;
1787 } SeekRowApprox_req;
1789 typedef [flag(NDR_NOALIGN)] struct {
1790 } SeekRowApprox_repl;
1792 /**************************/
1793 /* EcDoRpc Function 0x1b */
1794 typedef [flag(NDR_NOALIGN)] struct {
1795 } CreateBookmark_req;
1797 typedef [flag(NDR_NOALIGN)] struct {
1798 SBinary_short bookmark;
1799 } CreateBookmark_repl;
1801 /**************************/
1802 /* EcDoRpc Function 0x1c */
1803 typedef [enum8bit] enum {
1804 FOLDER_GENERIC = 0x1,
1805 FOLDER_SEARCH = 0x2
1806 } FOLDER_TYPE;
1808 typedef [enum8bit] enum {
1809 MAPI_FOLDER_ANSI = 0x0,
1810 MAPI_FOLDER_UNICODE = 0x1
1811 } FOLDER_STRING;
1813 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1814 [case(MAPI_FOLDER_ANSI)] astring lpszA;
1815 [case(MAPI_FOLDER_UNICODE)][flag(STR_NULLTERM)] string lpszW;
1816 } LPTSTR;
1818 typedef [enum16bit] enum {
1819 NONE = 0x0000,
1820 OPEN_IF_EXISTS = 0x0001
1821 } FOLDER_FLAGS;
1823 typedef [flag(NDR_NOALIGN)] struct {
1824 uint8 handle_idx;
1825 FOLDER_TYPE ulFolderType;
1826 FOLDER_STRING ulType;
1827 FOLDER_FLAGS ulFlags;
1828 [switch_is(ulType)] LPTSTR FolderName;
1829 [switch_is(ulType)] LPTSTR FolderComment;
1830 } CreateFolder_req;
1832 typedef [flag(NDR_NOALIGN)] struct {
1833 boolean8 HasRules;
1834 boolean8 IsGhosted;
1835 [switch_is(IsGhosted)] IsGhosted Ghost;
1836 } CreateFolder_GhostInfo;
1838 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1839 [case(0x0)];
1840 [case(0x1)] CreateFolder_GhostInfo GhostInfo;
1841 } CreateFolder_GhostUnion;
1843 typedef [flag(NDR_NOALIGN)] struct {
1844 hyper folder_id;
1845 boolean8 IsExistingFolder;
1846 [switch_is(IsExistingFolder)] CreateFolder_GhostUnion GhostUnion;
1847 } CreateFolder_repl;
1849 /**************************/
1850 /* EcDoRpc Function 0x1d */
1851 typedef [bitmap8bit] bitmap {
1852 DEL_MESSAGES = 0x1,
1853 DEL_FOLDERS = 0x4,
1854 DELETE_HARD_DELETE = 0x10
1855 } DeleteFolderFlags;
1857 typedef [flag(NDR_NOALIGN)] struct {
1858 DeleteFolderFlags DeleteFolderFlags;
1859 hyper FolderId;
1860 } DeleteFolder_req;
1862 typedef [flag(NDR_NOALIGN)] struct {
1863 boolean8 PartialCompletion;
1864 } DeleteFolder_repl;
1866 /**************************/
1867 /* EcDoRpc Function 0x1e */
1868 typedef [flag(NDR_NOALIGN)] struct {
1869 boolean8 WantAsynchronous;
1870 boolean8 NotifyNonRead;
1871 uint16 cn_ids;
1872 hyper message_ids[cn_ids];
1873 } DeleteMessages_req;
1875 typedef [flag(NDR_NOALIGN)] struct {
1876 boolean8 PartialCompletion;
1877 } DeleteMessages_repl;
1879 /**************************/
1880 /* EcDoRpc Function 0x1f */
1881 typedef [flag(NDR_NOALIGN)] struct {
1882 hyper msgid;
1883 } GetMessageStatus_req;
1885 /**************************/
1886 /* EcDoRpc Function 0x20 */
1887 typedef [bitmap32bit] bitmap {
1888 MSGSTATUS_HIGHLIGHTED = 0x1,
1889 MSGSTATUS_TAGGED = 0x2,
1890 MSGSTATUS_HIDDEN = 0x4,
1891 MSGSTATUS_DELMARKED = 0x8,
1892 MSGSTATUS_REMOTE_DOWNLOAD = 0x1000,
1893 MSGSTATUS_REMOTE_DELETE = 0x2000
1894 } ulMessageStatus;
1897 typedef [flag(NDR_NOALIGN)] struct {
1898 hyper msgid;
1899 uint32 ulNewStatus;
1900 ulMessageStatus ulNewStatusMask;
1901 } SetMessageStatus_req;
1903 typedef [flag(NDR_NOALIGN)] struct {
1904 ulMessageStatus ulOldStatus;
1905 } SetMessageStatus_repl;
1907 /**************************/
1908 /* EcDoRpc Function 0x21 */
1909 typedef [flag(NDR_NOALIGN)] struct {
1910 uint8 handle_idx;
1911 TableFlags TableFlags;
1912 } GetAttachmentTable_req;
1914 typedef [flag(NDR_NOALIGN)] struct {
1915 } GetAttachmentTable_repl;
1917 /*************************/
1918 /* EcDoRpc Function 0x22 */
1919 typedef [enum8bit] enum {
1920 OpenAttachmentFlags_ReadOnly = 0x0,
1921 OpenAttachmentFlags_ReadWrite = 0x1,
1922 OpenAttachmentFlags_BestAccess = 0x3
1923 } OpenAttachmentFlags;
1925 typedef [flag(NDR_NOALIGN)] struct {
1926 uint8 handle_idx;
1927 OpenAttachmentFlags OpenAttachmentFlags;
1928 uint32 AttachmentID;
1929 } OpenAttach_req;
1931 typedef [flag(NDR_NOALIGN)] struct {
1932 } OpenAttach_repl;
1934 /*************************/
1935 /* EcDoRpc Function 0x23 */
1936 typedef [flag(NDR_NOALIGN)] struct {
1937 uint8 handle_idx;
1938 } CreateAttach_req;
1940 typedef [flag(NDR_NOALIGN)] struct {
1941 uint32 AttachmentID;
1942 } CreateAttach_repl;
1944 /*************************/
1945 /* EcDoRpc Function 0x24 */
1946 typedef [flag(NDR_NOALIGN)] struct {
1947 uint32 AttachmentID;
1948 } DeleteAttach_req;
1951 typedef [flag(NDR_NOALIGN)] struct {
1952 } DeleteAttach_repl;
1954 /*************************/
1955 /* EcDoRpc Function 0x25 */
1956 typedef [flag(NDR_NOALIGN)] struct {
1957 uint8 handle_idx;
1958 SaveFlags SaveFlags;
1959 } SaveChangesAttachment_req;
1961 typedef [flag(NDR_NOALIGN)] struct {
1962 } SaveChangesAttachment_repl;
1964 /*************************/
1965 /* EcDoRpc Function 0x26 */
1966 typedef [flag(NDR_NOALIGN)] struct {
1967 hyper fid;
1968 astring lpszMessageClass;
1969 } SetReceiveFolder_req;
1971 typedef [flag(NDR_NOALIGN)] struct {
1972 } SetReceiveFolder_repl;
1974 /*************************/
1975 /* EcDoRpc Function 0x27 */
1976 typedef [flag(NDR_NOALIGN)] struct {
1977 astring MessageClass;
1978 } GetReceiveFolder_req;
1980 typedef [flag(NDR_NOALIGN)] struct {
1981 hyper folder_id;
1982 astring MessageClass;
1983 } GetReceiveFolder_repl;
1985 /*************************/
1986 /* EcDoRpc Function 0x29 */
1987 typedef [bitmap16bit] bitmap {
1988 fnevCriticalError = 0x0001,
1989 fnevNewMail = 0x0002,
1990 fnevObjectCreated = 0x0004,
1991 fnevObjectDeleted = 0x0008,
1992 fnevObjectModified = 0x0010,
1993 fnevObjectMoved = 0x0020,
1994 fnevObjectCopied = 0x0040,
1995 fnevSearchComplete = 0x0080,
1996 fnevTableModified = 0x0100,
1997 fnevStatusObjectModified = 0x0200,
1998 fnevReserved = 0x0400,
1999 fnevTbit = 0x1000,
2000 fnevUbit = 0x2000,
2001 fnevSbit = 0x4000,
2002 fnevMbit = 0x8000
2003 } NotificationFlags;
2005 typedef [nodiscriminant,flag(NDR_NOALIGN)] union {
2006 [case(0x0)] hyper ID;
2007 [case(0x1)];
2008 } hyperbool;
2010 typedef [flag(NDR_NOALIGN)] struct {
2011 uint8 handle_idx;
2012 NotificationFlags NotificationFlags;
2013 boolean8 WantWholeStore;
2014 [switch_is(WantWholeStore)] hyperbool FolderId;
2015 [switch_is(WantWholeStore)] hyperbool MessageId;
2016 } RegisterNotification_req;
2018 typedef [flag(NDR_NOALIGN)] struct {
2019 } RegisterNotification_repl;
2021 /*************************/
2022 /* EcDoRpc Function 0x2a */
2023 typedef [bitmap32bit] bitmap {
2024 MSGFLAG_READ = 0x1,
2025 MSGFLAG_UNMODIFIED = 0x2,
2026 MSGFLAG_SUBMIT = 0x4,
2027 MSGFLAG_UNSENT = 0x8,
2028 MSGFLAG_HASATTACH = 0x10,
2029 MSGFLAG_FROMME = 0x20,
2030 MSGFLAG_ASSOCIATED = 0x40,
2031 MSGFLAG_RESEND = 0x80,
2032 MSGFLAG_RN_PENDING = 0x100,
2033 MSGFLAG_NRN_PENDING = 0x200
2034 } MsgFlags;
2036 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
2037 [case(0x0)] astring lpszA;
2038 [case(0x1)][flag(STR_NULLTERM)] string lpszW;
2039 } MessageClass;
2041 typedef [flag(NDR_NOALIGN)] struct {
2042 GUID DatabaseGUID;
2043 uint8 GlobalCounter[6];
2044 } GID;
2046 typedef [enum16bit] enum {
2047 TABLE_CHANGED = 0x1,
2048 TABLE_ROW_ADDED = 0x3,
2049 TABLE_ROW_DELETED = 0x4,
2050 TABLE_ROW_MODIFIED = 0x5,
2051 TABLE_RESTRICT_DONE = 0x7
2052 } RichTableNotificationType;
2054 /* NewMailNotification: case 0x2 and 0x8002 */
2055 typedef [flag(NDR_NOALIGN)] struct {
2056 hyper FID;
2057 hyper MID;
2058 MsgFlags MessageFlags;
2059 boolean8 UnicodeFlag;
2060 [switch_is(UnicodeFlag)] MessageClass MessageClass;
2061 } NewMailNotification;
2063 /* FolderCreatedNotification: case 0x4 */
2064 typedef [flag(NDR_NOALIGN)] struct {
2065 hyper FID;
2066 hyper ParentFID;
2067 uint16 TagCount;
2068 MAPITAGS Tags[TagCount];
2069 } FolderCreatedNotification;
2071 /* FolderDeletedNotification: case 0x8 */
2072 typedef [flag(NDR_NOALIGN)] struct {
2073 hyper FID;
2074 hyper ParentFID;
2075 } FolderDeletedNotification;
2077 /* FolderModifiedNotification: case 0x10 */
2078 typedef [flag(NDR_NOALIGN)] struct {
2079 hyper FID;
2080 uint16 TagCount;
2081 MAPITAGS Tags[TagCount];
2082 } FolderModifiedNotification_10;
2084 /* FolderMoveCopyNotification: case 0x20 and 0x40 */
2085 typedef [flag(NDR_NOALIGN)] struct {
2086 hyper FID;
2087 hyper ParentFID;
2088 hyper OldFID;
2089 hyper OldParentFID;
2090 } FolderMoveCopyNotification;
2092 /* SearchCompleteNotification: case 0x80 */
2093 typedef [flag(NDR_NOALIGN)] struct {
2094 hyper FID;
2095 } SearchCompleteNotification;
2097 /* HierarchyTable: case 0x100 */
2098 typedef [flag(NDR_NOALIGN)] struct {
2099 hyper FID;
2100 hyper InsertAfterFID;
2101 [subcontext(2)] DATA_BLOB Columns;
2102 } HierarchyRowAddedNotification;
2104 typedef [flag(NDR_NOALIGN)] struct {
2105 hyper FID;
2106 } HierarchyRowDeletedNotification;
2108 typedef [flag(NDR_NOALIGN)] struct {
2109 hyper FID;
2110 hyper InsertAfterFID;
2111 [subcontext(2)] DATA_BLOB Columns;
2112 } HierarchyRowModifiedNotification;
2114 typedef [nodiscriminant] union {
2115 [case(TABLE_ROW_ADDED)] HierarchyRowAddedNotification HierarchyRowAddedNotification;
2116 [case(TABLE_ROW_DELETED)] HierarchyRowDeletedNotification HierarchyRowDeletedNotification;
2117 [case(TABLE_ROW_MODIFIED)] HierarchyRowModifiedNotification HierarchyRowModifiedNotification;
2118 [default];
2119 } HierarchyTableChangeUnion;
2121 typedef [flag(NDR_NOALIGN)] struct {
2122 RichTableNotificationType TableEvent;
2123 [switch_is(TableEvent)] HierarchyTableChangeUnion HierarchyTableChangeUnion;
2124 } HierarchyTableChange;
2126 /* IcsNotification: case 0x200 */
2127 typedef [flag(NDR_NOALIGN)] struct {
2128 boolean8 HierChanged;
2129 uint32 GIDCount;
2130 GID GID[GIDCount];
2131 } IcsNotification;
2133 /* FolderModifiedNotification: case 0x1010 */
2134 typedef [flag(NDR_NOALIGN)] struct {
2135 hyper FID;
2136 uint16 TagCount;
2137 MAPITAGS Tags[TagCount];
2138 uint32 TotalMessageCount;
2139 } FolderModifiedNotification_1010;
2141 /* FolderModifiedNotification: case 0x2010 */
2142 typedef [flag(NDR_NOALIGN)] struct {
2143 hyper FID;
2144 uint16 TagCount;
2145 MAPITAGS Tags[TagCount];
2146 uint32 UnreadMessageCount;
2147 } FolderModifiedNotification_2010;
2149 /* FolderModifiedNotification: case 0x3010 */
2150 typedef [flag(NDR_NOALIGN)] struct {
2151 hyper FID;
2152 uint16 TagCount;
2153 MAPITAGS Tags[TagCount];
2154 uint32 TotalMessageCount;
2155 uint32 UnreadMessageCount;
2156 } FolderModifiedNotification_3010;
2158 /* MessageCreatedNotification: case 0x8004 */
2159 typedef [flag(NDR_NOALIGN)] struct {
2160 hyper FID;
2161 hyper MID;
2162 uint16 TagCount;
2163 MAPITAGS Tags[TagCount];
2164 } MessageCreatedNotification;
2166 /* MessageDeletedNotification: case 0x8008 */
2167 typedef [flag(NDR_NOALIGN)] struct {
2168 hyper FID;
2169 hyper MID;
2170 } MessageDeletedNotification;
2172 /* MessageModifiedNotification: case 0x8010 */
2173 typedef [flag(NDR_NOALIGN)] struct {
2174 hyper FID;
2175 hyper MID;
2176 uint16 TagCount;
2177 MAPITAGS Tags[TagCount];
2178 } MessageModifiedNotification;
2180 /* MessageMoveCopyNotification: case 0x8020 and 0x8040 */
2181 typedef [flag(NDR_NOALIGN)] struct {
2182 hyper FID;
2183 hyper MID;
2184 hyper OldFID;
2185 hyper OldMID;
2186 } MessageMoveCopyNotification;
2188 /* ContentsTableChange: case 0x8100 and 0xc100 */
2189 typedef [flag(NDR_NOALIGN)] struct {
2190 hyper FID;
2191 hyper MID;
2192 uint32 Instance;
2193 hyper InsertAfterFID;
2194 hyper InsertAfterMID;
2195 uint32 InsertAfterInstance;
2196 [subcontext(2)] DATA_BLOB Columns;
2197 } ContentsRowAddedNotification;
2199 typedef [flag(NDR_NOALIGN)] struct {
2200 hyper FID;
2201 hyper MID;
2202 uint32 Instance;
2203 } ContentsRowDeletedNotification;
2205 typedef [flag(NDR_NOALIGN)] struct {
2206 hyper FID;
2207 hyper MID;
2208 uint32 Instance;
2209 hyper InsertAfterFID;
2210 hyper InsertAfterMID;
2211 uint32 InsertAfterInstance;
2212 [subcontext(2)] DATA_BLOB Columns;
2213 } ContentsRowModifiedNotification;
2215 typedef [nodiscriminant] union {
2216 [case(TABLE_ROW_ADDED)] ContentsRowAddedNotification ContentsRowAddedNotification;
2217 [case(TABLE_ROW_DELETED)] ContentsRowDeletedNotification ContentsRowDeletedNotification;
2218 [case(TABLE_ROW_MODIFIED)] ContentsRowModifiedNotification ContentsRowModifiedNotification;
2219 [default];
2220 } ContentsTableChangeUnion;
2222 typedef [flag(NDR_NOALIGN)] struct {
2223 RichTableNotificationType TableEvent;
2224 [switch_is(TableEvent)] ContentsTableChangeUnion ContentsTableChangeUnion;
2225 } ContentsTableChange;
2227 /* SearchMessageCreatedNotification: case 0xc004 */
2228 typedef [flag(NDR_NOALIGN)] struct {
2229 hyper FID;
2230 hyper MID;
2231 hyper SearchFID;
2232 uint16 TagCount;
2233 MAPITAGS Tags[TagCount];
2234 } SearchMessageCreatedNotification;
2236 /* SearchMessageRemovedNotification: case 0xc008 */
2237 typedef [flag(NDR_NOALIGN)] struct {
2238 hyper FID;
2239 hyper MID;
2240 hyper SearchFID;
2241 } SearchMessageRemovedNotification;
2243 /* SearchMessageModifiedNotification: 0xc010 */
2244 typedef [flag(NDR_NOALIGN)] struct {
2245 hyper FID;
2246 hyper MID;
2247 uint16 TagCount;
2248 MAPITAGS Tags[TagCount];
2249 } SearchMessageModifiedNotification;
2251 typedef [nodiscriminant] union {
2252 [case(0x0002)] NewMailNotification NewMailNotification;
2253 [case(0x0004)] FolderCreatedNotification FolderCreatedNotification;
2254 [case(0x0008)] FolderDeletedNotification FolderDeletedNotification;
2255 [case(0x0010)] FolderModifiedNotification_10 FolderModifiedNotification_10;
2256 [case(0x0020)] FolderMoveCopyNotification FolderMoveNotification;
2257 [case(0x0040)] FolderMoveCopyNotification FolderCopyNotification;
2258 [case(0x0080)] SearchCompleteNotification SearchCompleteNotification;
2259 [case(0x0100)] HierarchyTableChange HierarchyTableChange;
2260 [case(0x0200)] IcsNotification IcsNotification;
2261 [case(0x1010)] FolderModifiedNotification_1010 FolderModifiedNotification_1010;
2262 [case(0x2010)] FolderModifiedNotification_2010 FolderModifiedNotification_2010;
2263 [case(0x3010)] FolderModifiedNotification_3010 FolderModifiedNotification_3010;
2264 [case(0x8002)] NewMailNotification NewMessageNotification;
2265 [case(0x8004)] MessageCreatedNotification MessageCreatedNotification;
2266 [case(0x8008)] MessageDeletedNotification MessageDeletedNotification;
2267 [case(0x8010)] MessageModifiedNotification MessageModifiedNotification;
2268 [case(0x8020)] MessageMoveCopyNotification MessageMoveNotification;
2269 [case(0x8040)] MessageMoveCopyNotification MessageCopyNotification;
2270 [case(0x8100)] ContentsTableChange ContentsTableChange;
2271 [case(0xc004)] SearchMessageCreatedNotification SearchMessageCreatedNotification;
2272 [case(0xc008)] SearchMessageRemovedNotification SearchMessageRemovedNotification;
2273 [case(0xc010)] SearchMessageModifiedNotification SearchMessageModifiedNotification;
2274 [case(0xc100)] ContentsTableChange SearchTableChange;
2275 } NotificationData;
2277 typedef [flag(NDR_NOALIGN)] struct {
2278 uint32 NotificationHandle;
2279 uint8 LogonId;
2280 NotificationFlags NotificationType;
2281 [switch_is(NotificationType)] NotificationData NotificationData;
2282 } Notify_repl;
2284 /*************************/
2285 /* EcDoRpc Function 0x2b */
2286 typedef [enum8bit] enum {
2287 OpenStream_ReadOnly = 0x0,
2288 OpenStream_ReadWrite = 0x1,
2289 OpenStream_Create = 0x2,
2290 OpenStream_BestAccess = 0x3
2291 } OpenStream_OpenModeFlags;
2293 typedef [flag(NDR_NOALIGN)] struct {
2294 uint8 handle_idx;
2295 MAPITAGS PropertyTag;
2296 OpenStream_OpenModeFlags OpenModeFlags;
2297 } OpenStream_req;
2299 typedef [flag(NDR_NOALIGN)] struct {
2300 uint32 StreamSize;
2301 } OpenStream_repl;
2303 /*************************/
2304 /* EcDoRpc Function 0x2c */
2305 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
2306 [case(0xBABE)] uint32 value;
2307 [default];
2308 } MaximumByteCount;
2310 typedef [flag(NDR_NOALIGN)] struct {
2311 uint16 ByteCount;
2312 [switch_is(ByteCount)] MaximumByteCount MaximumByteCount;
2313 } ReadStream_req;
2315 typedef [flag(NDR_ALIGN2)] struct {
2316 [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data;
2317 } ReadStream_repl;
2319 /*************************/
2320 /* EcDoRpc Function 0x2d */
2321 typedef [flag(NDR_NOALIGN)] struct {
2322 [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data;
2323 } WriteStream_req;
2326 typedef [flag(NDR_NOALIGN)] struct {
2327 uint16 WrittenSize;
2328 } WriteStream_repl;
2330 /*************************/
2331 /* EcDoRpc Function 0x2e */
2332 typedef [flag(NDR_NOALIGN)] struct {
2333 uint8 Origin;
2334 hyper Offset;
2335 } SeekStream_req;
2337 typedef [flag(NDR_NOALIGN)] struct {
2338 hyper NewPosition;
2339 } SeekStream_repl;
2341 /*************************/
2342 /* EcDoRpc Function 0x2f */
2343 typedef [flag(NDR_NOALIGN)] struct {
2344 hyper SizeStream;
2345 } SetStreamSize_req;
2347 typedef [flag(NDR_NOALIGN)] struct {
2348 } SetStreamSize_repl;
2350 /*************************/
2351 /* EcDoRpc Function 0x30 */
2352 typedef [bitmap32bit, flag(NDR_PAHEX)] bitmap {
2353 STOP_SEARCH = 0x00000001,
2354 RESTART_SEARCH = 0x00000002,
2355 RECURSIVE_SEARCH = 0x00000004,
2356 SHALLOW_SEARCH = 0x00000008,
2357 FOREGROUND_SEARCH = 0x00000010,
2358 BACKGROUND_SEARCH = 0x00000020,
2359 CONTENT_INDEXED_SEARCH = 0x00010000,
2360 NON_CONTENT_INDEXED_SEARCH = 0x00020000,
2361 STATIC_SEARCH = 0x00040000
2362 } SearchFlags;
2364 typedef [flag(NDR_NOALIGN)] struct {
2365 [subcontext(2)] mapi_SRestriction res;
2366 uint16 FolderIdCount;
2367 hyper FolderIds[FolderIdCount];
2368 SearchFlags SearchFlags;
2369 } SetSearchCriteria_req;
2371 typedef [flag(NDR_NOALIGN)] struct {
2372 } SetSearchCriteria_repl;
2374 /*************************/
2375 /* EcDoRpc Function 0x31 */
2376 typedef [flag(NDR_NOALIGN)] struct {
2377 boolean8 UseUnicode;
2378 boolean8 IncludeRestriction;
2379 boolean8 IncludeFolders;
2380 } GetSearchCriteria_req;
2382 typedef [flag(NDR_NOALIGN)] struct {
2383 [subcontext(2)] mapi_SRestriction res;
2384 uint8 unknown;
2385 uint16 FolderIdCount;
2386 hyper FolderIds[FolderIdCount];
2387 SearchFlags SearchFlags;
2388 } GetSearchCriteria_repl;
2390 /*************************/
2391 /* EcDoRpc Function 0x32 */
2392 typedef [enum8bit] enum {
2393 None = 0x0, /* None */
2394 PreProcess = 0x1, /* Needs to be preprocessed by the server */
2395 NeedsSpooler = 0x2 /* Is to be processed by a client spooler */
2396 } SubmitFlags;
2398 typedef [flag(NDR_NOALIGN)] struct {
2399 SubmitFlags SubmitFlags;
2400 } SubmitMessage_req;
2402 typedef [flag(NDR_NOALIGN)] struct {
2403 } SubmitMessage_repl;
2405 /*************************/
2406 /* EcDoRpc Function 0x33 */
2407 typedef [flag(NDR_NOALIGN)] struct {
2408 uint8 handle_idx;
2409 uint16 count;
2410 hyper message_id[count];
2411 boolean8 WantAsynchronous;
2412 boolean8 WantCopy;
2413 } MoveCopyMessages_req;
2415 typedef [flag(NDR_NOALIGN)] struct {
2416 boolean8 PartialCompletion;
2417 } MoveCopyMessages_repl;
2419 /*************************/
2420 /* EcDoRpc Function 0x34 */
2421 typedef [flag(NDR_NOALIGN)] struct {
2422 hyper FolderId;
2423 hyper MessageId;
2424 } AbortSubmit_req;
2426 typedef [flag(NDR_NOALIGN)] struct {
2427 } AbortSubmit_repl;
2429 /*************************/
2430 /* EcDoRpc Function 0x35 */
2431 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
2432 [case(0x0)] astring lpszA;
2433 [case(0x1)][flag(STR_NULLTERM)] string lpszW;
2434 } Folder_name;
2436 typedef [flag(NDR_NOALIGN)] struct {
2437 uint8 handle_idx;
2438 boolean8 WantAsynchronous;
2439 boolean8 UseUnicode;
2440 hyper FolderId;
2441 [switch_is(UseUnicode)] Folder_name NewFolderName;
2442 } MoveFolder_req;
2444 typedef [flag(NDR_NOALIGN)] struct {
2445 boolean8 PartialCompletion;
2446 } MoveFolder_repl;
2448 /*************************/
2449 /* EcDoRpc Function 0x36 */
2450 typedef [flag(NDR_NOALIGN)] struct {
2451 uint8 handle_idx;
2452 boolean8 WantAsynchronous;
2453 boolean8 WantRecursive;
2454 boolean8 UseUnicode;
2455 hyper FolderId;
2456 [switch_is(UseUnicode)] Folder_name NewFolderName;
2457 } CopyFolder_req;
2459 typedef [flag(NDR_NOALIGN)] struct {
2460 boolean8 PartialCompletion;
2461 } CopyFolder_repl;
2463 /*************************/
2464 /* EcDoRpc Function 0x37 */
2465 typedef [flag(NDR_NOALIGN)] struct {
2466 } QueryColumnsAll_req;
2468 typedef [flag(NDR_NOALIGN)] struct {
2469 uint16 PropertyTagCount;
2470 MAPITAGS PropertyTags[PropertyTagCount];
2471 } QueryColumnsAll_repl;
2473 /*************************/
2474 /* EcDoRpc Function 0x38 */
2475 typedef [flag(NDR_NOALIGN)] struct {
2476 } Abort_req;
2478 typedef [flag(NDR_NOALIGN)] struct {
2479 TableStatus TableStatus;
2480 } Abort_repl;
2482 /*************************/
2483 /* EcDoRpc Function 0x39 */
2484 typedef [bitmap8bit] bitmap {
2485 CopyFlagsMove = 0x1, /* Move properties */
2486 CopyFlagsNoOverwrite = 0x2 /* Do not overwrite existing properties */
2487 } CopyFlags;
2489 typedef [flag(NDR_NOALIGN)] struct {
2490 uint8 handle_idx;
2491 boolean8 WantAsynchronous;
2492 boolean8 WantSubObjects;
2493 CopyFlags CopyFlags;
2494 mapi_SPropTagArray ExcludedTags;
2495 } CopyTo_req;
2497 typedef [flag(NDR_NOALIGN)] struct {
2498 uint16 PropertyProblemCount;
2499 PropertyProblem PropertyProblem[PropertyProblemCount];
2500 } CopyTo_repl;
2502 /*************************/
2503 /* EcDoRpc Function 0x3a */
2504 typedef [flag(NDR_NOALIGN)] struct {
2505 uint8 handle_idx;
2506 hyper ByteCount;
2507 } CopyToStream_req;
2509 typedef [flag(NDR_NOALIGN)] struct {
2510 hyper ReadByteCount;
2511 hyper WrittenByteCount;
2512 } CopyToStream_repl;
2514 /*************************/
2515 /* EcDoRpc Function 0x3b */
2516 typedef [flag(NDR_NOALIGN)] struct {
2517 uint8 handle_idx;
2518 } CloneStream_req;
2520 typedef [flag(NDR_NOALIGN)] struct {
2521 } CloneStream_repl;
2523 /*************************/
2524 /* EcDoRpc Function 0x3e */
2525 typedef [flag(NDR_NOALIGN)] struct {
2526 uint8 handle_idx;
2527 uint8 padding;
2528 } GetTable_req;
2530 typedef [flag(NDR_NOALIGN)] struct {
2531 } GetTable_repl;
2533 /*************************/
2534 /* EcDoRpc Function 0x3f */
2535 typedef [bitmap8bit] bitmap {
2536 RulesTableFlags_Unicode = 0x40
2537 } RulesTableFlags;
2539 typedef [flag(NDR_NOALIGN)] struct {
2540 uint8 handle_idx;
2541 RulesTableFlags TableFlags;
2542 } GetRulesTable_req;
2544 typedef [flag(NDR_NOALIGN)] struct {
2545 } GetRulesTable_repl;
2547 /*************************/
2548 /* EcDoRpc Function 0x40 */
2549 typedef [flag(NDR_NOALIGN)] struct {
2550 mapi_SRowList rowList;
2551 } ModifyTable_req;
2553 typedef [flag(NDR_NOALIGN)] struct {
2554 [flag(NDR_REMAINING)] DATA_BLOB remaining;
2555 } ModifyTable_repl;
2557 /*************************/
2558 /* EcDoRpc Function 0x41 */
2559 typedef [flag(NDR_NOALIGN)] struct {
2560 ulRowFlags RuleDataFlags;
2561 mapi_SPropValue_array PropertyValues;
2562 } RuleData;
2564 typedef [bitmap8bit] bitmap {
2565 ModifyRulesFlag_Replace = 0x01
2566 } ModifyRulesFlag;
2568 typedef [flag(NDR_NOALIGN)] struct {
2569 ModifyRulesFlag ModifyRulesFlags;
2570 uint16 RulesCount;
2571 RuleData RulesData[RulesCount];
2572 } ModifyRules_req;
2574 typedef [flag(NDR_NOALIGN)] struct {
2575 } ModifyRules_repl;
2577 /*************************/
2578 /* EcDoRpc Function 0x42 */
2579 typedef [flag(NDR_NOALIGN)] struct {
2580 hyper FolderId;
2581 } GetOwningServers_req;
2583 typedef [flag(NDR_NOALIGN)] struct {
2584 uint16 OwningServersCount;
2585 uint16 CheapServersCount;
2586 astring OwningServers[OwningServersCount];
2587 } GetOwningServers_repl;
2589 /*************************/
2590 /* EcDoRpc Function 0x43 */
2591 typedef [flag(NDR_NOALIGN)] struct {
2592 hyper Id;
2593 } LongTermIdFromId_req;
2595 typedef [flag(NDR_NOALIGN)] struct {
2596 GUID DatabaseGuid;
2597 uint8 GlobalCounter[6];
2598 uint16 padding;
2599 } LongTermId;
2601 typedef [flag(NDR_NOALIGN)] struct {
2602 LongTermId LongTermId;
2603 } LongTermIdFromId_repl;
2605 /*************************/
2606 /* EcDoRpc Function 0x44 */
2607 typedef [flag(NDR_NOALIGN)] struct {
2608 LongTermId LongTermId;
2609 } IdFromLongTermId_req;
2611 typedef [flag(NDR_NOALIGN)] struct {
2612 hyper Id;
2613 } IdFromLongTermId_repl;
2615 /*************************/
2616 /* EcDoRpc Function 0x45 */
2617 typedef [flag(NDR_NOALIGN)] struct {
2618 hyper FolderId;
2619 } PublicFolderIsGhosted_req;
2621 typedef [flag(NDR_NOALIGN)] struct {
2622 boolean8 IsGhosted;
2623 [switch_is(IsGhosted)] IsGhosted Ghost;
2624 } PublicFolderIsGhosted_repl;
2626 /*************************/
2627 /* EcDoRpc Function 0x46 */
2628 typedef [enum8bit, flag(NDR_PAHEX)] enum {
2629 MAPI_READONLY = 0x0,
2630 MAPI_READWRITE = 0x1,
2631 MAPI_CREATE = 0x2
2632 } OpenEmbeddedMessage_OpenModeFlags;
2634 typedef [flag(NDR_NOALIGN)] struct {
2635 uint8 handle_idx;
2636 uint16 CodePageId;
2637 OpenEmbeddedMessage_OpenModeFlags OpenModeFlags;
2638 } OpenEmbeddedMessage_req;
2640 typedef [flag(NDR_NOALIGN)] struct {
2641 uint8 Reserved;
2642 hyper MessageId;
2643 boolean8 HasNamedProperties;
2644 TypedString SubjectPrefix;
2645 TypedString NormalizedSubject;
2646 uint16 RecipientCount;
2647 uint16 ColumnCount;
2648 MAPITAGS RecipientColumns[ColumnCount];
2649 uint8 RowCount;
2650 OpenRecipientRow RecipientRows[RowCount];
2651 } OpenEmbeddedMessage_repl;
2653 /*************************/
2654 /* EcDoRpc Function 0x47 */
2655 typedef [flag(NDR_NOALIGN)] struct {
2656 } SetSpooler_req;
2658 typedef [flag(NDR_NOALIGN)] struct {
2659 } SetSpooler_repl;
2661 /*************************/
2662 /* EcDoRpc Function 0x48 */
2663 typedef [enum8bit] enum {
2664 LockState_1stLock = 0x0,
2665 LockState_1stUnlock = 0x1,
2666 LockState_1stFinished = 0x2
2667 } LockState;
2669 typedef [flag(NDR_NOALIGN)] struct {
2670 hyper MessageId;
2671 LockState LockState;
2672 } SpoolerLockMessage_req;
2674 typedef [flag(NDR_NOALIGN)] struct {
2675 } SpoolerLockMessage_repl;
2677 /*************************/
2678 /* EcDoRpc Function 0x49 */
2679 typedef [flag(NDR_NOALIGN)] struct {
2680 } AddressTypes_req;
2682 typedef [flag(NDR_NOALIGN)] struct {
2683 uint16 cValues;
2684 uint16 size;
2685 mapi_LPSTR transport[cValues];
2686 } AddressTypes_repl;
2688 /**************************/
2689 /* EcDoRpc Function 0x4a */
2690 typedef [flag(NDR_NOALIGN)] struct {
2691 } TransportSend_req;
2693 typedef [nodiscriminant] union {
2694 [case(0x0)] mapi_SPropValue_array lpProps;
2695 [case(0x1)];
2696 } TransportSend_lpProps;
2698 typedef [flag(NDR_NOALIGN)] struct {
2699 boolean8 NoPropertiesReturned;
2700 [switch_is(NoPropertiesReturned)] TransportSend_lpProps properties;
2701 } TransportSend_repl;
2703 /**************************/
2704 /* EcDoRpc Function 0x4e */
2705 typedef [flag(NDR_NOALIGN)] struct {
2706 uint16 BufferSize;
2707 } FastTransferSourceGetBuffer_req;
2709 typedef [enum16bit] enum {
2710 TransferStatus_Error = 0x0,
2711 TransferStatus_Partial = 0x1,
2712 TransferStatus_NoRoom = 0x2,
2713 TransferStatus_Done = 0x3
2714 } TransferStatus;
2716 typedef [flag(NDR_NOALIGN)] struct {
2717 TransferStatus TransferStatus;
2718 uint16 InProgressCount;
2719 uint16 TotalStepCount;
2720 uint8 Reserved;
2721 uint16 TransferBufferSize;
2722 [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING)] DATA_BLOB TransferBuffer;
2723 } FastTransferSourceGetBuffer_repl;
2725 /**************************/
2726 /* EcDoRpc Function 0x4f */
2727 typedef [enum8bit] enum {
2728 DIR_FORWARD = 0x0,
2729 DIR_BACKWARD = 0x1
2730 } FindRow_ulFlags;
2732 typedef [flag(NDR_NOALIGN)] struct {
2733 FindRow_ulFlags ulFlags;
2734 [subcontext(2)] mapi_SRestriction res;
2735 BOOKMARK origin;
2736 SBinary_short bookmark;
2737 } FindRow_req;
2739 typedef [flag(NDR_NOALIGN)] struct {
2740 uint8 RowNoLongerVisible;
2741 uint8 HasRowData;
2742 [flag(NDR_NOALIGN)] DATA_BLOB row;
2743 } FindRow_repl;
2745 /**************************/
2746 /* EcDoRpc Function 0x50 */
2747 typedef [flag(NDR_NOALIGN)] struct {
2748 boolean8 WantCancel;
2749 } Progress_req;
2751 typedef [flag(NDR_NOALIGN)] struct {
2752 uint32 CompletedTaskCount;
2753 uint32 TotalTaskCount;
2754 } Progress_repl;
2756 /**************************/
2757 /* EcDoRpc Function 0x51 */
2758 typedef [flag(NDR_NOALIGN)] struct {
2759 hyper MessageId;
2760 hyper FolderId;
2761 astring MessageClass;
2762 uint32 MessageFlags;
2763 } TransportNewMail_req;
2765 typedef [flag(NDR_NOALIGN)] struct {
2766 } TransportNewMail_repl;
2768 /*************************/
2769 /* EcDoRpc Function 0x55 */
2770 typedef [enum8bit] enum {
2771 MNID_ID = 0,
2772 MNID_STRING = 1
2773 } ulKind;
2775 typedef [flag(NDR_NOALIGN)] struct {
2776 uint8 NameSize;
2777 [flag(STR_NULLTERM)] string Name;
2778 } mapi_name;
2780 typedef [nodiscriminant] union {
2781 [case(MNID_ID)] uint32 lid;
2782 [case(MNID_STRING)] mapi_name lpwstr;
2783 } Kind;
2785 typedef [flag(NDR_NOALIGN)] struct {
2786 ulKind ulKind;
2787 GUID lpguid;
2788 [switch_is(ulKind)] Kind kind;
2789 } MAPINAMEID;
2791 typedef [flag(NDR_NOALIGN)] struct {
2792 uint16 PropertyIdCount;
2793 uint16 PropertyIds[PropertyIdCount];
2794 } GetNamesFromIDs_req;
2796 typedef [flag(NDR_NOALIGN)] struct {
2797 uint16 count;
2798 MAPINAMEID nameid[count];
2799 } GetNamesFromIDs_repl;
2801 /*************************/
2802 /* EcDoRpc Function 0x56 */
2803 typedef [flag(NDR_NOALIGN)] struct {
2804 uint8 ulFlags;
2805 uint16 count;
2806 MAPINAMEID nameid[count];
2807 } GetIDsFromNames_req;
2809 typedef [flag(NDR_NOALIGN)] struct {
2810 uint16 count;
2811 uint16 propID[count];
2812 } GetIDsFromNames_repl;
2814 /*************************/
2815 /* EcDoRpc Function 0x57 */
2816 typedef [flag(NDR_NOALIGN)] struct {
2817 SBinary_short ServerEntryId;
2818 SBinary_short ClientEntryId;
2819 } UpdateDeferredActionMessages_req;
2821 typedef [flag(NDR_NOALIGN)] struct {
2822 } UpdateDeferredActionMessages_repl;
2824 /*************************/
2825 /* EcDoRpc Function 0x58 */
2826 typedef [flag(NDR_NOALIGN)] struct {
2827 boolean8 WantAsynchronous;
2828 boolean8 WantDeleteAssociated;
2829 } EmptyFolder_req;
2831 typedef [flag(NDR_NOALIGN)] struct {
2832 boolean8 PartialCompletion;
2833 } EmptyFolder_repl;
2835 /*************************/
2836 /* EcDoRpc Function 0x59 */
2837 typedef [flag(NDR_NOALIGN)] struct {
2838 uint16 MaxRowCount;
2839 hyper CategoryId;
2840 } ExpandRow_req;
2842 typedef [flag(NDR_NOALIGN)] struct {
2843 uint32 ExpandedRowCount;
2844 uint16 RowCount;
2845 [flag(NDR_REMAINING)]DATA_BLOB RowData;
2846 } ExpandRow_repl;
2848 /*************************/
2849 /* EcDoRpc Function 0x5a */
2850 typedef [flag(NDR_NOALIGN)] struct {
2851 hyper CategoryId;
2852 } CollapseRow_req;
2854 typedef [flag(NDR_NOALIGN)] struct {
2855 uint32 CollapsedRowCount;
2856 } CollapseRow_repl;
2858 /*************************/
2859 /* EcDoRpc Function 0x5b */
2860 typedef [flag(NDR_NOALIGN)] struct {
2861 hyper RegionOffset;
2862 hyper RegionSize;
2863 uint32 LockFlags;
2864 } LockRegionStream_req;
2866 typedef [flag(NDR_NOALIGN)] struct {
2867 } LockRegionStream_repl;
2869 /*************************/
2870 /* EcDoRpc Function 0x5c */
2871 typedef [flag(NDR_NOALIGN)] struct {
2872 hyper RegionOffset;
2873 hyper RegionSize;
2874 uint32 LockFlags;
2875 } UnlockRegionStream_req;
2877 typedef [flag(NDR_NOALIGN)] struct {
2878 } UnlockRegionStream_repl;
2880 /*************************/
2881 /* EcDoRpc Function 0x5d */
2882 typedef [flag(NDR_NOALIGN)] struct {
2883 } CommitStream_req;
2885 typedef [flag(NDR_NOALIGN)] struct {
2886 } CommitStream_repl;
2888 /*************************/
2889 /* EcDoRpc Function 0x5e */
2890 typedef [flag(NDR_NOALIGN)] struct {
2891 } GetStreamSize_req;
2893 typedef [flag(NDR_NOALIGN)] struct {
2894 uint32 StreamSize;
2895 } GetStreamSize_repl;
2897 /*************************/
2898 /* EcDoRpc Function 0x5f */
2899 typedef [bitmap8bit] bitmap {
2900 NoStrings = 0x01,
2901 NoIds = 0x02
2902 } QueryFlags;
2904 typedef [nodiscriminant] union {
2905 [case(0x0)];
2906 [case(0x1)] GUID guid;
2907 } QueryNamedProperties_guid;
2909 typedef [flag(NDR_NOALIGN)] struct {
2910 QueryFlags QueryFlags;
2911 boolean8 HasGuid;
2912 [switch_is(HasGuid)] QueryNamedProperties_guid PropertyGuid;
2913 } QueryNamedProperties_req;
2915 typedef [flag(NDR_NOALIGN)] struct {
2916 uint16 IdCount;
2917 uint16 PropertyIds[IdCount];
2918 MAPINAMEID PropertyNames[IdCount];
2919 } QueryNamedProperties_repl;
2921 /*************************/
2922 /* EcDoRpc Function 0x60 */
2923 typedef [flag(NDR_NOALIGN)] struct {
2924 GUID DatabaseGuid;
2925 } GetPerUserLongTermIds_req;
2927 typedef [flag(NDR_NOALIGN)] struct {
2928 uint16 LongTermIdCount;
2929 LongTermId LongTermIds[LongTermIdCount];
2930 } GetPerUserLongTermIds_repl;
2932 /*************************/
2933 /* EcDoRpc Function 0x61 */
2934 typedef [flag(NDR_NOALIGN)] struct {
2935 LongTermId LongTermId;
2936 } GetPerUserGuid_req;
2938 typedef [flag(NDR_NOALIGN)] struct {
2939 GUID DatabaseGuid;
2940 } GetPerUserGuid_repl;
2942 /*************************/
2943 /* EcDoRpc Function 0x63 */
2944 typedef [flag(NDR_NOALIGN)] struct {
2945 uint8 FolderId[24];
2946 boolean8 WhatIfChanged;
2947 uint32 DataOffset;
2948 uint16 MaxDataSize;
2949 } ReadPerUserInformation_req;
2951 typedef [flag(NDR_NOALIGN)] struct {
2952 boolean8 HasFinished;
2953 uint16 DataSize;
2954 [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING)] DATA_BLOB Data;
2955 } ReadPerUserInformation_repl;
2957 /*************************/
2958 /* EcDoRpc Function 0x66 */
2959 typedef [flag(NDR_NOALIGN)] struct {
2960 boolean8 WantAsynchronous;
2961 MSGFLAG_READ ReadFlags;
2962 uint16 MessageIdCount;
2963 hyper MessageIds[MessageIdCount];
2964 } SetReadFlags_req;
2966 typedef [flag(NDR_NOALIGN)] struct {
2967 boolean8 PartialCompletion;
2968 } SetReadFlags_repl;
2970 /*************************/
2971 /* EcDoRpc Function 0x67 */
2972 typedef [flag(NDR_NOALIGN)] struct {
2973 uint8 handle_idx;
2974 boolean8 WantAsynchronous;
2975 CopyFlags CopyFlags;
2976 mapi_SPropTagArray PropertyTags;
2977 } CopyProperties_req;
2979 typedef [flag(NDR_NOALIGN)] struct {
2980 uint16 PropertyProblemCount;
2981 PropertyProblem PropertyProblem[PropertyProblemCount];
2982 } CopyProperties_repl;
2984 /*************************/
2985 /* EcDoRpc Function 0x68 */
2986 typedef [flag(NDR_NOALIGN)] struct {
2987 uint8 unknown;
2988 hyper fid;
2989 astring lpszMessageClass;
2990 FILETIME modiftime;
2991 } ReceiveFolder;
2993 typedef [flag(NDR_NOALIGN)] struct {
2994 } GetReceiveFolderTable_req;
2996 typedef [flag(NDR_NOALIGN)] struct {
2997 uint32 cValues;
2998 ReceiveFolder entries[cValues];
2999 } GetReceiveFolderTable_repl;
3001 /*************************/
3002 /* EcDoRpc Function 0x6b */
3003 typedef [flag(NDR_NOALIGN)] struct {
3004 hyper RowId;
3005 uint32 RowInstanceNumber;
3006 } GetCollapseState_req;
3008 typedef [flag(NDR_NOALIGN)] struct {
3009 SBinary_short CollapseState;
3010 } GetCollapseState_repl;
3012 /*************************/
3013 /* EcDoRpc Function 0x6c */
3014 typedef [flag(NDR_NOALIGN)] struct {
3015 SBinary_short CollapseState;
3016 } SetCollapseState_req;
3018 typedef [flag(NDR_NOALIGN)] struct {
3019 SBinary_short bookmark;
3020 } SetCollapseState_repl;
3022 /*************************/
3023 /* EcDoRpc Function 0x6d */
3024 typedef [flag(NDR_NOALIGN)] struct {
3025 } GetTransportFolder_req;
3027 typedef [flag(NDR_NOALIGN)] struct {
3028 hyper FolderId;
3029 } GetTransportFolder_repl;
3031 /*************************/
3032 /* EcDoRpc Function 0x6e */
3033 typedef [flag(NDR_NOALIGN)] struct {
3034 uint16 SessionIndex;
3035 } Pending_repl;
3037 /*************************/
3038 /* EcDoRpc Function 0x6f */
3039 typedef [enum8bit,flag(NDR_NOALIGN)] enum {
3040 OPTION_TYPE_RECIPIENT = 0x1,
3041 OPTION_TYPE_MESSAGE = 0x2
3042 } OPTIONDATA_ulFlags;
3044 typedef [flag(NDR_NOALIGN)] struct {
3045 astring transport;
3046 OPTIONDATA_ulFlags type;
3047 } RegisterOptions_req;
3049 typedef [flag(NDR_NOALIGN)] struct {
3050 OPTIONDATA_ulFlags ulFlags;
3051 DATA_BLOB data;
3052 } RegisterOptions_repl;
3054 /*************************/
3055 /* EcDoRpc Function 0x70 */
3056 typedef [enum8bit] enum {
3057 Contents = 0x1,
3058 Hierarchy = 0x2
3059 } SynchronizationType;
3061 typedef [bitmap8bit] bitmap {
3062 SendOptions_Unicode = 0x1,
3063 SendOptions_ForUpload = 0x3,
3064 SendOptions_RecoverMode = 0x4,
3065 SendOptions_ForceUnicode = 0x8,
3066 SendOptions_Partial = 0x10
3067 } SendOptions;
3069 typedef [bitmap16bit] bitmap {
3070 SynchronizationFlag_Unicode = 0x1,
3071 SynchronizationFlag_NoDeletions = 0x2,
3072 SynchronizationFlag_NoSoftDeletions = 0x4,
3073 SynchronizationFlag_ReadState = 0x8,
3074 SynchronizationFlag_FAI = 0x10,
3075 SynchronizationFlag_Normal = 0x20,
3076 SynchronizationFlag_OnlySpecifiedProperties = 0x80,
3077 SynchronizationFlag_NoForeignIdentifiers = 0x100,
3078 SynchronizationFlag_Reserved = 0x1000,
3079 SynchronizationFlag_BestBody = 0x2000,
3080 SynchronizationFlag_IgnoreSpecifiedOnFAI = 0x4000,
3081 SynchronizationFlag_Progress = 0x8000
3082 } SynchronizationFlag;
3084 typedef [bitmap32bit] bitmap {
3085 Eid = 0x00000001,
3086 MessageSize = 0x00000002,
3087 Cn = 0x00000004,
3088 OrderByDeliveryTime = 0x00000008
3089 } SynchronizationExtraFlags;
3091 typedef [flag(NDR_NOALIGN)] struct {
3092 uint8 handle_idx;
3093 SynchronizationType SynchronizationType;
3094 SendOptions SendOptions;
3095 SynchronizationFlag SynchronizationFlag;
3096 uint16 RestrictionSize;
3097 [subcontext(0),subcontext_size(RestrictionSize),flag(NDR_REMAINING)] DATA_BLOB RestrictionData;
3098 SynchronizationExtraFlags SynchronizationExtraFlags;
3099 mapi_SPropTagArray PropertyTags;
3100 } SyncConfigure_req;
3102 typedef [flag(NDR_NOALIGN)] struct {
3103 } SyncConfigure_repl;
3105 /*************************/
3106 /* EcDoRpc Function 0x72 */
3107 typedef [bitmap8bit] bitmap {
3108 ImportFlag_Associated = 0x10,
3109 ImportFlag_FailOnConflict = 0x40
3110 } ImportFlag;
3112 typedef [flag(NDR_NOALIGN)] struct {
3113 uint8 handle_idx;
3114 ImportFlag ImportFlag;
3115 mapi_SPropValue_array PropertyValues;
3116 } SyncImportMessageChange_req;
3118 typedef [flag(NDR_NOALIGN)] struct {
3119 hyper MessageId;
3120 } SyncImportMessageChange_repl;
3122 /*************************/
3123 /* EcDoRpc Function 0x73 */
3124 typedef [flag(NDR_NOALIGN)] struct {
3125 mapi_SPropValue_array HierarchyValues;
3126 mapi_SPropValue_array PropertyValues;
3127 } SyncImportHierarchyChange_req;
3129 typedef [flag(NDR_NOALIGN)] struct {
3130 hyper FolderId;
3131 } SyncImportHierarchyChange_repl;
3133 /*************************/
3134 /* EcDoRpc Function 0x74 */
3135 typedef [flag(NDR_NOALIGN)] struct {
3136 boolean8 IsHierarchy;
3137 mapi_SPropValue_array PropertyValues;
3138 } SyncImportDeletes_req;
3140 typedef [flag(NDR_NOALIGN)] struct {
3141 } SyncImportDeletes_repl;
3143 /*************************/
3144 /* EcDoRpc Function 0x75 */
3145 typedef [v1_enum,flag(NDR_PAHEX)] enum {
3146 PidTagIdsetGiven = 0x40170003,
3147 PidTagCnsetSeen = 0x67960102,
3148 PidTagCnsetSeenFAI = 0x67da0102,
3149 PidTagCnsetRead = 0x67d20102
3150 } StateProperty;
3152 typedef [flag(NDR_NOALIGN)] struct {
3153 StateProperty StateProperty;
3154 uint32 TransferBufferSize;
3155 } SyncUploadStateStreamBegin_req;
3157 typedef [flag(NDR_NOALIGN)] struct {
3158 } SyncUploadStateStreamBegin_repl;
3160 /*************************/
3161 /* EcDoRpc Function 0x76 */
3162 typedef [flag(NDR_NOALIGN)] struct {
3163 uint32 StreamDataSize;
3164 uint8 StreamData[StreamDataSize];
3165 } SyncUploadStateStreamContinue_req;
3167 typedef [flag(NDR_NOALIGN)] struct {
3168 } SyncUploadStateStreamContinue_repl;
3170 /*************************/
3171 /* EcDoRpc Function 0x77 */
3172 typedef [flag(NDR_NOALIGN)] struct {
3173 } SyncUploadStateStreamEnd_req;
3175 typedef [flag(NDR_NOALIGN)] struct {
3176 } SyncUploadStateStreamEnd_repl;
3178 /*************************/
3179 /* EcDoRpc Function 0x78 */
3180 typedef [flag(NDR_NOALIGN)] struct {
3181 uint32 SourceFolderIdSize;
3182 uint8 SourceFolderId[SourceFolderIdSize];
3183 uint32 SourceMessageIdSize;
3184 uint8 SourceMessageId[SourceMessageIdSize];
3185 uint32 PredecessorChangeListSize;
3186 uint8 PredecessorChangeList[PredecessorChangeListSize];
3187 uint32 DestinationMessageIdSize;
3188 uint8 DestinationMessageId[DestinationMessageIdSize];
3189 uint32 ChangeNumberSize;
3190 uint8 ChangeNumber[ChangeNumberSize];
3191 } SyncImportMessageMove_req;
3193 typedef [flag(NDR_NOALIGN)] struct {
3194 hyper MessageId;
3195 } SyncImportMessageMove_repl;
3197 /*************************/
3198 /* EcDoRpc Function 0x79 */
3199 typedef [flag(NDR_NOALIGN)] struct {
3200 [subcontext(2)] mapi_SPropValue_array values;
3201 } SetPropertiesNoReplicate_req;
3203 typedef [flag(NDR_NOALIGN)] struct {
3204 uint16 PropertyProblemCount;
3205 PropertyProblem PropertyProblem[PropertyProblemCount];
3206 } SetPropertiesNoReplicate_repl;
3208 /*************************/
3209 /* EcDoRpc Function 0x7a */
3210 typedef [flag(NDR_NOALIGN)] struct {
3211 mapi_SPropTagArray PropertyTags;
3212 } DeletePropertiesNoReplicate_req;
3214 typedef [flag(NDR_NOALIGN)] struct {
3215 uint16 PropertyProblemCount;
3216 PropertyProblem PropertyProblem[PropertyProblemCount];
3217 } DeletePropertiesNoReplicate_repl;
3219 /*************************/
3220 /* EcDoRpc Function 0x7b */
3221 typedef [public,bitmap32bit] bitmap {
3222 STORE_HAS_SEARCHES = 0x010000000
3223 } StoreState;
3225 typedef [flag(NDR_NOALIGN)] struct {
3226 } GetStoreState_req;
3228 typedef [flag(NDR_NOALIGN)] struct {
3229 StoreState StoreState;
3230 } GetStoreState_repl;
3232 /*************************/
3233 /* EcDoRpc Function 0x7e */
3234 typedef [flag(NDR_NOALIGN)] struct {
3235 uint8 handle_idx;
3236 boolean8 IsContentsCollector;
3237 } SyncOpenCollector_req;
3239 typedef [flag(NDR_NOALIGN)] struct {
3240 } SyncOpenCollector_repl;
3242 /*************************/
3243 /* EcDoRpc Function 0x7f */
3244 typedef [flag(NDR_NOALIGN)] struct {
3245 uint32 IdCount;
3246 } GetLocalReplicaIds_req;
3248 typedef [flag(NDR_NOALIGN)] struct {
3249 GUID ReplGuid;
3250 uint8 GlobalCount[6];
3251 } GetLocalReplicaIds_repl;
3253 /*************************/
3254 /* EcDoRpc Function 0x80 */
3255 // typedef [flag(NDR_NOALIGN)] struct {
3256 // uint16 MessageSize;
3257 // uint8 MessageId[MessageSize];
3258 // boolean8 MarkAsRead;
3259 // } MessageReadStates;
3261 typedef [flag(NDR_NOALIGN)] struct {
3262 uint16 MessageReadStateSize;
3263 [subcontext(0),subcontext_size(MessageReadStateSize),flag(NDR_REMAINING)] DATA_BLOB MessageStates;
3264 } SyncImportReadStateChanges_req;
3266 typedef [flag(NDR_NOALIGN)] struct {
3267 } SyncImportReadStateChanges_repl;
3269 /*************************/
3270 /* EcDoRpc Function 0x81 */
3271 typedef [flag(NDR_NOALIGN)] struct {
3272 } ResetTable_req;
3274 typedef [flag(NDR_NOALIGN)] struct {
3275 } ResetTable_repl;
3277 /*************************/
3278 /* EcDoRpc Function 0x82 */
3279 typedef [flag(NDR_NOALIGN)] struct {
3280 uint8 handle_idx;
3281 } SyncGetTransferState_req;
3283 typedef [flag(NDR_NOALIGN)] struct {
3284 } SyncGetTransferState_repl;
3286 /*************************/
3287 /* EcDoRpc Function 0x87 */
3288 typedef [flag(NDR_NOALIGN)] struct {
3289 uint8 handle_idx;
3290 asclstr name;
3291 } OpenPublicFolderByName_req;
3293 typedef [flag(NDR_NOALIGN)] struct {
3294 boolean8 HasRules;
3295 boolean8 IsGhosted;
3296 [switch_is(IsGhosted)] IsGhosted Ghost;
3297 } OpenPublicFolderByName_repl;
3299 /*************************/
3300 /* EcDoRpc Function 0x88 */
3301 typedef [flag(NDR_NOALIGN)] struct {
3302 GUID NotificationGuid;
3303 } SetSyncNotificationGuid_req;
3305 typedef [flag(NDR_NOALIGN)] struct {
3306 } SetSyncNotificationGuid_repl;
3308 /*************************/
3309 /* EcDoRpc Function 0x89 */
3310 typedef [flag(NDR_NOALIGN)] struct {
3311 SBinary_short bookmark;
3312 } FreeBookmark_req;
3314 typedef [flag(NDR_NOALIGN)] struct {
3315 } FreeBookmark_repl;
3317 /*************************/
3318 /* EcDoRpc Function 0x90 */
3319 typedef [flag(NDR_NOALIGN)] struct {
3320 [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data;
3321 } WriteAndCommitStream_req;
3324 typedef [flag(NDR_NOALIGN)] struct {
3325 uint16 WrittenSize;
3326 } WriteAndCommitStream_repl;
3328 /**************************/
3329 /* EcDoRpc Function 0x91 */
3330 typedef [flag(NDR_NOALIGN)] struct {
3331 boolean8 WantAsynchronous;
3332 boolean8 NotifyNonRead;
3333 uint16 MessageIdCount;
3334 hyper MessageIds[MessageIdCount];
3335 } HardDeleteMessages_req;
3337 typedef [flag(NDR_NOALIGN)] struct {
3338 boolean8 PartialCompletion;
3339 } HardDeleteMessages_repl;
3341 /*************************/
3342 /* EcDoRpc Function 0x92 */
3343 typedef [flag(NDR_NOALIGN)] struct {
3344 boolean8 WantAsynchronous;
3345 boolean8 WantDeleteAssociated;
3346 } HardDeleteMessagesAndSubfolders_req;
3348 typedef [flag(NDR_NOALIGN)] struct {
3349 boolean8 PartialCompletion;
3350 } HardDeleteMessagesAndSubfolders_repl;
3352 /*************************/
3353 /* EcDoRpc Function 0xFE */
3354 typedef [public,bitmap8bit] bitmap {
3355 LogonPrivate = 0x1,
3356 UnderCover = 0x2,
3357 Ghosted = 0x4,
3358 SpIProcess = 0x8
3359 } LogonFlags;
3361 typedef [public,bitmap32bit] bitmap {
3362 PUBLIC = 0x2,
3363 HOME_LOGON = 0x4,
3364 TAKE_OWNERSHIP = 0x8,
3365 ALTERNATE_SERVER = 0x100,
3366 IGNORE_HOME_MDB = 0x200,
3367 NO_MAIL = 0x400,
3368 USE_PER_MDB_REPLID_MAPPING = 0x010000000
3369 } OpenFlags;
3371 typedef [enum8bit] enum {
3372 DayOfWeek_Sunday = 0x0,
3373 DayOfWeek_Monday = 0x1,
3374 DayOfWeek_Tuesday = 0x2,
3375 DayOfWeek_Wednesday = 0x3,
3376 DayOfWeek_Thursday = 0x4,
3377 DayOfWeek_Friday = 0x5,
3378 DayOfWeek_Saturday = 0x6
3379 } DayOfWeek;
3381 typedef [flag(NDR_NOALIGN)] struct {
3382 uint8 Seconds;
3383 uint8 Minutes;
3384 uint8 Hour;
3385 DayOfWeek DayOfWeek;
3386 uint8 Day;
3387 uint8 Month;
3388 uint16 Year;
3389 } LogonTime;
3391 typedef [bitmap8bit] bitmap {
3392 ResponseFlags_Reserved = 0x1,
3393 ResponseFlags_OwnerRight = 0x2,
3394 ResponseFlags_SendAsRight = 0x4,
3395 ResponseFlags_OOF = 0x10
3396 } ResponseFlags;
3398 typedef [flag(NDR_NOALIGN)] struct {
3399 hyper FolderIds[13];
3400 uint16 ReplId;
3401 GUID Guid;
3402 GUID PerUserGuid;
3403 } store_pf;
3405 typedef [flag(NDR_NOALIGN)] struct {
3406 hyper FolderIds[13];
3407 ResponseFlags ResponseFlags;
3408 GUID MailboxGuid;
3409 uint16 ReplId;
3410 GUID ReplGUID;
3411 LogonTime LogonTime;
3412 hyper GwartTime;
3413 StoreState StoreState;
3414 } store_mailbox;
3416 typedef [nodiscriminant] union {
3417 [case(0x0)] store_pf store_pf;
3418 [case(LogonPrivate)] store_mailbox store_mailbox;
3419 } LogonType;
3421 typedef [nopush,flag(NDR_NOALIGN)] struct {
3422 LogonFlags LogonFlags;
3423 OpenFlags OpenFlags;
3424 StoreState StoreState;
3425 ascstr3 EssDN;
3426 } Logon_req;
3428 typedef [flag(NDR_NOALIGN)] struct {
3429 LogonFlags LogonFlags;
3430 [switch_is(LogonFlags)] LogonType LogonType;
3431 } Logon_repl;
3433 /* Logon redirect response buffer (error_code == ecWrongServer) */
3434 typedef [public,flag(NDR_NOALIGN)] struct {
3435 LogonFlags LogonFlags;
3436 uint8 ServerNameSize;
3437 astring ServerName;
3438 } Logon_redirect;
3440 /*************************/
3441 /* EcDoRpc Function 0xA5 */
3442 typedef [flag(NDR_NOALIGN)] struct {
3443 SBinary_short bin;
3444 } proxypack_req;
3446 typedef [flag(NDR_NOALIGN)] struct {
3447 SBinary_short bin;
3448 } proxypack_repl;
3450 typedef [public, nodiscriminant] union {
3451 [case(op_MAPI_Release)] Release_req mapi_Release;
3452 [case(op_MAPI_OpenFolder)] OpenFolder_req mapi_OpenFolder;
3453 [case(op_MAPI_OpenMessage)] OpenMessage_req mapi_OpenMessage;
3454 [case(op_MAPI_GetHierarchyTable)] GetHierarchyTable_req mapi_GetHierarchyTable;
3455 [case(op_MAPI_GetContentsTable)] GetContentsTable_req mapi_GetContentsTable;
3456 [case(op_MAPI_CreateMessage)] CreateMessage_req mapi_CreateMessage;
3457 [case(op_MAPI_GetProps)] GetProps_req mapi_GetProps;
3458 [case(op_MAPI_GetPropsAll)] GetPropsAll_req mapi_GetPropsAll;
3459 [case(op_MAPI_GetPropList)] GetPropList_req mapi_GetPropList;
3460 [case(op_MAPI_SetProps)] SetProps_req mapi_SetProps;
3461 [case(op_MAPI_DeleteProps)] DeleteProps_req mapi_DeleteProps;
3462 [case(op_MAPI_SaveChangesMessage)] SaveChangesMessage_req mapi_SaveChangesMessage;
3463 [case(op_MAPI_SetMessageReadFlag)] SetMessageReadFlag_req mapi_SetMessageReadFlag;
3464 [case(op_MAPI_ReloadCachedInformation)] ReloadCachedInformation_req mapi_ReloadCachedInformation;
3465 [case(op_MAPI_SetColumns)] SetColumns_req mapi_SetColumns;
3466 [case(op_MAPI_SortTable)] SortTable_req mapi_SortTable;
3467 [case(op_MAPI_Restrict)] Restrict_req mapi_Restrict;
3468 [case(op_MAPI_RemoveAllRecipients)] RemoveAllRecipients_req mapi_RemoveAllRecipients;
3469 [case(op_MAPI_ModifyRecipients)] ModifyRecipients_req mapi_ModifyRecipients;
3470 [case(op_MAPI_ReadRecipients)] ReadRecipients_req mapi_ReadRecipients;
3471 [case(op_MAPI_QueryRows)] QueryRows_req mapi_QueryRows;
3472 [case(op_MAPI_GetStatus)] GetStatus_req mapi_GetStatus;
3473 [case(op_MAPI_QueryPosition)] QueryPosition_req mapi_QueryPosition;
3474 [case(op_MAPI_SeekRow)] SeekRow_req mapi_SeekRow;
3475 [case(op_MAPI_SeekRowBookmark)] SeekRowBookmark_req mapi_SeekRowBookmark;
3476 [case(op_MAPI_SeekRowApprox)] SeekRowApprox_req mapi_SeekRowApprox;
3477 [case(op_MAPI_CreateBookmark)] CreateBookmark_req mapi_CreateBookmark;
3478 [case(op_MAPI_CreateFolder)] CreateFolder_req mapi_CreateFolder;
3479 [case(op_MAPI_DeleteFolder)] DeleteFolder_req mapi_DeleteFolder;
3480 [case(op_MAPI_DeleteMessages)] DeleteMessages_req mapi_DeleteMessages;
3481 [case(op_MAPI_GetMessageStatus)] GetMessageStatus_req mapi_GetMessageStatus;
3482 [case(op_MAPI_SetMessageStatus)] SetMessageStatus_req mapi_SetMessageStatus;
3483 [case(op_MAPI_GetAttachmentTable)] GetAttachmentTable_req mapi_GetAttachmentTable;
3484 [case(op_MAPI_OpenAttach)] OpenAttach_req mapi_OpenAttach;
3485 [case(op_MAPI_CreateAttach)] CreateAttach_req mapi_CreateAttach;
3486 [case(op_MAPI_DeleteAttach)] DeleteAttach_req mapi_DeleteAttach;
3487 [case(op_MAPI_SaveChangesAttachment)] SaveChangesAttachment_req mapi_SaveChangesAttachment;
3488 [case(op_MAPI_SetReceiveFolder)] SetReceiveFolder_req mapi_SetReceiveFolder;
3489 [case(op_MAPI_GetReceiveFolder)] GetReceiveFolder_req mapi_GetReceiveFolder;
3490 [case(op_MAPI_RegisterNotification)] RegisterNotification_req mapi_RegisterNotification;
3491 [case(op_MAPI_OpenStream)] OpenStream_req mapi_OpenStream;
3492 [case(op_MAPI_ReadStream)] ReadStream_req mapi_ReadStream;
3493 [case(op_MAPI_WriteStream)] WriteStream_req mapi_WriteStream;
3494 [case(op_MAPI_SeekStream)] SeekStream_req mapi_SeekStream;
3495 [case(op_MAPI_SetStreamSize)] SetStreamSize_req mapi_SetStreamSize;
3496 [case(op_MAPI_SetSearchCriteria)] SetSearchCriteria_req mapi_SetSearchCriteria;
3497 [case(op_MAPI_GetSearchCriteria)] GetSearchCriteria_req mapi_GetSearchCriteria;
3498 [case(op_MAPI_SubmitMessage)] SubmitMessage_req mapi_SubmitMessage;
3499 [case(op_MAPI_MoveCopyMessages)] MoveCopyMessages_req mapi_MoveCopyMessages;
3500 [case(op_MAPI_AbortSubmit)] AbortSubmit_req mapi_AbortSubmit;
3501 [case(op_MAPI_MoveFolder)] MoveFolder_req mapi_MoveFolder;
3502 [case(op_MAPI_CopyFolder)] CopyFolder_req mapi_CopyFolder;
3503 [case(op_MAPI_QueryColumnsAll)] QueryColumnsAll_req mapi_QueryColumnsAll;
3504 [case(op_MAPI_Abort)] Abort_req mapi_Abort;
3505 [case(op_MAPI_CopyTo)] CopyTo_req mapi_CopyTo;
3506 [case(op_MAPI_CopyToStream)] CopyToStream_req mapi_CopyToStream;
3507 [case(op_MAPI_CloneStream)] CloneStream_req mapi_CloneStream;
3508 [case(op_MAPI_GetTable)] GetTable_req mapi_GetTable;
3509 [case(op_MAPI_GetRulesTable)] GetRulesTable_req mapi_GetRulesTable;
3510 [case(op_MAPI_ModifyTable)] ModifyTable_req mapi_ModifyTable;
3511 [case(op_MAPI_ModifyRules)] ModifyRules_req mapi_ModifyRules;
3512 [case(op_MAPI_GetOwningServers)] GetOwningServers_req mapi_GetOwningServers;
3513 [case(op_MAPI_LongTermIdFromId)] LongTermIdFromId_req mapi_LongTermIdFromId;
3514 [case(op_MAPI_IdFromLongTermId)] IdFromLongTermId_req mapi_IdFromLongTermId;
3515 [case(op_MAPI_PublicFolderIsGhosted)] PublicFolderIsGhosted_req mapi_PublicFolderIsGhosted;
3516 [case(op_MAPI_OpenEmbeddedMessage)] OpenEmbeddedMessage_req mapi_OpenEmbeddedMessage;
3517 [case(op_MAPI_SetSpooler)] SetSpooler_req mapi_SetSpooler;
3518 [case(op_MAPI_SpoolerLockMessage)] SpoolerLockMessage_req mapi_SpoolerLockMessage;
3519 [case(op_MAPI_AddressTypes)] AddressTypes_req mapi_AddressTypes;
3520 [case(op_MAPI_TransportSend)] TransportSend_req mapi_TransportSend;
3521 [case(op_MAPI_FastTransferSourceGetBuffer)] FastTransferSourceGetBuffer_req mapi_FastTransferSourceGetBuffer;
3522 [case(op_MAPI_FindRow)] FindRow_req mapi_FindRow;
3523 [case(op_MAPI_Progress)] Progress_req mapi_Progress;
3524 [case(op_MAPI_TransportNewMail)] TransportNewMail_req mapi_TransportNewMail;
3525 [case(op_MAPI_GetNamesFromIDs)] GetNamesFromIDs_req mapi_GetNamesFromIDs;
3526 [case(op_MAPI_GetIDsFromNames)] GetIDsFromNames_req mapi_GetIDsFromNames;
3527 [case(op_MAPI_UpdateDeferredActionMessages)] UpdateDeferredActionMessages_req mapi_UpdateDeferredActionMessages;
3528 [case(op_MAPI_EmptyFolder)] EmptyFolder_req mapi_EmptyFolder;
3529 [case(op_MAPI_ExpandRow)] ExpandRow_req mapi_ExpandRow;
3530 [case(op_MAPI_CollapseRow)] CollapseRow_req mapi_CollapseRow;
3531 [case(op_MAPI_LockRegionStream)] LockRegionStream_req mapi_LockRegionStream;
3532 [case(op_MAPI_UnlockRegionStream)] UnlockRegionStream_req mapi_UnlockRegionStream;
3533 [case(op_MAPI_CommitStream)] CommitStream_req mapi_CommitStream;
3534 [case(op_MAPI_GetStreamSize)] GetStreamSize_req mapi_GetStreamSize;
3535 [case(op_MAPI_QueryNamedProperties)] QueryNamedProperties_req mapi_QueryNamedProperties;
3536 [case(op_MAPI_GetPerUserLongTermIds)] GetPerUserLongTermIds_req mapi_GetPerUserLongTermIds;
3537 [case(op_MAPI_GetPerUserGuid)] GetPerUserGuid_req mapi_GetPerUserGuid;
3538 [case(op_MAPI_ReadPerUserInformation)] ReadPerUserInformation_req mapi_ReadPerUserInformation;
3539 [case(op_MAPI_SetReadFlags)] SetReadFlags_req mapi_SetReadFlags;
3540 [case(op_MAPI_CopyProperties)] CopyProperties_req mapi_CopyProperties;
3541 [case(op_MAPI_GetReceiveFolderTable)] GetReceiveFolderTable_req mapi_GetReceiveFolderTable;
3542 [case(op_MAPI_GetCollapseState)] GetCollapseState_req mapi_GetCollapseState;
3543 [case(op_MAPI_SetCollapseState)] SetCollapseState_req mapi_SetCollapseState;
3544 [case(op_MAPI_GetTransportFolder)] GetTransportFolder_req mapi_GetTransportFolder;
3545 [case(op_MAPI_RegisterOptions)] RegisterOptions_req mapi_RegisterOptions;
3546 [case(op_MAPI_SyncConfigure)] SyncConfigure_req mapi_SyncConfigure;
3547 [case(op_MAPI_SyncImportMessageChange)] SyncImportMessageChange_req mapi_SyncImportMessageChange;
3548 [case(op_MAPI_SyncImportHierarchyChange)] SyncImportHierarchyChange_req mapi_SyncImportHierarchyChange;
3549 [case(op_MAPI_SyncImportDeletes)] SyncImportDeletes_req mapi_SyncImportDeletes;
3550 [case(op_MAPI_SyncUploadStateStreamBegin)] SyncUploadStateStreamBegin_req mapi_SyncUploadStateStreamBegin;
3551 [case(op_MAPI_SyncUploadStateStreamContinue)] SyncUploadStateStreamContinue_req mapi_SyncUploadStateStreamContinue;
3552 [case(op_MAPI_SyncUploadStateStreamEnd)] SyncUploadStateStreamEnd_req mapi_SyncUploadStateStreamEnd;
3553 [case(op_MAPI_SyncImportMessageMove)] SyncImportMessageMove_req mapi_SyncImportMessageMove;
3554 [case(op_MAPI_SetPropertiesNoReplicate)] SetPropertiesNoReplicate_req mapi_SetPropertiesNoReplicate;
3555 [case(op_MAPI_DeletePropertiesNoReplicate)] DeletePropertiesNoReplicate_req mapi_DeletePropertiesNoReplicate;
3556 [case(op_MAPI_GetStoreState)] GetStoreState_req mapi_GetStoreState;
3557 [case(op_MAPI_SyncOpenCollector)] SyncOpenCollector_req mapi_SyncOpenCollector;
3558 [case(op_MAPI_GetLocalReplicaIds)] GetLocalReplicaIds_req mapi_GetLocalReplicaIds;
3559 [case(op_MAPI_SyncImportReadStateChanges)] SyncImportReadStateChanges_req mapi_SyncImportReadStateChanges;
3560 [case(op_MAPI_ResetTable)] ResetTable_req mapi_ResetTable;
3561 [case(op_MAPI_SyncGetTransferState)] SyncGetTransferState_req mapi_SyncGetTransferState;
3562 [case(op_MAPI_OpenPublicFolderByName)] OpenPublicFolderByName_req mapi_OpenPublicFolderByName;
3563 [case(op_MAPI_SetSyncNotificationGuid)] SetSyncNotificationGuid_req mapi_SetSyncNotificationGuid;
3564 [case(op_MAPI_FreeBookmark)] FreeBookmark_req mapi_FreeBookmark;
3565 [case(op_MAPI_WriteAndCommitStream)] WriteAndCommitStream_req mapi_WriteAndCommitStream;
3566 [case(op_MAPI_HardDeleteMessages)] HardDeleteMessages_req mapi_HardDeleteMessages;
3567 [case(op_MAPI_HardDeleteMessagesAndSubfolders)] HardDeleteMessagesAndSubfolders_req mapi_HardDeleteMessagesAndSubfolders;
3568 [case(op_MAPI_Logon)] Logon_req mapi_Logon;
3569 [case(op_MAPI_proxypack)] proxypack_req mapi_proxypack;
3570 } EcDoRpc_MAPI_REQ_UNION;
3572 typedef [public, nodiscriminant] union {
3573 [case(op_MAPI_Release)] Release_repl mapi_Release;
3574 [case(op_MAPI_OpenFolder)] OpenFolder_repl mapi_OpenFolder;
3575 [case(op_MAPI_OpenMessage)] OpenMessage_repl mapi_OpenMessage;
3576 [case(op_MAPI_GetHierarchyTable)] GetHierarchyTable_repl mapi_GetHierarchyTable;
3577 [case(op_MAPI_GetContentsTable)] GetContentsTable_repl mapi_GetContentsTable;
3578 [case(op_MAPI_CreateMessage)] CreateMessage_repl mapi_CreateMessage;
3579 [case(op_MAPI_GetProps)] GetProps_repl mapi_GetProps;
3580 [case(op_MAPI_GetPropsAll)] GetPropsAll_repl mapi_GetPropsAll;
3581 [case(op_MAPI_GetPropList)] GetPropList_repl mapi_GetPropList;
3582 [case(op_MAPI_SetProps)] SetProps_repl mapi_SetProps;
3583 [case(op_MAPI_DeleteProps)] DeleteProps_repl mapi_DeleteProps;
3584 [case(op_MAPI_SaveChangesMessage)] SaveChangesMessage_repl mapi_SaveChangesMessage;
3585 [case(op_MAPI_RemoveAllRecipients)] RemoveAllRecipients_repl mapi_RemoveAllRecipients;
3586 [case(op_MAPI_ModifyRecipients)] ModifyRecipients_repl mapi_ModifyRecipients;
3587 [case(op_MAPI_ReadRecipients)] ReadRecipients_repl mapi_ReadRecipients;
3588 [case(op_MAPI_SetMessageReadFlag)] SetMessageReadFlag_repl mapi_SetMessageReadFlag;
3589 [case(op_MAPI_ReloadCachedInformation)] ReloadCachedInformation_repl mapi_ReloadCachedInformation;
3590 [case(op_MAPI_SetColumns)] SetColumns_repl mapi_SetColumns;
3591 [case(op_MAPI_SortTable)] SortTable_repl mapi_SortTable;
3592 [case(op_MAPI_Restrict)] Restrict_repl mapi_Restrict;
3593 [case(op_MAPI_QueryRows)] QueryRows_repl mapi_QueryRows;
3594 [case(op_MAPI_GetStatus)] GetStatus_repl mapi_GetStatus;
3595 [case(op_MAPI_QueryPosition)] QueryPosition_repl mapi_QueryPosition;
3596 [case(op_MAPI_SeekRow)] SeekRow_repl mapi_SeekRow;
3597 [case(op_MAPI_SeekRowBookmark)] SeekRowBookmark_repl mapi_SeekRowBookmark;
3598 [case(op_MAPI_SeekRowApprox)] SeekRowApprox_repl mapi_SeekRowApprox;
3599 [case(op_MAPI_CreateBookmark)] CreateBookmark_repl mapi_CreateBookmark;
3600 [case(op_MAPI_CreateFolder)] CreateFolder_repl mapi_CreateFolder;
3601 [case(op_MAPI_DeleteFolder)] DeleteFolder_repl mapi_DeleteFolder;
3602 [case(op_MAPI_DeleteMessages)] DeleteMessages_repl mapi_DeleteMessages;
3603 [case(op_MAPI_SetMessageStatus)] SetMessageStatus_repl mapi_SetMessageStatus;
3604 [case(op_MAPI_GetAttachmentTable)] GetAttachmentTable_repl mapi_GetAttachmentTable;
3605 [case(op_MAPI_OpenAttach)] OpenAttach_repl mapi_OpenAttach;
3606 [case(op_MAPI_CreateAttach)] CreateAttach_repl mapi_CreateAttach;
3607 [case(op_MAPI_DeleteAttach)] DeleteAttach_repl mapi_DeleteAttach;
3608 [case(op_MAPI_SaveChangesAttachment)] SaveChangesAttachment_repl mapi_SaveChangesAttachment;
3609 [case(op_MAPI_SetReceiveFolder)] SetReceiveFolder_repl mapi_SetReceiveFolder;
3610 [case(op_MAPI_GetReceiveFolder)] GetReceiveFolder_repl mapi_GetReceiveFolder;
3611 [case(op_MAPI_RegisterNotification)] RegisterNotification_repl mapi_RegisterNotification;
3612 [case(op_MAPI_Notify)] Notify_repl mapi_Notify;
3613 [case(op_MAPI_OpenStream)] OpenStream_repl mapi_OpenStream;
3614 [case(op_MAPI_ReadStream)] ReadStream_repl mapi_ReadStream;
3615 [case(op_MAPI_WriteStream)] WriteStream_repl mapi_WriteStream;
3616 [case(op_MAPI_SeekStream)] SeekStream_repl mapi_SeekStream;
3617 [case(op_MAPI_SetStreamSize)] SetStreamSize_repl mapi_SetStreamSize;
3618 [case(op_MAPI_SetSearchCriteria)] SetSearchCriteria_repl mapi_SetSearchCriteria;
3619 [case(op_MAPI_GetSearchCriteria)] GetSearchCriteria_repl mapi_GetSearchCriteria;
3620 [case(op_MAPI_SubmitMessage)] SubmitMessage_repl mapi_SubmitMessage;
3621 [case(op_MAPI_MoveCopyMessages)] MoveCopyMessages_repl mapi_MoveCopyMessages;
3622 [case(op_MAPI_AbortSubmit)] AbortSubmit_repl mapi_AbortSubmit;
3623 [case(op_MAPI_MoveFolder)] MoveFolder_repl mapi_MoveFolder;
3624 [case(op_MAPI_CopyFolder)] CopyFolder_repl mapi_CopyFolder;
3625 [case(op_MAPI_QueryColumnsAll)] QueryColumnsAll_repl mapi_QueryColumnsAll;
3626 [case(op_MAPI_Abort)] Abort_repl mapi_Abort;
3627 [case(op_MAPI_CopyTo)] CopyTo_repl mapi_CopyTo;
3628 [case(op_MAPI_CopyToStream)] CopyToStream_repl mapi_CopyToStream;
3629 [case(op_MAPI_CloneStream)] CloneStream_repl mapi_CloneStream;
3630 [case(op_MAPI_GetTable)] GetTable_repl mapi_GetTable;
3631 [case(op_MAPI_GetRulesTable)] GetRulesTable_repl mapi_GetRulesTable;
3632 [case(op_MAPI_ModifyTable)] ModifyTable_repl mapi_ModifyTable;
3633 [case(op_MAPI_ModifyRules)] ModifyRules_repl mapi_ModifyRules;
3634 [case(op_MAPI_GetOwningServers)] GetOwningServers_repl mapi_GetOwningServers;
3635 [case(op_MAPI_LongTermIdFromId)] LongTermIdFromId_repl mapi_LongTermIdFromId;
3636 [case(op_MAPI_IdFromLongTermId)] IdFromLongTermId_repl mapi_IdFromLongTermId;
3637 [case(op_MAPI_PublicFolderIsGhosted)] PublicFolderIsGhosted_repl mapi_PublicFolderIsGhosted;
3638 [case(op_MAPI_OpenEmbeddedMessage)] OpenEmbeddedMessage_repl mapi_OpenEmbeddedMessage;
3639 [case(op_MAPI_SetSpooler)] SetSpooler_repl mapi_SetSpooler;
3640 [case(op_MAPI_SpoolerLockMessage)] SpoolerLockMessage_repl mapi_SpoolerLockMessage;
3641 [case(op_MAPI_AddressTypes)] AddressTypes_repl mapi_AddressTypes;
3642 [case(op_MAPI_TransportSend)] TransportSend_repl mapi_TransportSend;
3643 [case(op_MAPI_FastTransferSourceGetBuffer)] FastTransferSourceGetBuffer_repl mapi_FastTransferSourceGetBuffer;
3644 [case(op_MAPI_FindRow)] FindRow_repl mapi_FindRow;
3645 [case(op_MAPI_Progress)] Progress_repl mapi_Progress;
3646 [case(op_MAPI_TransportNewMail)] TransportNewMail_repl mapi_TransportNewMail;
3647 [case(op_MAPI_GetNamesFromIDs)] GetNamesFromIDs_repl mapi_GetNamesFromIDs;
3648 [case(op_MAPI_GetIDsFromNames)] GetIDsFromNames_repl mapi_GetIDsFromNames;
3649 [case(op_MAPI_UpdateDeferredActionMessages)] UpdateDeferredActionMessages_repl mapi_UpdateDeferredActionMessages;
3650 [case(op_MAPI_EmptyFolder)] EmptyFolder_repl mapi_EmptyFolder;
3651 [case(op_MAPI_ExpandRow)] ExpandRow_repl mapi_ExpandRow;
3652 [case(op_MAPI_CollapseRow)] CollapseRow_repl mapi_CollapseRow;
3653 [case(op_MAPI_LockRegionStream)] LockRegionStream_repl mapi_LockRegionStream;
3654 [case(op_MAPI_UnlockRegionStream)] UnlockRegionStream_repl mapi_UnlockRegionStream;
3655 [case(op_MAPI_CommitStream)] CommitStream_repl mapi_CommitStream;
3656 [case(op_MAPI_GetStreamSize)] GetStreamSize_repl mapi_GetStreamSize;
3657 [case(op_MAPI_QueryNamedProperties)] QueryNamedProperties_repl mapi_QueryNamedProperties;
3658 [case(op_MAPI_GetPerUserLongTermIds)] GetPerUserLongTermIds_repl mapi_GetPerUserLongTermIds;
3659 [case(op_MAPI_GetPerUserGuid)] GetPerUserGuid_repl mapi_GetPerUserGuid;
3660 [case(op_MAPI_ReadPerUserInformation)] ReadPerUserInformation_repl mapi_ReadPerUserInformation;
3661 [case(op_MAPI_SetReadFlags)] SetReadFlags_repl mapi_SetReadFlags;
3662 [case(op_MAPI_CopyProperties)] CopyProperties_repl mapi_CopyProperties;
3663 [case(op_MAPI_GetReceiveFolderTable)] GetReceiveFolderTable_repl mapi_GetReceiveFolderTable;
3664 [case(op_MAPI_Pending)] Pending_repl mapi_Pending;
3665 [case(op_MAPI_GetCollapseState)] GetCollapseState_repl mapi_GetCollapseState;
3666 [case(op_MAPI_SetCollapseState)] SetCollapseState_repl mapi_SetCollapseState;
3667 [case(op_MAPI_GetTransportFolder)] GetTransportFolder_repl mapi_GetTransportFolder;
3668 [case(op_MAPI_RegisterOptions)] RegisterOptions_repl mapi_RegisterOptions;
3669 [case(op_MAPI_SyncConfigure)] SyncConfigure_repl mapi_SyncConfigure;
3670 [case(op_MAPI_SyncImportMessageChange)] SyncImportMessageChange_repl mapi_SyncImportMessageChange;
3671 [case(op_MAPI_SyncImportHierarchyChange)] SyncImportHierarchyChange_repl mapi_SyncImportHierarchyChange;
3672 [case(op_MAPI_SyncImportDeletes)] SyncImportDeletes_repl mapi_SyncImportDeletes;
3673 [case(op_MAPI_SyncUploadStateStreamBegin)] SyncUploadStateStreamBegin_repl mapi_SyncUploadStateStreamBegin;
3674 [case(op_MAPI_SyncUploadStateStreamContinue)] SyncUploadStateStreamContinue_repl mapi_SyncUploadStateStreamContinue;
3675 [case(op_MAPI_SyncUploadStateStreamEnd)] SyncUploadStateStreamEnd_repl mapi_SyncUploadStateStreamEnd;
3676 [case(op_MAPI_SyncImportMessageMove)] SyncImportMessageMove_repl mapi_SyncImportMessageMove;
3677 [case(op_MAPI_SetPropertiesNoReplicate)] SetPropertiesNoReplicate_repl mapi_SetPropertiesNoReplicate;
3678 [case(op_MAPI_DeletePropertiesNoReplicate)] DeletePropertiesNoReplicate_repl mapi_DeletePropertiesNoReplicate;
3679 [case(op_MAPI_GetStoreState)] GetStoreState_repl mapi_GetStoreState;
3680 [case(op_MAPI_SyncOpenCollector)] SyncOpenCollector_repl mapi_SyncOpenCollector;
3681 [case(op_MAPI_GetLocalReplicaIds)] GetLocalReplicaIds_repl mapi_GetLocalReplicaIds;
3682 [case(op_MAPI_SyncImportReadStateChanges)] SyncImportReadStateChanges_repl mapi_SyncImportReadStateChanges;
3683 [case(op_MAPI_ResetTable)] ResetTable_repl mapi_ResetTable;
3684 [case(op_MAPI_SyncGetTransferState)] SyncGetTransferState_repl mapi_SyncGetTransferState;
3685 [case(op_MAPI_OpenPublicFolderByName)] OpenPublicFolderByName_repl mapi_OpenPublicFolderByName;
3686 [case(op_MAPI_SetSyncNotificationGuid)] SetSyncNotificationGuid_repl mapi_SetSyncNotificationGuid;
3687 [case(op_MAPI_FreeBookmark)] FreeBookmark_repl mapi_FreeBookmark;
3688 [case(op_MAPI_WriteAndCommitStream)] WriteAndCommitStream_repl mapi_WriteAndCommitStream;
3689 [case(op_MAPI_HardDeleteMessages)] HardDeleteMessages_repl mapi_HardDeleteMessages;
3690 [case(op_MAPI_HardDeleteMessagesAndSubfolders)] HardDeleteMessagesAndSubfolders_repl mapi_HardDeleteMessagesAndSubfolders;
3691 [case(op_MAPI_Logon)] Logon_repl mapi_Logon;
3692 [case(op_MAPI_proxypack)] proxypack_repl mapi_proxypack;
3694 } EcDoRpc_MAPI_REPL_UNION;
3696 typedef [public, nodiscriminant] union {
3697 [case(op_MAPI_Logon)] Logon_redirect mapi_Logon;
3698 [default];
3699 } EcDoRpc_MAPI_REPL_UNION_SPECIAL;
3701 typedef [public,flag(NDR_NOALIGN)] struct {
3702 uint8 opnum;
3703 uint8 logon_id;
3704 uint8 handle_idx;
3705 [switch_is(opnum)] EcDoRpc_MAPI_REQ_UNION u;
3706 } EcDoRpc_MAPI_REQ;
3708 typedef [public,nopush,nopull,noprint,flag(NDR_NOALIGN)] struct {
3709 uint8 opnum;
3710 uint8 handle_idx;
3711 MAPISTATUS error_code;
3712 [switch_is(opnum)] EcDoRpc_MAPI_REPL_UNION u;
3713 [switch_is(opnum)] EcDoRpc_MAPI_REPL_UNION_SPECIAL us;
3714 } EcDoRpc_MAPI_REPL;
3718 Abstract way to represent MAPI content
3721 typedef [public,nopull,nopush,noprint] struct {
3722 uint32 mapi_len; /* whole mapi_data length */
3723 uint16 length; /* content length */
3724 EcDoRpc_MAPI_REQ *mapi_req;
3725 uint32 *handles; /* handles id array */
3726 } mapi_request;
3728 typedef [public,nopull,nopush,noprint] struct {
3729 uint32 mapi_len;
3730 uint16 length;
3731 EcDoRpc_MAPI_REPL *mapi_repl;
3732 uint32 *handles;
3733 } mapi_response;
3736 [public,nopull,nopush] MAPISTATUS EcDoRpc(
3737 [in,out] policy_handle *handle,
3738 [in,out] uint32 size,
3739 [in,out] uint32 offset,
3740 [in] [subcontext(4),flag(NDR_REMAINING|NDR_NOALIGN)] mapi_request *mapi_request,
3741 [out][subcontext(4),flag(NDR_REMAINING|NDR_NOALIGN)] mapi_response *mapi_response,
3742 [in,out] uint16 *length,
3743 [in] uint16 max_data
3746 /*****************/
3747 /* Function 0x03 */
3748 void EcGetMoreRpc();
3750 /*****************/
3751 /* Function 0x04 */
3754 we could directly use a NOTIFKEY structure rather than
3755 a uint8 array, but this makes the IDL more robust
3757 sockaddr array is made of:
3758 - family (unsigned short in) sa_family_t
3759 - address data sa_data[14];
3762 typedef struct {
3763 uint16 cb;
3764 uint8 ab[cb];
3765 } NOTIFKEY;
3767 MAPISTATUS EcRRegisterPushNotification(
3768 [in,out] policy_handle *handle,
3769 [in] NotificationFlags ulEventMask,
3770 [in,size_is(cbContext)] uint8 rgbContext[*],
3771 [in] uint16 cbContext,
3772 [in] uint32 grbitAdviseBits,
3773 [in,size_is(cbCallbackAddress)] uint8 rgCallbackAddress[*],
3774 [in] uint16 cbCallbackAddress,
3775 [out,ref] uint32 *hNotification
3778 /*****************/
3779 /* Function 0x05 */
3780 MAPISTATUS EcRUnregisterPushNotification(
3781 [in,out] policy_handle *handle,
3782 [in] uint32 unknown[2]
3785 /*****************/
3786 /* Function 0x06 */
3787 void EcDummyRpc();
3789 /*****************/
3790 /* Function 0x07 */
3791 void EcRGetDCName();
3793 /*****************/
3794 /* Function 0x08 */
3795 void EcRNetGetDCName();
3797 /*****************/
3798 /* Function 0x09 */
3799 void EcDoRpcExt();
3801 /*****************/
3802 /* Function 0xa */
3803 typedef [public,bitmap16bit] bitmap {
3804 RHEF_Compressed = 0x0001,
3805 RHEF_XorMagic = 0x0002,
3806 RHEF_Last = 0x0004
3807 } RPC_HEADER_EXT_Flags;
3809 typedef [public] struct {
3810 uint16 Version;
3811 RPC_HEADER_EXT_Flags Flags;
3812 uint16 Size;
3813 uint16 SizeActual;
3814 } RPC_HEADER_EXT;
3816 typedef [enum8bit,flag(NDR_PAHEX)] enum {
3817 AUX_TYPE_PERF_REQUESTID = 0x01,
3818 AUX_TYPE_PERF_CLIENTDINFO = 0x02,
3819 AUX_TYPE_PERF_SERVERINFO = 0x03,
3820 AUX_TYPE_PERF_SESSIONINFO = 0x04,
3821 AUX_TYPE_PERF_DEFMDB_SUCCESS = 0x05,
3822 AUX_TYPE_PERF_DEFGC_SUCCESS = 0x06,
3823 AUX_TYPE_PERF_MDB_SUCCESS = 0x07,
3824 AUX_TYPE_PERF_GC_SUCCESS = 0x08,
3825 AUX_TYPE_PERF_FAILURE = 0x09,
3826 AUX_TYPE_CLIENT_CONTROL = 0x0A,
3827 AUX_TYPE_PERF_PROCESSINFO = 0x0B,
3828 AUX_TYPE_PERF_BG_DEFMDB_SUCCESS = 0x0C,
3829 AUX_TYPE_PERF_BG_DEFGC_SUCCESS = 0x0D,
3830 AUX_TYPE_PERF_BG_MDB_SUCCESS = 0x0E,
3831 AUX_TYPE_PERF_BG_GC_SUCCESS = 0x0F,
3832 AUX_TYPE_PERF_BG_FAILURE = 0x10,
3833 AUX_TYPE_PERF_FG_DEFMDB_SUCCESS = 0x11,
3834 AUX_TYPE_PERF_FG_DEFGC_SUCCESS = 0x12,
3835 AUX_TYPE_PERF_FG_MDB_SUCCESS = 0x13,
3836 AUX_TYPE_PERF_FG_GC_SUCCESS = 0x14,
3837 AUX_TYPE_PERF_FG_FAILURE = 0x15,
3838 AUX_TYPE_OSVERSIONINFO = 0x16,
3839 AUX_TYPE_EXORGINFO = 0x17
3840 } AUX_HEADER_TYPE_1;
3842 typedef [enum8bit,flag(NDR_PAHEX)] enum {
3843 AUX_TYPE_PERF_SESSIONINFO_2 = 0x04,
3844 AUX_TYPE_PERF_MDB_SUCCESS_2 = 0x07,
3845 AUX_TYPE_PERF_GC_SUCCESS_2 = 0x08,
3846 AUX_TYPE_PERF_FAILURE_2 = 0x09
3847 } AUX_HEADER_TYPE_2;
3849 typedef [public,enum8bit,flag(NDR_PAHEX)] enum {
3850 AUX_VERSION_1 = 0x1,
3851 AUX_VERSION_2 = 0x2
3852 } AUX_VERSION;
3854 typedef [public,switch_type(uint8)] union {
3855 [case(AUX_VERSION_1)] AUX_HEADER_TYPE_1 Type;
3856 [case(AUX_VERSION_2)] AUX_HEADER_TYPE_2 Type_2;
3857 [default];
3858 } AUX_HEADER_TYPE_ENUM;
3860 /*************************/
3861 /* AUX_HEADER case (0x1) */
3862 typedef [flag(NDR_NOALIGN)] struct {
3863 uint16 SessionID;
3864 uint16 RequestID;
3865 } AUX_PERF_REQUESTID;
3867 /*************************/
3868 /* AUX_HEADER case (0x2) */
3869 typedef [public,enum16bit, flag(NDR_PAHEX)] enum {
3870 CLIENTMODE_UNKNOWN = 0x0,
3871 CLIENTMODE_CLASSIC = 0x1,
3872 CLIENTMODE_CACHED = 0x2
3873 } ClientMode;
3875 typedef [public,flag(NDR_NOALIGN)] struct {
3876 uint32 AdapterSpeed;
3877 uint16 ClientID;
3878 uint16 MachineNameOffset;
3879 uint16 UserNameOffset;
3880 uint16 ClientIPSize;
3881 uint16 ClientIPOffset;
3882 uint16 ClientIPMaskSize;
3883 uint16 ClientIPMaskOffset;
3884 uint16 AdapterNameOffset;
3885 uint16 MacAddressSize;
3886 uint16 MacAddressOffset;
3887 ClientMode ClientMode;
3888 uint16 Reserved;
3889 uint8 MacAddress[MacAddressSize];
3890 uint8 ClientIP[ClientIPSize];
3891 uint8 ClientIPMask[ClientIPMaskSize];
3892 nstring MachineName;
3893 nstring UserName;
3894 nstring AdapterName;
3895 } AUX_PERF_CLIENTINFO;
3897 /*************************/
3898 /* AUX_HEADER case (0x3) */
3899 typedef [enum16bit,flag(NDR_PAHEX)] enum {
3900 SERVERTYPE_UNKNOWN = 0x0,
3901 SERVERTYPE_PRIVATE = 0x1,
3902 SERVERTYPE_PUBLIC = 0x2,
3903 SERVERTYPE_DIRECTORY = 0x3,
3904 SERVERTYPE_REFERRAL = 0x4
3905 } SERVERINFO_ServerType;
3907 typedef [flag(NDR_NOALIGN)] struct {
3908 uint16 ServerID;
3909 SERVERINFO_ServerType ServerType;
3910 uint16 ServerDNOffset;
3911 uint16 ServerNameOffset;
3912 nstring ServerDN;
3913 nstring ServerName;
3914 } AUX_PERF_SERVERINFO;
3916 /*************************/
3917 /* AUX_HEADER case (0x4) */
3918 typedef [flag(NDR_NOALIGN)] struct {
3919 uint16 SessionID;
3920 uint16 Reserved;
3921 GUID SessionGuid;
3922 } AUX_PERF_SESSIONINFO;
3924 typedef [flag(NDR_NOALIGN)] struct {
3925 uint16 SessionID;
3926 uint16 Reserved;
3927 GUID SessionGuid;
3928 uint32 ConnectionID;
3929 } AUX_PERF_SESSIONINFO_V2;
3931 /**************************/
3932 /* AUX_HEADER case (0x5) */
3933 /* AUX_HEADER case (0xC) */
3934 /* AUX_HEADER case (0x11) */
3935 typedef [flag(NDR_NOALIGN)] struct {
3936 uint32 TimeSinceRequest;
3937 uint32 TimeToCompleteRequest;
3938 uint16 RequestID;
3939 uint16 Reserved;
3940 } AUX_PERF_DEFMDB_SUCCESS;
3942 /**************************/
3943 /* AUX_HEADER case (0x6) */
3944 /* AUX_HEADER case (0xD) */
3945 typedef [flag(NDR_NOALIGN)] struct {
3946 uint16 ServerID;
3947 uint16 SessionID;
3948 uint32 TimeSinceRequest;
3949 uint32 TimeToCompleteRequest;
3950 uint8 RequestOperation;
3951 uint8 Reserved[3];
3952 } AUX_PERF_DEFGC_SUCCESS;
3954 /**************************/
3955 /* AUX_HEADER case (0x7) */
3956 /* AUX_HEADER case (0xE) */
3957 /* AUX_HEADER case (0x13) */
3958 typedef [flag(NDR_NOALIGN)] struct {
3959 uint16 ClientID;
3960 uint16 ServerID;
3961 uint16 SessionID;
3962 uint16 RequestID;
3963 uint32 TimeSinceRequest;
3964 uint32 TimeToCompleteRequest;
3965 } AUX_PERF_MDB_SUCCESS;
3967 typedef [flag(NDR_NOALIGN)] struct {
3968 uint16 ProcessID;
3969 uint16 ClientID;
3970 uint16 ServerID;
3971 uint16 SessionID;
3972 uint16 RequestID;
3973 uint16 Reserved;
3974 uint32 TimeSinceRequest;
3975 uint32 TimeToCompleteRequest;
3976 } AUX_PERF_MDB_SUCCESS_V2;
3978 /**************************/
3979 /* AUX_HEADER case (0x8) */
3980 typedef [flag(NDR_NOALIGN)] struct {
3981 uint16 ClientID;
3982 uint16 ServerID;
3983 uint16 SessionID;
3984 uint16 Reserved_1;
3985 uint32 TimeSinceRequest;
3986 uint32 TimeToCompleteRequest;
3987 uint8 RequestOperation;
3988 uint8 Reserved_2[3];
3989 } AUX_PERF_GC_SUCCESS;
3991 typedef [flag(NDR_NOALIGN)] struct {
3992 uint16 ProcessID;
3993 uint16 ClientID;
3994 uint16 ServerID;
3995 uint16 SessionID;
3996 uint32 TimeSinceRequest;
3997 uint32 TimeToCompleteRequest;
3998 uint8 RequestOperation;
3999 uint8 Reserved[3];
4000 } AUX_PERF_GC_SUCCESS_V2;
4002 /**************************/
4003 /* AUX_HEADER case (0x9) */
4004 typedef [flag(NDR_NOALIGN)] struct {
4005 uint16 ClientID;
4006 uint16 ServerID;
4007 uint16 SessionID;
4008 uint16 RequestID;
4009 uint32 TimeSinceRequest;
4010 uint32 TimeToFailRequest;
4011 MAPISTATUS ResultCode;
4012 uint8 RequestOperation;
4013 uint8 Reserved[3];
4014 } AUX_PERF_FAILURE;
4016 typedef [flag(NDR_NOALIGN)] struct {
4017 uint16 ProcessID;
4018 uint16 ClientID;
4019 uint16 ServerID;
4020 uint16 SessionID;
4021 uint16 RequestID;
4022 uint16 Reserved_1;
4023 uint32 TimeSinceRequest;
4024 uint32 TimeToFailRequest;
4025 MAPISTATUS ResultCode;
4026 uint8 RequestOperation;
4027 uint8 Reserved_2[3];
4028 } AUX_PERF_FAILURE_V2;
4030 /**************************/
4031 /* AUX_HEADER case (0xA) */
4032 typedef [bitmap32bit] bitmap {
4033 ENABLE_PERF_SENDTOSERVER = 0x00000001,
4034 ENABLE_PERF_SENDTOMAILBOX = 0x00000002,
4035 ENABLE_COMPRESSION = 0x00000004,
4036 ENABLE_HTTP_TUNNELING = 0x00000008,
4037 ENABLE_PERF_SENDGCDATA = 0x00000010
4038 } CLIENT_CONTROL_EnableFlags;
4040 typedef [flag(NDR_NOALIGN)] struct {
4041 CLIENT_CONTROL_EnableFlags EnableFlags;
4042 uint32 ExpiryTime;
4043 } AUX_CLIENT_CONTROL;
4045 /*************************/
4046 /* AUX_HEADER case (0xB) */
4047 typedef [flag(NDR_NOALIGN)] struct {
4048 uint16 ProcessID;
4049 uint16 Reserved1;
4050 GUID ProcessGuid;
4051 uint16 ProcessNameOffset;
4052 uint16 Reserved2;
4053 nstring ProcessName;
4054 } AUX_PERF_PROCESSINFO;
4056 /**************************/
4057 /* AUX_HEADER case (0x16) */
4058 typedef [flag(NDR_NOALIGN)] struct {
4059 uint32 OSVersionInfoSize;
4060 uint32 MajorVersion;
4061 uint32 MinorVersion;
4062 uint32 BuildNumber;
4063 [subcontext(0), subcontext_size(132), flag(NDR_NOALIGN|NDR_REMAINING)] DATA_BLOB Reserved_1;
4064 uint16 ServicePackMajor;
4065 uint16 ServicePackMinor;
4066 uint32 Reserved_2;
4067 } AUX_OSVERSIONINFO;
4069 /**************************/
4070 /* AUX_HEADER case (0x17) */
4071 typedef [bitmap32bit] bitmap {
4072 PUBLIC_FOLDERS_ENABLED = 0x00000001
4073 } EXORGINFO_OrgFlags;
4075 typedef [flag(NDR_NOALIGN)] struct {
4076 EXORGINFO_OrgFlags OrgFlags;
4077 } AUX_EXORGINFO;
4079 typedef [public,nodiscriminant,flag(NDR_NOALIGN)] union {
4080 [case(AUX_TYPE_PERF_REQUESTID)] AUX_PERF_REQUESTID AUX_PERF_REQUESTID;
4081 [case(AUX_TYPE_PERF_CLIENTDINFO)] AUX_PERF_CLIENTINFO AUX_PERF_CLIENTINFO;
4082 [case(AUX_TYPE_PERF_SERVERINFO)] AUX_PERF_SERVERINFO AUX_PERF_SERVERINFO;
4083 [case(AUX_TYPE_PERF_SESSIONINFO)] AUX_PERF_SESSIONINFO AUX_PERF_SESSIONINFO;
4084 [case(AUX_TYPE_PERF_DEFMDB_SUCCESS)] AUX_PERF_DEFMDB_SUCCESS AUX_PERF_DEFMDB_SUCCESS;
4085 [case(AUX_TYPE_PERF_DEFGC_SUCCESS)] AUX_PERF_DEFGC_SUCCESS AUX_PERF_DEFGC_SUCCESS;
4086 [case(AUX_TYPE_PERF_MDB_SUCCESS)] AUX_PERF_MDB_SUCCESS AUX_PERF_MDB_SUCCESS;
4087 [case(AUX_TYPE_PERF_GC_SUCCESS)] AUX_PERF_GC_SUCCESS AUX_PERF_GC_SUCCESS;
4088 [case(AUX_TYPE_PERF_FAILURE)] AUX_PERF_FAILURE AUX_PERF_FAILURE;
4089 [case(AUX_TYPE_CLIENT_CONTROL)] AUX_CLIENT_CONTROL AUX_CLIENT_CONTROL;
4090 [case(AUX_TYPE_PERF_PROCESSINFO)] AUX_PERF_PROCESSINFO AUX_PERF_PROCESSINFO;
4091 [case(AUX_TYPE_PERF_BG_DEFMDB_SUCCESS)] AUX_PERF_DEFMDB_SUCCESS AUX_PERF_DEFMDB_SUCCESS;
4092 [case(AUX_TYPE_PERF_BG_DEFGC_SUCCESS)] AUX_PERF_DEFGC_SUCCESS AUX_PERF_DEFGC_SUCCESS;
4093 [case(AUX_TYPE_PERF_BG_MDB_SUCCESS)] AUX_PERF_MDB_SUCCESS AUX_PERF_MDB_SUCCESS;
4094 [case(AUX_TYPE_PERF_BG_GC_SUCCESS)] AUX_PERF_GC_SUCCESS AUX_PERF_GC_SUCCESS;
4095 [case(AUX_TYPE_PERF_BG_FAILURE)] AUX_PERF_FAILURE AUX_PERF_FAILURE;
4096 [case(AUX_TYPE_PERF_FG_DEFMDB_SUCCESS)] AUX_PERF_DEFMDB_SUCCESS AUX_PERF_DEFMDB_SUCCESS;
4097 [case(AUX_TYPE_PERF_FG_DEFGC_SUCCESS)] AUX_PERF_DEFGC_SUCCESS AUX_PERF_DEFGC_SUCCESS;
4098 [case(AUX_TYPE_PERF_FG_MDB_SUCCESS)] AUX_PERF_MDB_SUCCESS AUX_PERF_MDB_SUCCESS;
4099 [case(AUX_TYPE_PERF_FG_GC_SUCCESS)] AUX_PERF_GC_SUCCESS AUX_PERG_GC_SUCCESS;
4100 [case(AUX_TYPE_PERF_FG_FAILURE)] AUX_PERF_FAILURE AUX_PERF_FAILURE;
4101 [case(AUX_TYPE_OSVERSIONINFO)] AUX_OSVERSIONINFO AUX_OSVERSIONINFO;
4102 [case(AUX_TYPE_EXORGINFO)] AUX_EXORGINFO AUX_EXORGINFO;
4103 [default][flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Payload;
4104 } AUX_HEADER_TYPE_UNION_1;
4106 typedef [public,nodiscriminant,flag(NDR_NOALIGN)] union {
4107 [case(AUX_TYPE_PERF_REQUESTID)] AUX_PERF_REQUESTID AUX_PERF_REQUESTID;
4108 [case(AUX_TYPE_PERF_CLIENTDINFO)] AUX_PERF_CLIENTINFO AUX_PERF_CLIENTINFO;
4109 [case(AUX_TYPE_PERF_SERVERINFO)] AUX_PERF_SERVERINFO AUX_PERF_SERVERINFO;
4110 [case(AUX_TYPE_PERF_SESSIONINFO_2)] AUX_PERF_SESSIONINFO_V2 AUX_PERF_SESSIONINFO_V2; /* V2 specific */
4111 [case(AUX_TYPE_PERF_DEFMDB_SUCCESS)] AUX_PERF_DEFMDB_SUCCESS AUX_PERF_DEFMDB_SUCCESS;
4112 [case(AUX_TYPE_PERF_DEFGC_SUCCESS)] AUX_PERF_DEFGC_SUCCESS AUX_PERF_DEFGC_SUCCESS;
4113 [case(AUX_TYPE_PERF_MDB_SUCCESS_2)] AUX_PERF_MDB_SUCCESS_V2 AUX_PERF_MDB_SUCCESS_V2; /* V2 specific */
4114 [case(AUX_TYPE_PERF_GC_SUCCESS_2)] AUX_PERF_GC_SUCCESS_V2 AUX_PERF_GC_SUCCESS_V2; /* V2 specific */
4115 [case(AUX_TYPE_PERF_FAILURE_2)] AUX_PERF_FAILURE_V2 AUX_PERF_FAILURE_V2; /* V2 specific*/
4116 [case(AUX_TYPE_CLIENT_CONTROL)] AUX_CLIENT_CONTROL AUX_CLIENT_CONTROL;
4117 [case(AUX_TYPE_PERF_PROCESSINFO)] AUX_PERF_PROCESSINFO AUX_PERF_PROCESSINFO;
4118 [case(AUX_TYPE_PERF_BG_DEFMDB_SUCCESS)] AUX_PERF_DEFMDB_SUCCESS AUX_PERF_DEFMDB_SUCCESS;
4119 [case(AUX_TYPE_PERF_BG_DEFGC_SUCCESS)] AUX_PERF_DEFGC_SUCCESS AUX_PERF_DEFGC_SUCCESS;
4120 [case(AUX_TYPE_PERF_BG_MDB_SUCCESS)] AUX_PERF_MDB_SUCCESS AUX_PERF_MDB_SUCCESS;
4121 [case(AUX_TYPE_PERF_BG_GC_SUCCESS)] AUX_PERF_GC_SUCCESS AUX_PERF_GC_SUCCESS;
4122 [case(AUX_TYPE_PERF_BG_FAILURE)] AUX_PERF_FAILURE AUX_PERF_FAILURE;
4123 [case(AUX_TYPE_PERF_FG_DEFMDB_SUCCESS)] AUX_PERF_DEFMDB_SUCCESS AUX_PERF_DEFMDB_SUCCESS;
4124 [case(AUX_TYPE_PERF_FG_DEFGC_SUCCESS)] AUX_PERF_DEFGC_SUCCESS AUX_PERF_DEFGC_SUCCESS;
4125 [case(AUX_TYPE_PERF_FG_MDB_SUCCESS)] AUX_PERF_MDB_SUCCESS AUX_PERF_MDB_SUCCESS;
4126 [case(AUX_TYPE_PERF_FG_GC_SUCCESS)] AUX_PERF_GC_SUCCESS AUX_PERG_GC_SUCCESS;
4127 [case(AUX_TYPE_PERF_FG_FAILURE)] AUX_PERF_FAILURE AUX_PERF_FAILURE;
4128 [case(AUX_TYPE_OSVERSIONINFO)] AUX_OSVERSIONINFO AUX_OSVERSIONINFO;
4129 [case(AUX_TYPE_EXORGINFO)] AUX_EXORGINFO AUX_EXORGINFO;
4130 [default][flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Payload;
4131 } AUX_HEADER_TYPE_UNION_2;
4133 typedef [public,nopull,noprint,flag(NDR_NOALIGN)] struct {
4134 uint16 Size;
4135 AUX_VERSION Version;
4136 uint8 Type;
4137 [switch_is(Type)] AUX_HEADER_TYPE_UNION_1 Payload_1;
4138 [switch_is(Type)] AUX_HEADER_TYPE_UNION_2 Payload_2;
4139 } AUX_HEADER;
4141 typedef [public,nopull,noprint] struct {
4142 RPC_HEADER_EXT RPC_HEADER_EXT;
4143 [subcontext(0), subcontext_size(RPC_HEADER_EXT.Size)] AUX_HEADER *AUX_HEADER;
4144 } mapi2k7_AuxInfo;
4147 MAPISTATUS EcDoConnectEx(
4148 [out] policy_handle *handle,
4149 [in,string,charset(DOS)] uint8 szUserDN[],
4150 [in] uint32 ulFlags,
4151 [in] uint32 ulConMod,
4152 [in] uint32 cbLimit,
4153 [in] uint32 ulCpid,
4154 [in] uint32 ulLcidString,
4155 [in] uint32 ulLcidSort,
4156 [in] uint32 ulIcxrLink,
4157 [in] uint16 usFCanConvertCodePages,
4158 [out] uint32 *pcmsPollsMax,
4159 [out] uint32 *pcRetry,
4160 [out] uint32 *pcmsRetryDelay,
4161 [out] uint32 *picxr,
4162 [out,unique,string,charset(DOS)]uint8 *szDNPrefix,
4163 [out,unique,string,charset(DOS)]uint8 *szDisplayName,
4164 [in] uint16 rgwClientVersion[3],
4165 [out] uint16 rgwServerVersion[3],
4166 [out] uint16 rgwBestVersion[3],
4167 [in,out] uint32 *pulTimeStamp,
4168 [in,subcontext(4),flag(NDR_NOALIGN|NDR_REMAINING)] mapi2k7_AuxInfo *rgbAuxIn,
4169 [in,out][range(0,0x1008)] uint32 *pcbAuxOut,
4170 [in][flag(NDR_REMAINING)] DATA_BLOB data
4173 /*****************/
4174 /* Function 0xb */
4175 typedef [public,bitmap32bit] bitmap {
4176 pulFlags_NoCompression = 0x00000001,
4177 pulFlags_NoXorMagic = 0x00000002,
4178 pulFlags_Chain = 0x00000004
4179 } pulFlags;
4181 typedef [public,nopull] struct {
4182 RPC_HEADER_EXT header;
4183 [subcontext(0),flag(NDR_REMAINING|NDR_NOALIGN)] mapi_request *mapi_request;
4184 } mapi2k7_request;
4186 typedef [public,nopull] struct {
4187 RPC_HEADER_EXT header;
4188 [subcontext(0),flag(NDR_NOALIGN|NDR_REMAINING)] mapi_response *mapi_response;
4189 } mapi2k7_response;
4191 MAPISTATUS EcDoRpcExt2(
4192 [in,out] policy_handle *handle,
4193 [in,out] pulFlags *pulFlags,
4194 [in,subcontext(4),flag(NDR_NOALIGN|NDR_REMAINING)] mapi2k7_request *rgbIn,
4195 [in] uint32 cbIn,
4196 [out] uint32 size,
4197 [out] uint32 offset,
4198 [out,subcontext(4),flag(NDR_NOALIGN|NDR_REMAINING)]mapi2k7_response *rgbOut,
4199 [in,out][range(0,262144)] uint32 *pcbOut,
4200 [in,subcontext(4),flag(NDR_NOALIGN|NDR_REMAINING)] mapi2k7_AuxInfo *rgbAuxIn,
4201 [in] uint32 cbAuxIn,
4202 [out,subcontext(4),flag(NDR_NOALIGN|NDR_REMAINING)]mapi2k7_AuxInfo *rgbAuxOut,
4203 [in,out][range(0,4104)] uint32 *pcbAuxOut,
4204 [out] uint32 *pullTransTime
4209 uuid("c840a7dc-42c0-1a10-b4b9-08002b2fe182"),
4210 pointer_default(unique),
4211 helpstring("Unknown")
4212 ] interface exchange_unknown
4214 void unknown_dummy();