Daily ChangeLog Update
[OpenChange-git-clone.git] / exchange.idl
blob2900502c42765fac428e09982b93332ad8c8e644
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_GetTable = 0x3e,
841 op_MAPI_GetRulesTable = 0x3f,
842 op_MAPI_ModifyTable = 0x40,
843 op_MAPI_ModifyRules = 0x41,
844 op_MAPI_GetOwningServers = 0x42,
845 op_MAPI_LongTermIdFromId = 0x43,
846 op_MAPI_IdFromLongTermId = 0x44,
847 op_MAPI_PublicFolderIsGhosted = 0x45,
848 op_MAPI_OpenEmbeddedMessage = 0x46,
849 op_MAPI_SetSpooler = 0x47,
850 op_MAPI_SpoolerLockMessage = 0x48,
851 op_MAPI_AddressTypes = 0x49,
852 op_MAPI_TransportSend = 0x4a,
853 op_MAPI_FastTransferSourceGetBuffer = 0x4e,
854 op_MAPI_FindRow = 0x4f,
855 op_MAPI_Progress = 0x50,
856 op_MAPI_GetNamesFromIDs = 0x55,
857 op_MAPI_GetIDsFromNames = 0x56,
858 op_MAPI_UpdateDeferredActionMessages = 0x57,
859 op_MAPI_EmptyFolder = 0x58,
860 op_MAPI_ExpandRow = 0x59,
861 op_MAPI_CollapseRow = 0x5a,
862 op_MAPI_LockRegionStream = 0x5b,
863 op_MAPI_UnlockRegionStream = 0x5c,
864 op_MAPI_CommitStream = 0x5d,
865 op_MAPI_GetStreamSize = 0x5e,
866 op_MAPI_QueryNamedProperties = 0x5f,
867 op_MAPI_GetPerUserLongTermIds = 0x60,
868 op_MAPI_GetPerUserGuid = 0x61,
869 op_MAPI_ReadPerUserInformation = 0x63,
870 op_MAPI_SetReadFlags = 0x66,
871 op_MAPI_CopyProperties = 0x67,
872 op_MAPI_GetReceiveFolderTable = 0x68,
873 op_MAPI_GetCollapseState = 0x6b,
874 op_MAPI_SetCollapseState = 0x6c,
875 op_MAPI_GetTransportFolder = 0x6d,
876 op_MAPI_Pending = 0x6e,
877 op_MAPI_RegisterOptions = 0x6f,
878 op_MAPI_SyncConfigure = 0x70,
879 op_MAPI_SyncImportMessageChange = 0x72,
880 op_MAPI_SyncImportHierarchyChange = 0x73,
881 op_MAPI_SyncImportDeletes = 0x74,
882 op_MAPI_SyncUploadStateStreamBegin = 0x75,
883 op_MAPI_SyncUploadStateStreamContinue = 0x76,
884 op_MAPI_SyncUploadStateStreamEnd = 0x77,
885 op_MAPI_SyncImportMessageMove = 0x78,
886 op_MAPI_SetPropertiesNoReplicate = 0x79,
887 op_MAPI_DeletePropertiesNoReplicate = 0x7a,
888 op_MAPI_GetStoreState = 0x7b,
889 op_MAPI_SyncOpenCollector = 0x7e,
890 op_MAPI_GetLocalReplicaIds = 0x7f,
891 op_MAPI_SyncImportReadStateChanges = 0x80,
892 op_MAPI_ResetTable = 0x81,
893 op_MAPI_SyncGetTransferState = 0x82,
894 op_MAPI_OpenPublicFolderByName = 0x87,
895 op_MAPI_SetSyncNotificationGuid = 0x88,
896 op_MAPI_FreeBookmark = 0x89,
897 op_MAPI_HardDeleteMessages = 0x91,
898 op_MAPI_Logon = 0xfe,
899 /****** custom MAPI opnum for mapiproxy ******/
900 op_MAPI_proxypack = 0xa5
901 } MAPI_OPNUM;
904 typedef [public,noprint,flag(NDR_NOALIGN)] struct {
905 uint16 cb;
906 [flag(NDR_BUFFERS)]uint8 lpb[cb];
907 } SBinary_short;
909 typedef [public] struct {
910 uint32 cValues;
911 uint32 lpl[cValues];
912 } mapi_MV_LONG_STRUCT;
914 typedef [public] struct {
915 astring lppszA;
916 } mapi_LPSTR;
918 typedef [public] struct {
919 uint32 cValues;
920 mapi_LPSTR strings[cValues];
921 } mapi_SLPSTRArray;
923 typedef struct {
924 [flag(STR_NULLTERM)] string lppszW;
925 } mapi_LPWSTR;
927 typedef struct {
928 uint32 cValues;
929 mapi_LPWSTR strings[cValues];
930 } mapi_SPLSTRArrayW;
932 typedef [public] struct {
933 uint32 cValues;
934 SBinary_short bin[cValues];
935 } mapi_SBinaryArray;
937 typedef struct {
938 uint32 cValues;
939 GUID lpguid[cValues];
940 } mapi_SGuidArray;
942 /******* part of the no-pointer deep recursion hack *******/
943 typedef [nopull,nopush,noprint,flag(NDR_NOALIGN)] struct {
944 uint8 wrap[0x8000];
945 } mapi_SRestriction_wrap;
947 typedef [nopush,nopull,noprint,flag(NDR_NOALIGN)] struct {
948 uint8 wrap[0x8000];
949 } mapi_SPropValue_wrap;
951 typedef [nopush,nopull,noprint,flag(NDR_NOALIGN)] struct {
952 uint8 wrap[0x8000];
953 } mapi_SPropValue_array_wrap;
954 /**********************************************************/
956 typedef [enum8bit] enum {
957 ActionType_OP_MOVE = 0x1,
958 ActionType_OP_COPY = 0x2,
959 ActionType_OP_REPLY = 0x3,
960 ActionType_OP_OOF_REPLY = 0x4,
961 ActionType_OP_DEFER_ACTION = 0x5,
962 ActionType_OP_BOUNCE = 0x6,
963 ActionType_OP_FORWARD = 0x7,
964 ActionType_OP_DELEGATE = 0x8,
965 ActionType_OP_TAG = 0x9,
966 ActionType_OP_DELETE = 0xA,
967 ActionType_OP_MARK_AS_READ = 0xB
968 } ActionType;
970 typedef [flag(NDR_NOALIGN)] struct {
971 boolean8 FolderInThisStore;
972 SBinary_short StoreEID;
973 SBinary_short FolderEID;
974 } MoveCopy_Action;
976 typedef [flag(NDR_NOALIGN)] struct {
977 hyper ReplyTemplateFID;
978 hyper ReplyTemplateMID;
979 GUID ReplyTemplateGUID;
980 } ReplyOOF_Action;
982 typedef [flag(NDR_NOALIGN)] struct {
983 uint8 Reserved;
984 mapi_SPropValue_array_wrap PropertyValue;
985 } RecipientBlock;
987 typedef [flag(NDR_NOALIGN)] enum {
988 BOUNCE_MESSAGE_TOO_LARGE = 0x0000000d,
989 BOUNCE_MESSAGE_NOT_DISPLAYED = 0x0000001f,
990 BOUNCE_MESSAGE_DENIED = 0x00000026
991 } BounceCode;
993 typedef [flag(NDR_NOALIGN)] struct {
994 uint16 RecipientCount;
995 RecipientBlock RecipientBlock[RecipientCount];
996 } ForwardDelegate_Action;
998 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
999 [case(ActionType_OP_MOVE)] MoveCopy_Action MoveAction;
1000 [case(ActionType_OP_COPY)] MoveCopy_Action CopyAction;
1001 [case(ActionType_OP_REPLY)] ReplyOOF_Action ReplyAction;
1002 [case(ActionType_OP_OOF_REPLY)] ReplyOOF_Action ReplyOOFAction;
1003 [case(ActionType_OP_DEFER_ACTION)][flag(NDR_REMAINING)] DATA_BLOB DeferAction;
1004 [case(ActionType_OP_BOUNCE)] BounceCode BounceCode;
1005 [case(ActionType_OP_TAG)] mapi_SPropValue_wrap PropValue;
1006 [case(ActionType_OP_FORWARD)] ForwardDelegate_Action ForwardAction;
1007 [case(ActionType_OP_DELEGATE)] ForwardDelegate_Action DelegateAction;
1008 [case(ActionType_OP_DELETE)];
1009 [case(ActionType_OP_MARK_AS_READ)];
1010 } ActionData;
1012 typedef [flag(NDR_NOALIGN)] struct {
1013 ActionType ActionType;
1014 uint32 ActionFlavor;
1015 uint32 ActionFlags;
1016 [switch_is(ActionType)] ActionData ActionDataBuffer;
1017 } ActionBlockData;
1019 typedef [flag(NDR_NOALIGN)] struct {
1020 uint16 ActionLength;
1021 [subcontext(0),subcontext_size(ActionLength),flag(NDR_REMAINING)] ActionBlockData ActionBlockData;
1022 } ActionBlock;
1024 typedef [flag(NDR_NOALIGN)] struct {
1025 uint16 count;
1026 ActionBlock ActionBlock[count];
1027 } RuleAction;
1029 typedef [public,nodiscriminant,flag(NDR_NOALIGN)] union {
1030 [case(PT_I2)] uint16 i;
1031 [case(PT_LONG)] uint32 l;
1032 [case(PT_DOUBLE)] dlong dbl;
1033 [case(PT_ERROR)] uint32 err;
1034 [case(PT_BOOLEAN)] uint8 b;
1035 [case(PT_I8)] dlong d;
1036 [case(PT_STRING8)] astring lpszA;
1037 [case(PT_UNICODE)][flag(STR_NULLTERM)] string lpszW;
1038 [case(PT_SYSTIME)] FILETIME ft;
1039 [case(PT_CLSID)] GUID lpguid;
1040 [case(PT_SRESTRICT)] mapi_SRestriction_wrap Restrictions;
1041 [case(PT_ACTIONS)] RuleAction RuleAction;
1042 [case(PT_BINARY)] SBinary_short bin;
1043 [case(PT_SVREID)] SBinary_short bin;
1044 [case(PT_MV_LONG)] mapi_MV_LONG_STRUCT MVl;
1045 [case(PT_MV_STRING8)] mapi_SLPSTRArray MVszA;
1046 [case(PT_MV_UNICODE)] mapi_SPLSTRArrayW MVszW;
1047 [case(PT_MV_CLSID)] mapi_SGuidArray MVguid;
1048 [case(PT_MV_BINARY)] mapi_SBinaryArray MVbin;
1049 } mapi_SPropValue_CTR;
1051 typedef [public,flag(NDR_NOALIGN)] struct {
1052 MAPITAGS ulPropTag;
1053 [switch_is(ulPropTag & 0xFFFF)] mapi_SPropValue_CTR value;
1054 } mapi_SPropValue;
1056 typedef [public,flag(NDR_NOALIGN)] struct {
1057 uint16 cValues;
1058 [flag(NDR_REMAINING)]mapi_SPropValue lpProps[cValues];
1059 } mapi_SPropValue_array;
1061 typedef [flag(NDR_NOALIGN)] struct {
1062 uint16 cValues;
1063 MAPITAGS aulPropTag[cValues];
1064 } mapi_SPropTagArray;
1066 typedef [enum8bit, flag(NDR_PAHEX)] enum {
1067 ROW_ADD = 0x1,
1068 ROW_MODIFY = 0x2,
1069 ROW_REMOVE = 0x4
1070 } ulRowFlags;
1072 typedef [flag(NDR_NOALIGN)] struct {
1073 ulRowFlags ulRowFlags;
1074 mapi_SPropValue_array lpProps;
1075 } mapi_SRow;
1077 typedef [flag(NDR_NOALIGN)] struct {
1078 uint8 padding;
1079 uint16 cEntries;
1080 mapi_SRow aEntries[cEntries];
1081 } mapi_SRowList;
1083 /**************************/
1084 /* EcDoRpc Function 0x1 */
1085 typedef [nopush,nopull,flag(NDR_NOALIGN)] struct {
1086 } Release_req;
1088 typedef [nopush,nopull,flag(NDR_NOALIGN)] struct {
1089 } Release_repl;
1091 /**************************/
1092 /* EcDoRpc Function 0x2 */
1093 typedef [enum8bit] enum {
1094 OpenModeFlags_Folder = 0x0,
1095 OpenModeFlags_SoftDeleted = 0x4
1096 } OpenFolder_OpenModeFlags;
1098 typedef [flag(NDR_NOALIGN)] struct {
1099 uint8 handle_idx;
1100 hyper folder_id;
1101 OpenFolder_OpenModeFlags OpenModeFlags;
1102 } OpenFolder_req;
1104 typedef [flag(NDR_NOALIGN)] struct {
1105 uint16 ServerCount;
1106 uint16 CheapServerCount;
1107 astring Servers[ServerCount];
1108 } OpenFolder_Replicas;
1110 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1111 [case(0x0)];
1112 [case(0x1)] OpenFolder_Replicas Replicas;
1113 } IsGhosted;
1115 typedef [flag(NDR_NOALIGN)] struct {
1116 boolean8 HasRules;
1117 boolean8 IsGhosted;
1118 [switch_is(IsGhosted)] IsGhosted Ghost;
1119 } OpenFolder_repl;
1121 /**************************/
1122 /* EcDoRpc Function 0x3 */
1123 typedef [enum8bit] enum {
1124 StringType_NONE = 0x0,
1125 StringType_EMPTY = 0x1,
1126 StringType_STRING8 = 0x2,
1127 StringType_UNICODE_REDUCED = 0x3,
1128 StringType_UNICODE = 0x4
1129 } StringType;
1131 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1132 [case(0x0)];
1133 [case(0x1)];
1134 [case(0x2)] astring lpszA;
1135 [case(0x3)] astring lpszW_reduced;
1136 [case(0x4)] [flag(STR_NULLTERM)] string lpszW;
1137 } String;
1139 typedef [flag(NDR_NOALIGN)] struct {
1140 StringType StringType;
1141 [switch_is(StringType)] String String;
1142 } TypedString;
1144 typedef [bitmap8bit] bitmap {
1145 /* 0x0 means Read Only */
1146 ReadWrite = 0x1,
1147 Create = 0x3
1148 } OpenMessage_OpenModeFlags;
1150 typedef [flag(NDR_NOALIGN)] struct {
1151 uint8 handle_idx;
1152 uint16 CodePageId;
1153 hyper FolderId;
1154 OpenMessage_OpenModeFlags OpenModeFlags;
1155 hyper MessageId;
1156 } OpenMessage_req;
1158 typedef [v1_enum, flag(NDR_PAHEX)] enum {
1159 CP_USASCII = 0x04E4,
1160 CP_UNICODE = 0x04B0,
1161 CP_JAUTODETECT = 0xC6F4,
1162 CP_KAUTODETECT = 0xC705,
1163 CP_ISO2022JPESC = 0xC42D,
1164 CP_ISO2022JPSIO = 0xC42E
1165 } CODEPAGEID;
1167 typedef [enum8bit, flag(NDR_PAHEX)] enum {
1168 MAPI_ORIG = 0x0,
1169 MAPI_TO = 0x1,
1170 MAPI_CC = 0x2,
1171 MAPI_BCC = 0x3
1172 } ulRecipClass;
1174 typedef [enum8bit, flag(NDR_PAHEX)] enum {
1175 SINGLE_RECIPIENT = 0x0,
1176 DISTRIBUTION_LIST = 0x1
1177 } addr_type;
1179 typedef [flag(NDR_NOALIGN)]struct {
1180 uint8 organization_length;
1181 addr_type addr_type;
1182 astring username;
1183 } RecipExchange;
1185 typedef [flag(NDR_NOALIGN)] struct {
1186 } RecipSMTP;
1188 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1189 [case(0x0)] RecipExchange EXCHANGE;
1190 [case(0xA)] RecipSMTP SMTP;
1191 [default];
1192 } recipient_type;
1194 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1195 [case(0x0)];
1196 [case(0x400)] astring lpszA;
1197 [case(0x600)][flag(STR_NULLTERM)] string lpszW;
1198 [default];
1199 } recipient_SimpleDisplayName;
1201 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1202 [case(0x0)];
1203 [case(0x20)] astring lpszA;
1204 [case(0x220)][flag(STR_NULLTERM)] string lpszW;
1205 [default];
1206 } recipient_TransmittableDisplayName;
1208 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1209 [case(0x0)];
1210 [case(0x10)] astring lpszA;
1211 [case(0x210)][flag(STR_NULLTERM)] string lpszW;
1212 [default];
1213 } recipient_DisplayName;
1215 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1216 [case(0x0)];
1217 [case(0x8)] astring lpszA;
1218 [case(0x208)][flag(STR_NULLTERM)] string lpszW;
1219 [default];
1220 } recipient_EmailAddress;
1222 typedef [flag(NDR_NOALIGN)] struct {
1223 uint16 RecipientFlags;
1224 [switch_is(RecipientFlags & 0xA)] recipient_type type;
1225 [switch_is(RecipientFlags & 0x208)] recipient_EmailAddress EmailAddress;
1226 [switch_is(RecipientFlags & 0x210)] recipient_DisplayName DisplayName;
1227 [switch_is(RecipientFlags & 0x600)] recipient_SimpleDisplayName SimpleDisplayName;
1228 [switch_is(RecipientFlags & 0x220)] recipient_TransmittableDisplayName TransmittableDisplayName;
1229 uint16 prop_count;
1230 uint8 layout;
1231 [flag(NDR_REMAINING)] DATA_BLOB prop_values;
1232 } RecipientRow;
1234 typedef [flag(NDR_NOALIGN)] struct {
1235 ulRecipClass RecipClass;
1236 CODEPAGEID codepage;
1237 [subcontext(2)] RecipientRow RecipientRow;
1238 } OpenMessage_recipients;
1240 typedef [flag(NDR_NOALIGN)] struct {
1241 boolean8 HasNamedProperties;
1242 TypedString SubjectPrefix;
1243 TypedString NormalizedSubject;
1244 uint16 RecipientCount;
1245 mapi_SPropTagArray RecipientColumns;
1246 uint8 RowCount;
1247 OpenMessage_recipients recipients[RowCount];
1248 } OpenMessage_repl;
1250 /**************************/
1251 /* EcDoRpc Function 0x4 */
1252 typedef [bitmap8bit] bitmap {
1253 TableFlags_Depth = 0x4,
1254 TableFlags_DeferredErrors = 0x8,
1255 TableFlags_NoNotifications = 0x10,
1256 TableFlags_SoftDeletes = 0x20,
1257 TableFlags_UseUnicode = 0x40,
1258 TableFlags_SuppressNotifications = 0x80
1259 } TableFlags;
1261 typedef [flag(NDR_NOALIGN)] struct {
1262 uint8 handle_idx;
1263 TableFlags TableFlags;
1264 } GetHierarchyTable_req;
1266 typedef [flag(NDR_NOALIGN)] struct {
1267 uint32 RowCount;
1268 } GetHierarchyTable_repl;
1270 /**************************/
1271 /* EcDoRpc Function 0x5 */
1272 typedef [flag(NDR_NOALIGN)] struct {
1273 uint8 handle_idx;
1274 TableFlags TableFlags;
1275 } GetContentsTable_req;
1277 typedef [flag(NDR_NOALIGN)] struct {
1278 uint32 RowCount;
1279 } GetContentsTable_repl;
1281 /**************************/
1282 /* EcDoRpc Function 0x6 */
1283 typedef [flag(NDR_NOALIGN)] struct {
1284 uint8 handle_idx;
1285 uint16 CodePageId;
1286 hyper FolderId;
1287 boolean8 AssociatedFlag;
1288 } CreateMessage_req;
1290 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1291 [case(0x0)];
1292 [case(0x1)] hyper MessageId;
1293 } CreateMessage_MessageId;
1295 typedef [flag(NDR_NOALIGN)] struct {
1296 boolean8 HasMessageId;
1297 [switch_is(HasMessageId)] CreateMessage_MessageId MessageId;
1298 } CreateMessage_repl;
1300 /*************************/
1301 /* EcDoRpc Function 0x7 */
1302 typedef [flag(NDR_NOALIGN)] struct {
1303 uint16 PropertySizeLimit;
1304 uint16 WantUnicode;
1305 uint16 prop_count;
1306 MAPITAGS properties[prop_count];
1307 } GetProps_req;
1309 typedef [flag(NDR_NOALIGN)] struct {
1310 uint8 layout;
1311 [flag(NDR_REMAINING)] DATA_BLOB prop_data;
1312 } GetProps_repl;
1314 /*************************/
1315 /* EcDoRpc Function 0x8 */
1316 typedef [flag(NDR_NOALIGN)] struct {
1317 uint16 PropertySizeLimit;
1318 uint16 WantUnicode;
1319 } GetPropsAll_req;
1321 typedef [flag(NDR_NOALIGN)] struct {
1322 mapi_SPropValue_array properties;
1323 } GetPropsAll_repl;
1325 /*************************/
1326 /* EcDoRpc Function 0x9 */
1327 typedef [flag(NDR_NOALIGN)] struct {
1328 } GetPropList_req;
1330 typedef [flag(NDR_NOALIGN)] struct {
1331 uint16 count;
1332 MAPITAGS tags[count];
1333 } GetPropList_repl;
1335 /*************************/
1336 /* EcDoRpc Function 0xa */
1337 typedef [flag(NDR_NOALIGN)] struct {
1338 uint32 index; /* index into array of property tags */
1339 MAPITAGS property_tag; /* property for which there was an error */
1340 MAPISTATUS error_code; /* the error that occurred for this property */
1341 } PropertyProblem;
1343 typedef [flag(NDR_NOALIGN)] struct {
1344 [subcontext(2)] mapi_SPropValue_array values;
1345 } SetProps_req;
1347 typedef [flag(NDR_NOALIGN)] struct {
1348 uint16 PropertyProblemCount;
1349 PropertyProblem PropertyProblem[PropertyProblemCount];
1350 } SetProps_repl;
1352 /*************************/
1353 /* EcDoRpc Function 0xb */
1354 typedef [flag(NDR_NOALIGN)] struct {
1355 uint16 count;
1356 MAPITAGS tags[count];
1357 } DeleteProps_req;
1359 typedef [flag(NDR_NOALIGN)] struct {
1360 uint16 PropertyProblemCount;
1361 PropertyProblem PropertyProblem[PropertyProblemCount];
1362 } DeleteProps_repl;
1364 /*************************/
1365 /* EcDoRpc Function 0xc */
1366 typedef [enum8bit] enum {
1367 KeepOpenReadOnly = 0x9,
1368 KeepOpenReadWrite = 0xA,
1369 ForceSave = 0xC
1370 } SaveFlags;
1372 typedef [flag(NDR_NOALIGN)] struct {
1373 uint8 handle_idx;
1374 uint8 SaveFlags;
1375 } SaveChangesMessage_req;
1377 typedef [flag(NDR_NOALIGN)] struct {
1378 uint8 handle_idx;
1379 hyper MessageId;
1380 } SaveChangesMessage_repl;
1382 /*************************/
1383 /* EcDoRpc Function 0xd */
1384 typedef [flag(NDR_NOALIGN)] struct {
1385 uint32 ulReserved;
1386 } RemoveAllRecipients_req;
1388 typedef [flag(NDR_NOALIGN)] struct {
1390 } RemoveAllRecipients_repl;
1392 /*************************/
1393 /* EcDoRpc Function 0xe */
1396 * MODRECIP_NULL and INVALID are not part of the msdn flags
1397 * but are added for printing support
1399 typedef [enum8bit,flag(NDR_PAHEX)] enum {
1400 MODRECIP_NULL = 0x0,
1401 MODRECIP_INVALID = 0x1,
1402 MODRECIP_ADD = 0x2,
1403 MODRECIP_MODIFY = 0x4,
1404 MODRECIP_REMOVE = 0x8
1405 } modrecip;
1407 typedef [flag(NDR_NOALIGN)]struct {
1408 uint32 idx;
1409 ulRecipClass RecipClass;
1410 [subcontext(2),flag(NDR_REMAINING)] RecipientRow RecipientRow;
1411 } ModifyRecipientRow;
1413 typedef [flag(NDR_NOALIGN)] struct {
1414 uint16 prop_count;
1415 MAPITAGS properties[prop_count];
1416 uint16 cValues;
1417 ModifyRecipientRow RecipientRow[cValues];
1418 } ModifyRecipients_req;
1420 typedef [flag(NDR_NOALIGN)] struct {
1422 } ModifyRecipients_repl;
1424 /*************************/
1425 /* EcDoRpc Function 0xf */
1426 typedef [flag(NDR_NOALIGN)] struct {
1427 uint32 RowId;
1428 uint16 ulReserved;
1429 } ReadRecipients_req;
1431 typedef [flag(NDR_NOALIGN)] struct {
1432 uint32 RowId;
1433 ulRecipClass RecipientType;
1434 uint16 CodePageId;
1435 uint16 ulReserved;
1436 [subcontext(2)] RecipientRow RecipientRow;
1437 } ReadRecipientRow;
1439 typedef [flag(NDR_NOALIGN)] struct {
1440 uint8 RowCount;
1441 ReadRecipientRow RecipientRows[RowCount];
1442 } ReadRecipients_repl;
1444 /*************************/
1445 /* EcDoRpc Function 0x10 */
1446 typedef [flag(NDR_NOALIGN)] struct {
1447 ulRecipClass RecipientType;
1448 uint16 CodePageId;
1449 uint16 Reserved;
1450 uint16 RecipientRowSize;
1451 [subcontext(0),subcontext_size(RecipientRowSize),flag(NDR_REMAINING)]RecipientRow RecipientRow;
1452 } OpenRecipientRow;
1454 typedef [flag(NDR_NOALIGN)] struct {
1455 uint16 Reserved;
1456 } ReloadCachedInformation_req;
1458 typedef [flag(NDR_NOALIGN)] struct {
1459 boolean8 HasNamedProperties;
1460 TypedString SubjectPrefix;
1461 TypedString NormalizedSubject;
1462 uint16 RecipientCount;
1463 uint16 ColumnCount;
1464 MAPITAGS RecipientColumns[ColumnCount];
1465 uint8 RowCount;
1466 OpenRecipientRow RecipientRows[RowCount];
1467 } ReloadCachedInformation_repl;
1469 /*************************/
1470 /* EcDoRpc Function 0x11 */
1472 typedef [bitmap8bit] bitmap {
1473 SUPPRESS_RECEIPT = 0x01,
1474 CLEAR_READ_FLAG = 0x04,
1475 MAPI_DEFERRED_ERRORS = 0x08,
1476 GENERATE_RECEIPT_ONLY = 0x10,
1477 CLEAR_RN_PENDING = 0x20,
1478 CLEAR_NRN_PENDING = 0x40
1479 } MSGFLAG_READ;
1481 /* TODO: there is a variation that can provide "client data" here */
1482 typedef [flag(NDR_NOALIGN)] struct {
1483 uint8 handle_idx;
1484 MSGFLAG_READ flags;
1485 [flag(NDR_REMAINING)] DATA_BLOB clientdata;
1486 } SetMessageReadFlag_req;
1488 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1489 [case(0x0)];
1490 [case(0x1)] uint8 LogonId;
1491 } SetMessageReadFlag_LogonId;
1493 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1494 [case(0x0)];
1495 [case(0x1)] uint8 ClientData[24];
1496 } SetMessageReadFlag_ClientData;
1498 typedef [flag(NDR_NOALIGN)] struct {
1499 boolean8 ReadStatusChanged;
1500 [switch_is(ReadStatusChanged)] SetMessageReadFlag_LogonId LogonId;
1501 [switch_is(ReadStatusChanged)] SetMessageReadFlag_ClientData ClientData;
1502 } SetMessageReadFlag_repl;
1504 /*************************/
1505 /* EcDoRpc Function 0x12 */
1506 typedef [enum8bit] enum {
1507 SetColumns_TBL_SYNC = 0x0,
1508 SetColumns_TBL_ASYNC = 0x1
1509 } SetColumnsFlags;
1511 typedef [enum8bit] enum {
1512 TBLSTAT_COMPLETE = 0x0,
1513 TBLSTAT_SORTING = 0x9,
1514 TBLSTAT_SORT_ERROR = 0xA,
1515 TBLSTAT_SETTING_COLS = 0xB,
1516 TBLSTAT_SETCOL_ERROR = 0xD,
1517 TBLSTAT_RESTRICTING = 0xE,
1518 TBLSTAT_RESTRICT_ERROR = 0xF
1519 } TableStatus;
1521 typedef [flag(NDR_NOALIGN)] struct {
1522 SetColumnsFlags SetColumnsFlags;
1523 uint16 prop_count;
1524 MAPITAGS properties[prop_count];
1525 } SetColumns_req;
1527 typedef [flag(NDR_NOALIGN)] struct {
1528 TableStatus TableStatus;
1529 } SetColumns_repl;
1531 /**************************/
1532 /* EcDoRpc Function 0x13 */
1533 typedef [enum8bit, flag(NDR_PAHEX)] enum {
1534 TBL_ASYNC = 0x1,
1535 TBL_BATCH = 0x2
1536 } TBL_FLAGS;
1538 typedef [enum8bit, flag(NDR_PAHEX)] enum {
1539 TABLE_SORT_ASCEND = 0x0,
1540 TABLE_SORT_COMBINE = 0x1,
1541 TABLE_SORT_DESCEND = 0x2
1542 } TABLE_SORT;
1544 typedef [public, flag(NDR_NOALIGN)] struct _SSortOrder{
1545 MAPITAGS ulPropTag;
1546 TABLE_SORT ulOrder;
1547 } SSortOrder;
1549 typedef [public, flag(NDR_NOALIGN)] struct _SSortOrderSet {
1550 uint16 cSorts;
1551 uint16 cCategories;
1552 uint16 cExpanded;
1553 SSortOrder aSort[cSorts];
1554 } SSortOrderSet;
1556 typedef [flag(NDR_NOALIGN)] struct {
1557 uint8 SortTableFlags;
1558 SSortOrderSet lpSortCriteria;
1559 } SortTable_req;
1561 typedef [flag(NDR_NOALIGN)] struct {
1562 TableStatus TableStatus;
1563 } SortTable_repl;
1565 /**************************/
1566 /* EcDoRpc Function 0x14 */
1567 typedef [flag(NDR_NOALIGN)] struct {
1568 uint16 cRes;
1569 mapi_SRestriction_and res[cRes];
1570 } mapi_SAndRestriction;
1572 typedef [flag(NDR_NOALIGN)] struct {
1573 uint16 cRes;
1574 mapi_SRestriction_or res[cRes];
1575 } mapi_SOrRestriction;
1577 typedef [flag(NDR_NOALIGN)] struct {
1578 mapi_SRestriction_wrap res;
1579 } mapi_SNotRestriction;
1581 typedef [noprint, bitmap32bit] bitmap {
1582 FL_FULLSTRING = 0x00000,
1583 FL_SUBSTRING = 0x00001,
1584 FL_PREFIX = 0x00002,
1585 FL_IGNORECASE = 0x10000,
1586 FL_IGNORENONSPACE = 0x20000,
1587 FL_LOOSE = 0x40000
1588 } fuzzyLevel;
1590 typedef [flag(NDR_NOALIGN)] struct {
1591 fuzzyLevel fuzzy;
1592 MAPITAGS ulPropTag;
1593 mapi_SPropValue lpProp;
1594 } mapi_SContentRestriction;
1596 typedef [enum8bit, flag(NDR_PAHEX)] enum {
1597 BMR_EQZ = 0x0,
1598 BMR_NEZ = 0x1
1599 } relMBR;
1601 typedef [flag(NDR_NOALIGN)] struct {
1602 relMBR relMBR;
1603 MAPITAGS ulPropTag;
1604 uint32 ulMask;
1605 } mapi_SBitmaskRestriction;
1607 typedef [enum8bit, flag(NDR_PAHEX)] enum {
1608 RELOP_LT = 0x0, /* < */
1609 RELOP_LE = 0x1, /* <= */
1610 RELOP_GT = 0x2, /* > */
1611 RELOP_GE = 0x3, /* >= */
1612 RELOP_EQ = 0x4, /* == */
1613 RELOP_NE = 0x5, /* != */
1614 RELOP_RE = 0x6 /* LIKE (Regular expression) */
1615 } CompareRelop;
1617 typedef [flag(NDR_NOALIGN)] struct {
1618 CompareRelop relop;
1619 MAPITAGS ulPropTag;
1620 uint32 size;
1621 } mapi_SSizeRestriction;
1623 typedef [flag(NDR_NOALIGN)] struct {
1624 uint8 relop;
1625 MAPITAGS ulPropTag;
1626 mapi_SPropValue lpProp;
1627 } mapi_SPropertyRestriction;
1629 typedef [flag(NDR_NOALIGN)] struct {
1630 CompareRelop relop;
1631 MAPITAGS ulPropTag1;
1632 MAPITAGS ulPropTag2;
1633 } mapi_SCompareProps;
1635 typedef [flag(NDR_NOALIGN)] struct {
1636 MAPITAGS ulPropTag;
1637 } mapi_SExistRestriction;
1639 typedef [flag(NDR_NOALIGN)] struct {
1640 MAPITAGS ulSubObject;
1641 mapi_SRestriction_sub res[ulSubObject - ulSubObject + 1]; /* nasty hack - generates fake pointer */
1642 } mapi_SSubRestriction;
1644 typedef [nopush,nopull,noprint,nodiscriminant] union {
1645 [case(0x0)];
1646 [case(0x1)] mapi_SRestriction_comment *res;
1647 } RestrictionVariable;
1649 typedef [flag(NDR_NOALIGN)] struct {
1650 uint8 TaggedValuesCount;
1651 mapi_SPropValue TaggedValues[TaggedValuesCount];
1652 boolean8 RestrictionPresent;
1653 [switch_is(RestrictionPresent)] RestrictionVariable Restriction;
1654 } mapi_SCommentRestriction;
1656 typedef [public,nodiscriminant] union {
1657 [case(RES_AND)] mapi_SAndRestriction resAnd;
1658 [case(RES_OR)] mapi_SOrRestriction resOr;
1659 [case(RES_NOT)] mapi_SNotRestriction resNot;
1660 [case(RES_CONTENT)] mapi_SContentRestriction resContent;
1661 [case(RES_PROPERTY)] mapi_SPropertyRestriction resProperty;
1662 [case(RES_COMPAREPROPS)] mapi_SCompareProps resCompareProps;
1663 [case(RES_BITMASK)] mapi_SBitmaskRestriction resBitmask;
1664 [case(RES_SIZE)] mapi_SSizeRestriction resSize;
1665 [case(RES_EXIST)] mapi_SExistRestriction resExist;
1666 [case(RES_SUBRESTRICTION)] mapi_SSubRestriction resSub;
1667 [case(RES_COMMENT)] mapi_SCommentRestriction resComment;
1668 [default];
1669 } mapi_SRestriction_CTR;
1671 typedef [public,flag(NDR_NOALIGN)] struct {
1672 uint8 rt;
1673 [switch_is(rt)] mapi_SRestriction_CTR res;
1674 } mapi_SRestriction;
1676 typedef [public,flag(NDR_NOALIGN)] struct _mapi_SRestriction {
1677 uint8 rt;
1678 [switch_is(rt)] mapi_SRestriction_CTR res;
1679 } mapi_SRestriction_and;
1681 typedef [public,flag(NDR_NOALIGN)] struct _mapi_SRestriction {
1682 uint8 rt;
1683 [switch_is(rt)] mapi_SRestriction_CTR res;
1684 } mapi_SRestriction_or;
1686 typedef [public,flag(NDR_NOALIGN)] struct _mapi_SRestriction {
1687 uint8 rt;
1688 [switch_is(rt)] mapi_SRestriction_CTR res;
1689 } mapi_SRestriction_sub;
1691 typedef [public,flag(NDR_NOALIGN)] struct _mapi_SRestriction {
1692 uint8 rt;
1693 [switch_is(rt)] mapi_SRestriction_CTR res;
1694 } mapi_SRestriction_comment;
1696 typedef [flag(NDR_NOALIGN)] struct {
1697 uint8 handle_idx;
1698 [subcontext(2)] mapi_SRestriction restrictions;
1699 } Restrict_req;
1701 typedef [flag(NDR_NOALIGN)] struct {
1702 TableStatus TableStatus;
1703 } Restrict_repl;
1705 /**************************/
1706 /* EcDoRpc Function 0x15 */
1707 typedef [enum8bit] enum {
1708 TBL_ADVANCE = 0x0,
1709 TBL_NOADVANCE = 0x1,
1710 TBL_ENABLEPACKEDBUFFERS = 0x2
1711 } QueryRowsFlags;
1713 typedef [flag(NDR_NOALIGN)] struct {
1714 QueryRowsFlags QueryRowsFlags;
1715 uint8 ForwardRead;
1716 uint16 RowCount;
1717 } QueryRows_req;
1719 typedef [nopush,nopull,flag(NDR_NOALIGN)] struct {
1720 uint8 Origin;
1721 uint16 RowCount;
1722 [flag(NDR_REMAINING)]DATA_BLOB RowData;
1723 } QueryRows_repl;
1725 /**************************/
1726 /* EcDoRpc Function 0x16 */
1727 typedef [flag(NDR_NOALIGN)] struct {
1728 } GetStatus_req;
1730 typedef [flag(NDR_NOALIGN)] struct {
1731 TableStatus TableStatus;
1732 } GetStatus_repl;
1734 /**************************/
1735 /* EcDoRpc Function 0x17 */
1736 typedef [flag(NDR_NOALIGN)] struct {
1737 } QueryPosition_req;
1739 typedef [flag(NDR_NOALIGN)] struct {
1740 uint32 Numerator;
1741 uint32 Denominator;
1742 } QueryPosition_repl;
1744 /**************************/
1745 /* EcDoRpc Function 0x18 */
1746 typedef [enum8bit] enum {
1747 BOOKMARK_BEGINNING = 0x0,
1748 BOOKMARK_CURRENT = 0x1,
1749 BOOKMARK_END = 0x2,
1750 BOOKMARK_USER = 0x3
1751 } BOOKMARK;
1753 typedef [flag(NDR_NOALIGN)] struct {
1754 BOOKMARK origin;
1755 int32 offset;
1756 boolean8 WantRowMovedCount;
1757 } SeekRow_req;
1759 typedef [flag(NDR_NOALIGN)] struct {
1760 boolean8 HasSoughtLess;
1761 uint32 RowsSought;
1762 } SeekRow_repl;
1764 /**************************/
1765 /* EcDoRpc Function 0x19 */
1766 typedef [flag(NDR_NOALIGN)] struct {
1767 SBinary_short Bookmark;
1768 uint32 RowCount;
1769 boolean8 WantRowMovedCount;
1770 } SeekRowBookmark_req;
1772 typedef [flag(NDR_NOALIGN)] struct {
1773 boolean8 RowNoLongerVisible;
1774 boolean8 HasSoughtLess;
1775 uint32 RowsSought;
1776 } SeekRowBookmark_repl;
1778 /**************************/
1779 /* EcDoRpc Function 0x1a */
1780 typedef [flag(NDR_NOALIGN)] struct {
1781 uint32 ulNumerator;
1782 uint32 ulDenominator;
1783 } SeekRowApprox_req;
1785 typedef [flag(NDR_NOALIGN)] struct {
1786 } SeekRowApprox_repl;
1788 /**************************/
1789 /* EcDoRpc Function 0x1b */
1790 typedef [flag(NDR_NOALIGN)] struct {
1791 } CreateBookmark_req;
1793 typedef [flag(NDR_NOALIGN)] struct {
1794 SBinary_short bookmark;
1795 } CreateBookmark_repl;
1797 /**************************/
1798 /* EcDoRpc Function 0x1c */
1799 typedef [enum8bit] enum {
1800 FOLDER_GENERIC = 0x1,
1801 FOLDER_SEARCH = 0x2
1802 } FOLDER_TYPE;
1804 typedef [enum8bit] enum {
1805 MAPI_FOLDER_ANSI = 0x0,
1806 MAPI_FOLDER_UNICODE = 0x1
1807 } FOLDER_STRING;
1809 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1810 [case(MAPI_FOLDER_ANSI)] astring lpszA;
1811 [case(MAPI_FOLDER_UNICODE)][flag(STR_NULLTERM)] string lpszW;
1812 } LPTSTR;
1814 typedef [enum16bit] enum {
1815 NONE = 0x0000,
1816 OPEN_IF_EXISTS = 0x0001
1817 } FOLDER_FLAGS;
1819 typedef [flag(NDR_NOALIGN)] struct {
1820 uint8 handle_idx;
1821 FOLDER_TYPE ulFolderType;
1822 FOLDER_STRING ulType;
1823 FOLDER_FLAGS ulFlags;
1824 [switch_is(ulType)] LPTSTR FolderName;
1825 [switch_is(ulType)] LPTSTR FolderComment;
1826 } CreateFolder_req;
1828 typedef [flag(NDR_NOALIGN)] struct {
1829 boolean8 HasRules;
1830 boolean8 IsGhosted;
1831 [switch_is(IsGhosted)] IsGhosted Ghost;
1832 } CreateFolder_GhostInfo;
1834 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
1835 [case(0x0)];
1836 [case(0x1)] CreateFolder_GhostInfo GhostInfo;
1837 } CreateFolder_GhostUnion;
1839 typedef [flag(NDR_NOALIGN)] struct {
1840 hyper folder_id;
1841 boolean8 IsExistingFolder;
1842 [switch_is(IsExistingFolder)] CreateFolder_GhostUnion GhostUnion;
1843 } CreateFolder_repl;
1845 /**************************/
1846 /* EcDoRpc Function 0x1d */
1847 typedef [bitmap8bit] bitmap {
1848 DEL_MESSAGES = 0x1,
1849 DEL_FOLDERS = 0x4,
1850 DELETE_HARD_DELETE = 0x10
1851 } DeleteFolderFlags;
1853 typedef [flag(NDR_NOALIGN)] struct {
1854 DeleteFolderFlags DeleteFolderFlags;
1855 hyper FolderId;
1856 } DeleteFolder_req;
1858 typedef [flag(NDR_NOALIGN)] struct {
1859 boolean8 PartialCompletion;
1860 } DeleteFolder_repl;
1862 /**************************/
1863 /* EcDoRpc Function 0x1e */
1864 typedef [flag(NDR_NOALIGN)] struct {
1865 boolean8 WantAsynchronous;
1866 boolean8 NotifyNonRead;
1867 uint16 cn_ids;
1868 hyper message_ids[cn_ids];
1869 } DeleteMessages_req;
1871 typedef [flag(NDR_NOALIGN)] struct {
1872 boolean8 PartialCompletion;
1873 } DeleteMessages_repl;
1875 /**************************/
1876 /* EcDoRpc Function 0x1f */
1877 typedef [flag(NDR_NOALIGN)] struct {
1878 hyper msgid;
1879 } GetMessageStatus_req;
1881 /**************************/
1882 /* EcDoRpc Function 0x20 */
1883 typedef [bitmap32bit] bitmap {
1884 MSGSTATUS_HIGHLIGHTED = 0x1,
1885 MSGSTATUS_TAGGED = 0x2,
1886 MSGSTATUS_HIDDEN = 0x4,
1887 MSGSTATUS_DELMARKED = 0x8,
1888 MSGSTATUS_REMOTE_DOWNLOAD = 0x1000,
1889 MSGSTATUS_REMOTE_DELETE = 0x2000
1890 } ulMessageStatus;
1893 typedef [flag(NDR_NOALIGN)] struct {
1894 hyper msgid;
1895 uint32 ulNewStatus;
1896 ulMessageStatus ulNewStatusMask;
1897 } SetMessageStatus_req;
1899 typedef [flag(NDR_NOALIGN)] struct {
1900 ulMessageStatus ulOldStatus;
1901 } SetMessageStatus_repl;
1903 /**************************/
1904 /* EcDoRpc Function 0x21 */
1905 typedef [flag(NDR_NOALIGN)] struct {
1906 uint8 handle_idx;
1907 TableFlags TableFlags;
1908 } GetAttachmentTable_req;
1910 typedef [flag(NDR_NOALIGN)] struct {
1911 } GetAttachmentTable_repl;
1913 /*************************/
1914 /* EcDoRpc Function 0x22 */
1915 typedef [enum8bit] enum {
1916 OpenAttachmentFlags_ReadOnly = 0x0,
1917 OpenAttachmentFlags_ReadWrite = 0x1,
1918 OpenAttachmentFlags_BestAccess = 0x3
1919 } OpenAttachmentFlags;
1921 typedef [flag(NDR_NOALIGN)] struct {
1922 uint8 handle_idx;
1923 OpenAttachmentFlags OpenAttachmentFlags;
1924 uint32 AttachmentID;
1925 } OpenAttach_req;
1927 typedef [flag(NDR_NOALIGN)] struct {
1928 } OpenAttach_repl;
1930 /*************************/
1931 /* EcDoRpc Function 0x23 */
1932 typedef [flag(NDR_NOALIGN)] struct {
1933 uint8 handle_idx;
1934 } CreateAttach_req;
1936 typedef [flag(NDR_NOALIGN)] struct {
1937 uint32 AttachmentID;
1938 } CreateAttach_repl;
1940 /*************************/
1941 /* EcDoRpc Function 0x24 */
1942 typedef [flag(NDR_NOALIGN)] struct {
1943 uint32 AttachmentID;
1944 } DeleteAttach_req;
1947 typedef [flag(NDR_NOALIGN)] struct {
1948 } DeleteAttach_repl;
1950 /*************************/
1951 /* EcDoRpc Function 0x25 */
1952 typedef [flag(NDR_NOALIGN)] struct {
1953 uint8 handle_idx;
1954 SaveFlags SaveFlags;
1955 } SaveChangesAttachment_req;
1957 typedef [flag(NDR_NOALIGN)] struct {
1958 } SaveChangesAttachment_repl;
1960 /*************************/
1961 /* EcDoRpc Function 0x26 */
1962 typedef [flag(NDR_NOALIGN)] struct {
1963 hyper fid;
1964 astring lpszMessageClass;
1965 } SetReceiveFolder_req;
1967 typedef [flag(NDR_NOALIGN)] struct {
1968 } SetReceiveFolder_repl;
1970 /*************************/
1971 /* EcDoRpc Function 0x27 */
1972 typedef [flag(NDR_NOALIGN)] struct {
1973 astring MessageClass;
1974 } GetReceiveFolder_req;
1976 typedef [flag(NDR_NOALIGN)] struct {
1977 hyper folder_id;
1978 astring MessageClass;
1979 } GetReceiveFolder_repl;
1981 /*************************/
1982 /* EcDoRpc Function 0x29 */
1983 typedef [bitmap16bit] bitmap {
1984 fnevCriticalError = 0x0001,
1985 fnevNewMail = 0x0002,
1986 fnevObjectCreated = 0x0004,
1987 fnevObjectDeleted = 0x0008,
1988 fnevObjectModified = 0x0010,
1989 fnevObjectMoved = 0x0020,
1990 fnevObjectCopied = 0x0040,
1991 fnevSearchComplete = 0x0080,
1992 fnevTableModified = 0x0100,
1993 fnevStatusObjectModified = 0x0200,
1994 fnevReserved = 0x0400,
1995 fnevTbit = 0x1000,
1996 fnevUbit = 0x2000,
1997 fnevSbit = 0x4000,
1998 fnevMbit = 0x8000
1999 } NotificationFlags;
2001 typedef [nodiscriminant,flag(NDR_NOALIGN)] union {
2002 [case(0x0)] hyper ID;
2003 [case(0x1)];
2004 } hyperbool;
2006 typedef [flag(NDR_NOALIGN)] struct {
2007 uint8 handle_idx;
2008 NotificationFlags NotificationFlags;
2009 boolean8 WantWholeStore;
2010 [switch_is(WantWholeStore)] hyperbool FolderId;
2011 [switch_is(WantWholeStore)] hyperbool MessageId;
2012 } RegisterNotification_req;
2014 typedef [flag(NDR_NOALIGN)] struct {
2015 } RegisterNotification_repl;
2017 /*************************/
2018 /* EcDoRpc Function 0x2a */
2019 typedef [bitmap32bit] bitmap {
2020 MSGFLAG_READ = 0x1,
2021 MSGFLAG_UNMODIFIED = 0x2,
2022 MSGFLAG_SUBMIT = 0x4,
2023 MSGFLAG_UNSENT = 0x8,
2024 MSGFLAG_HASATTACH = 0x10,
2025 MSGFLAG_FROMME = 0x20,
2026 MSGFLAG_ASSOCIATED = 0x40,
2027 MSGFLAG_RESEND = 0x80,
2028 MSGFLAG_RN_PENDING = 0x100,
2029 MSGFLAG_NRN_PENDING = 0x200
2030 } MsgFlags;
2032 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
2033 [case(0x0)] astring lpszA;
2034 [case(0x1)][flag(STR_NULLTERM)] string lpszW;
2035 } MessageClass;
2037 typedef [flag(NDR_NOALIGN)] struct {
2038 GUID DatabaseGUID;
2039 uint8 GlobalCounter[6];
2040 } GID;
2042 typedef [enum16bit] enum {
2043 TABLE_CHANGED = 0x1,
2044 TABLE_ROW_ADDED = 0x3,
2045 TABLE_ROW_DELETED = 0x4,
2046 TABLE_ROW_MODIFIED = 0x5,
2047 TABLE_RESTRICT_DONE = 0x7
2048 } RichTableNotificationType;
2050 /* NewMailNotification: case 0x2 and 0x8002 */
2051 typedef [flag(NDR_NOALIGN)] struct {
2052 hyper FID;
2053 hyper MID;
2054 MsgFlags MessageFlags;
2055 boolean8 UnicodeFlag;
2056 [switch_is(UnicodeFlag)] MessageClass MessageClass;
2057 } NewMailNotification;
2059 /* FolderCreatedNotification: case 0x4 */
2060 typedef [flag(NDR_NOALIGN)] struct {
2061 hyper FID;
2062 hyper ParentFID;
2063 uint16 TagCount;
2064 MAPITAGS Tags[TagCount];
2065 } FolderCreatedNotification;
2067 /* FolderDeletedNotification: case 0x8 */
2068 typedef [flag(NDR_NOALIGN)] struct {
2069 hyper FID;
2070 hyper ParentFID;
2071 } FolderDeletedNotification;
2073 /* FolderModifiedNotification: case 0x10 */
2074 typedef [flag(NDR_NOALIGN)] struct {
2075 hyper FID;
2076 uint16 TagCount;
2077 MAPITAGS Tags[TagCount];
2078 } FolderModifiedNotification_10;
2080 /* FolderMoveCopyNotification: case 0x20 and 0x40 */
2081 typedef [flag(NDR_NOALIGN)] struct {
2082 hyper FID;
2083 hyper ParentFID;
2084 hyper OldFID;
2085 hyper OldParentFID;
2086 } FolderMoveCopyNotification;
2088 /* SearchCompleteNotification: case 0x80 */
2089 typedef [flag(NDR_NOALIGN)] struct {
2090 hyper FID;
2091 } SearchCompleteNotification;
2093 /* HierarchyTable: case 0x100 */
2094 typedef [flag(NDR_NOALIGN)] struct {
2095 hyper FID;
2096 hyper InsertAfterFID;
2097 [subcontext(2)] DATA_BLOB Columns;
2098 } HierarchyRowAddedNotification;
2100 typedef [flag(NDR_NOALIGN)] struct {
2101 hyper FID;
2102 } HierarchyRowDeletedNotification;
2104 typedef [flag(NDR_NOALIGN)] struct {
2105 hyper FID;
2106 hyper InsertAfterFID;
2107 [subcontext(2)] DATA_BLOB Columns;
2108 } HierarchyRowModifiedNotification;
2110 typedef [nodiscriminant] union {
2111 [case(TABLE_ROW_ADDED)] HierarchyRowAddedNotification HierarchyRowAddedNotification;
2112 [case(TABLE_ROW_DELETED)] HierarchyRowDeletedNotification HierarchyRowDeletedNotification;
2113 [case(TABLE_ROW_MODIFIED)] HierarchyRowModifiedNotification HierarchyRowModifiedNotification;
2114 [default];
2115 } HierarchyTableChangeUnion;
2117 typedef [flag(NDR_NOALIGN)] struct {
2118 RichTableNotificationType TableEvent;
2119 [switch_is(TableEvent)] HierarchyTableChangeUnion HierarchyTableChangeUnion;
2120 } HierarchyTableChange;
2122 /* IcsNotification: case 0x200 */
2123 typedef [flag(NDR_NOALIGN)] struct {
2124 boolean8 HierChanged;
2125 uint32 GIDCount;
2126 GID GID[GIDCount];
2127 } IcsNotification;
2129 /* FolderModifiedNotification: case 0x1010 */
2130 typedef [flag(NDR_NOALIGN)] struct {
2131 hyper FID;
2132 uint16 TagCount;
2133 MAPITAGS Tags[TagCount];
2134 uint32 TotalMessageCount;
2135 } FolderModifiedNotification_1010;
2137 /* FolderModifiedNotification: case 0x2010 */
2138 typedef [flag(NDR_NOALIGN)] struct {
2139 hyper FID;
2140 uint16 TagCount;
2141 MAPITAGS Tags[TagCount];
2142 uint32 UnreadMessageCount;
2143 } FolderModifiedNotification_2010;
2145 /* FolderModifiedNotification: case 0x3010 */
2146 typedef [flag(NDR_NOALIGN)] struct {
2147 hyper FID;
2148 uint16 TagCount;
2149 MAPITAGS Tags[TagCount];
2150 uint32 TotalMessageCount;
2151 uint32 UnreadMessageCount;
2152 } FolderModifiedNotification_3010;
2154 /* MessageCreatedNotification: case 0x8004 */
2155 typedef [flag(NDR_NOALIGN)] struct {
2156 hyper FID;
2157 hyper MID;
2158 uint16 TagCount;
2159 MAPITAGS Tags[TagCount];
2160 } MessageCreatedNotification;
2162 /* MessageDeletedNotification: case 0x8008 */
2163 typedef [flag(NDR_NOALIGN)] struct {
2164 hyper FID;
2165 hyper MID;
2166 } MessageDeletedNotification;
2168 /* MessageModifiedNotification: case 0x8010 */
2169 typedef [flag(NDR_NOALIGN)] struct {
2170 hyper FID;
2171 hyper MID;
2172 uint16 TagCount;
2173 MAPITAGS Tags[TagCount];
2174 } MessageModifiedNotification;
2176 /* MessageMoveCopyNotification: case 0x8020 and 0x8040 */
2177 typedef [flag(NDR_NOALIGN)] struct {
2178 hyper FID;
2179 hyper MID;
2180 hyper OldFID;
2181 hyper OldMID;
2182 } MessageMoveCopyNotification;
2184 /* ContentsTableChange: case 0x8100 and 0xc100 */
2185 typedef [flag(NDR_NOALIGN)] struct {
2186 hyper FID;
2187 hyper MID;
2188 uint32 Instance;
2189 hyper InsertAfterFID;
2190 hyper InsertAfterMID;
2191 uint32 InsertAfterInstance;
2192 [subcontext(2)] DATA_BLOB Columns;
2193 } ContentsRowAddedNotification;
2195 typedef [flag(NDR_NOALIGN)] struct {
2196 hyper FID;
2197 hyper MID;
2198 uint32 Instance;
2199 } ContentsRowDeletedNotification;
2201 typedef [flag(NDR_NOALIGN)] struct {
2202 hyper FID;
2203 hyper MID;
2204 uint32 Instance;
2205 hyper InsertAfterFID;
2206 hyper InsertAfterMID;
2207 uint32 InsertAfterInstance;
2208 [subcontext(2)] DATA_BLOB Columns;
2209 } ContentsRowModifiedNotification;
2211 typedef [nodiscriminant] union {
2212 [case(TABLE_ROW_ADDED)] ContentsRowAddedNotification ContentsRowAddedNotification;
2213 [case(TABLE_ROW_DELETED)] ContentsRowDeletedNotification ContentsRowDeletedNotification;
2214 [case(TABLE_ROW_MODIFIED)] ContentsRowModifiedNotification ContentsRowModifiedNotification;
2215 [default];
2216 } ContentsTableChangeUnion;
2218 typedef [flag(NDR_NOALIGN)] struct {
2219 RichTableNotificationType TableEvent;
2220 [switch_is(TableEvent)] ContentsTableChangeUnion ContentsTableChangeUnion;
2221 } ContentsTableChange;
2223 /* SearchMessageRemovedNotification: case 0xc008 */
2224 typedef [flag(NDR_NOALIGN)] struct {
2225 hyper FID;
2226 hyper MID;
2227 hyper SearchFID;
2228 } SearchMessageRemovedNotification;
2230 /* SearchMessageModifiedNotification: 0xc010 */
2231 typedef [flag(NDR_NOALIGN)] struct {
2232 hyper FID;
2233 hyper MID;
2234 hyper SearchFID;
2235 uint16 TagCount;
2236 MAPITAGS Tags[TagCount];
2237 } SearchMessageModifiedNotification;
2239 typedef [nodiscriminant] union {
2240 [case(0x0002)] NewMailNotification NewMailNotification;
2241 [case(0x0004)] FolderCreatedNotification FolderCreatedNotification;
2242 [case(0x0008)] FolderDeletedNotification FolderDeletedNotification;
2243 [case(0x0010)] FolderModifiedNotification_10 FolderModifiedNotification_10;
2244 [case(0x0020)] FolderMoveCopyNotification FolderMoveNotification;
2245 [case(0x0040)] FolderMoveCopyNotification FolderCopyNotification;
2246 [case(0x0080)] SearchCompleteNotification SearchCompleteNotification;
2247 [case(0x0100)] HierarchyTableChange HierarchyTableChange;
2248 [case(0x0200)] IcsNotification IcsNotification;
2249 [case(0x1010)] FolderModifiedNotification_1010 FolderModifiedNotification_1010;
2250 [case(0x2010)] FolderModifiedNotification_2010 FolderModifiedNotification_2010;
2251 [case(0x3010)] FolderModifiedNotification_3010 FolderModifiedNotification_3010;
2252 [case(0x8002)] NewMailNotification NewMessageNotification;
2253 [case(0x8004)] MessageCreatedNotification MessageCreatedNotification;
2254 [case(0x8008)] MessageDeletedNotification MessageDeletedNotification;
2255 [case(0x8010)] MessageModifiedNotification MessageModifiedNotification;
2256 [case(0x8020)] MessageMoveCopyNotification MessageMoveNotification;
2257 [case(0x8040)] MessageMoveCopyNotification MessageCopyNotification;
2258 [case(0x8100)] ContentsTableChange ContentsTableChange;
2259 [case(0xc008)] SearchMessageRemovedNotification SearchMessageRemovedNotification;
2260 [case(0xc010)] SearchMessageModifiedNotification SearchMessageModifiedNotification;
2261 [case(0xc100)] ContentsTableChange SearchTableChange;
2262 } NotificationData;
2264 typedef [flag(NDR_NOALIGN)] struct {
2265 uint32 NotificationHandle;
2266 uint8 LogonId;
2267 NotificationFlags NotificationType;
2268 [switch_is(NotificationType)] NotificationData NotificationData;
2269 } Notify_repl;
2271 /*************************/
2272 /* EcDoRpc Function 0x2b */
2273 typedef [enum8bit] enum {
2274 OpenStream_ReadOnly = 0x0,
2275 OpenStream_ReadWrite = 0x1,
2276 OpenStream_Create = 0x2,
2277 OpenStream_BestAccess = 0x3
2278 } OpenStream_OpenModeFlags;
2280 typedef [flag(NDR_NOALIGN)] struct {
2281 uint8 handle_idx;
2282 MAPITAGS PropertyTag;
2283 OpenStream_OpenModeFlags OpenModeFlags;
2284 } OpenStream_req;
2286 typedef [flag(NDR_NOALIGN)] struct {
2287 uint32 StreamSize;
2288 } OpenStream_repl;
2290 /*************************/
2291 /* EcDoRpc Function 0x2c */
2292 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
2293 [case(0xBABE)] uint32 value;
2294 [default];
2295 } MaximumByteCount;
2297 typedef [flag(NDR_NOALIGN)] struct {
2298 uint16 ByteCount;
2299 [switch_is(ByteCount)] MaximumByteCount MaximumByteCount;
2300 } ReadStream_req;
2302 typedef [flag(NDR_ALIGN2)] struct {
2303 [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data;
2304 } ReadStream_repl;
2306 /*************************/
2307 /* EcDoRpc Function 0x2d */
2308 typedef [flag(NDR_NOALIGN)] struct {
2309 [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data;
2310 } WriteStream_req;
2313 typedef [flag(NDR_NOALIGN)] struct {
2314 uint16 WrittenSize;
2315 } WriteStream_repl;
2317 /*************************/
2318 /* EcDoRpc Function 0x2e */
2319 typedef [flag(NDR_NOALIGN)] struct {
2320 uint8 Origin;
2321 hyper Offset;
2322 } SeekStream_req;
2324 typedef [flag(NDR_NOALIGN)] struct {
2325 hyper NewPosition;
2326 } SeekStream_repl;
2328 /*************************/
2329 /* EcDoRpc Function 0x2f */
2330 typedef [flag(NDR_NOALIGN)] struct {
2331 hyper SizeStream;
2332 } SetStreamSize_req;
2334 typedef [flag(NDR_NOALIGN)] struct {
2335 } SetStreamSize_repl;
2337 /*************************/
2338 /* EcDoRpc Function 0x30 */
2339 typedef [bitmap32bit, flag(NDR_PAHEX)] bitmap {
2340 STOP_SEARCH = 0x00000001,
2341 RESTART_SEARCH = 0x00000002,
2342 RECURSIVE_SEARCH = 0x00000004,
2343 SHALLOW_SEARCH = 0x00000008,
2344 FOREGROUND_SEARCH = 0x00000010,
2345 BACKGROUND_SEARCH = 0x00000020,
2346 CONTENT_INDEXED_SEARCH = 0x00010000,
2347 NON_CONTENT_INDEXED_SEARCH = 0x00020000,
2348 STATIC_SEARCH = 0x00040000
2349 } SearchFlags;
2351 typedef [flag(NDR_NOALIGN)] struct {
2352 [subcontext(2)] mapi_SRestriction res;
2353 uint16 FolderIdCount;
2354 hyper FolderIds[FolderIdCount];
2355 SearchFlags SearchFlags;
2356 } SetSearchCriteria_req;
2358 typedef [flag(NDR_NOALIGN)] struct {
2359 } SetSearchCriteria_repl;
2361 /*************************/
2362 /* EcDoRpc Function 0x31 */
2363 typedef [flag(NDR_NOALIGN)] struct {
2364 boolean8 UseUnicode;
2365 boolean8 IncludeRestriction;
2366 boolean8 IncludeFolders;
2367 } GetSearchCriteria_req;
2369 typedef [flag(NDR_NOALIGN)] struct {
2370 [subcontext(2)] mapi_SRestriction res;
2371 uint8 unknown;
2372 uint16 FolderIdCount;
2373 hyper FolderIds[FolderIdCount];
2374 SearchFlags SearchFlags;
2375 } GetSearchCriteria_repl;
2377 /*************************/
2378 /* EcDoRpc Function 0x32 */
2379 typedef [enum8bit] enum {
2380 None = 0x0, /* None */
2381 PreProcess = 0x1, /* Needs to be preprocessed by the server */
2382 NeedsSpooler = 0x2 /* Is to be processed by a client spooler */
2383 } SubmitFlags;
2385 typedef [flag(NDR_NOALIGN)] struct {
2386 SubmitFlags SubmitFlags;
2387 } SubmitMessage_req;
2389 typedef [flag(NDR_NOALIGN)] struct {
2390 } SubmitMessage_repl;
2392 /*************************/
2393 /* EcDoRpc Function 0x33 */
2394 typedef [flag(NDR_NOALIGN)] struct {
2395 uint8 handle_idx;
2396 uint16 count;
2397 hyper message_id[count];
2398 boolean8 WantAsynchronous;
2399 boolean8 WantCopy;
2400 } MoveCopyMessages_req;
2402 typedef [flag(NDR_NOALIGN)] struct {
2403 boolean8 PartialCompletion;
2404 } MoveCopyMessages_repl;
2406 /*************************/
2407 /* EcDoRpc Function 0x34 */
2408 typedef [flag(NDR_NOALIGN)] struct {
2409 hyper FolderId;
2410 hyper MessageId;
2411 } AbortSubmit_req;
2413 typedef [flag(NDR_NOALIGN)] struct {
2414 } AbortSubmit_repl;
2416 /*************************/
2417 /* EcDoRpc Function 0x35 */
2418 typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
2419 [case(0x0)] astring lpszA;
2420 [case(0x1)][flag(STR_NULLTERM)] string lpszW;
2421 } Folder_name;
2423 typedef [flag(NDR_NOALIGN)] struct {
2424 uint8 handle_idx;
2425 boolean8 WantAsynchronous;
2426 boolean8 UseUnicode;
2427 hyper FolderId;
2428 [switch_is(UseUnicode)] Folder_name NewFolderName;
2429 } MoveFolder_req;
2431 typedef [flag(NDR_NOALIGN)] struct {
2432 boolean8 PartialCompletion;
2433 } MoveFolder_repl;
2435 /*************************/
2436 /* EcDoRpc Function 0x36 */
2437 typedef [flag(NDR_NOALIGN)] struct {
2438 uint8 handle_idx;
2439 boolean8 WantAsynchronous;
2440 boolean8 WantRecursive;
2441 boolean8 UseUnicode;
2442 hyper FolderId;
2443 [switch_is(UseUnicode)] Folder_name NewFolderName;
2444 } CopyFolder_req;
2446 typedef [flag(NDR_NOALIGN)] struct {
2447 boolean8 PartialCompletion;
2448 } CopyFolder_repl;
2450 /*************************/
2451 /* EcDoRpc Function 0x37 */
2452 typedef [flag(NDR_NOALIGN)] struct {
2453 } QueryColumnsAll_req;
2455 typedef [flag(NDR_NOALIGN)] struct {
2456 uint16 PropertyTagCount;
2457 MAPITAGS PropertyTags[PropertyTagCount];
2458 } QueryColumnsAll_repl;
2460 /*************************/
2461 /* EcDoRpc Function 0x38 */
2462 typedef [flag(NDR_NOALIGN)] struct {
2463 } Abort_req;
2465 typedef [flag(NDR_NOALIGN)] struct {
2466 TableStatus TableStatus;
2467 } Abort_repl;
2469 /*************************/
2470 /* EcDoRpc Function 0x39 */
2471 typedef [bitmap8bit] bitmap {
2472 CopyFlagsMove = 0x1, /* Move properties */
2473 CopyFlagsNoOverwrite = 0x2 /* Do not overwrite existing properties */
2474 } CopyFlags;
2476 typedef [flag(NDR_NOALIGN)] struct {
2477 uint8 handle_idx;
2478 boolean8 WantAsynchronous;
2479 boolean8 WantSubObjects;
2480 CopyFlags CopyFlags;
2481 mapi_SPropTagArray ExcludedTags;
2482 } CopyTo_req;
2484 typedef [flag(NDR_NOALIGN)] struct {
2485 uint16 PropertyProblemCount;
2486 PropertyProblem PropertyProblem[PropertyProblemCount];
2487 } CopyTo_repl;
2489 /*************************/
2490 /* EcDoRpc Function 0x3a */
2491 typedef [flag(NDR_NOALIGN)] struct {
2492 uint8 handle_idx;
2493 hyper ByteCount;
2494 } CopyToStream_req;
2496 typedef [flag(NDR_NOALIGN)] struct {
2497 hyper ReadByteCount;
2498 hyper WrittenByteCount;
2499 } CopyToStream_repl;
2501 /*************************/
2502 /* EcDoRpc Function 0x3e */
2503 typedef [flag(NDR_NOALIGN)] struct {
2504 uint8 handle_idx;
2505 uint8 padding;
2506 } GetTable_req;
2508 typedef [flag(NDR_NOALIGN)] struct {
2509 } GetTable_repl;
2511 /*************************/
2512 /* EcDoRpc Function 0x3f */
2513 typedef [bitmap8bit] bitmap {
2514 RulesTableFlags_Unicode = 0x40
2515 } RulesTableFlags;
2517 typedef [flag(NDR_NOALIGN)] struct {
2518 uint8 handle_idx;
2519 RulesTableFlags TableFlags;
2520 } GetRulesTable_req;
2522 typedef [flag(NDR_NOALIGN)] struct {
2523 } GetRulesTable_repl;
2525 /*************************/
2526 /* EcDoRpc Function 0x40 */
2527 typedef [flag(NDR_NOALIGN)] struct {
2528 mapi_SRowList rowList;
2529 } ModifyTable_req;
2531 typedef [flag(NDR_NOALIGN)] struct {
2532 [flag(NDR_REMAINING)] DATA_BLOB remaining;
2533 } ModifyTable_repl;
2535 /*************************/
2536 /* EcDoRpc Function 0x41 */
2537 typedef [flag(NDR_NOALIGN)] struct {
2538 ulRowFlags RuleDataFlags;
2539 mapi_SPropValue_array PropertyValues;
2540 } RuleData;
2542 typedef [bitmap8bit] bitmap {
2543 ModifyRulesFlag_Replace = 0x01
2544 } ModifyRulesFlag;
2546 typedef [flag(NDR_NOALIGN)] struct {
2547 ModifyRulesFlag ModifyRulesFlags;
2548 uint16 RulesCount;
2549 RuleData RulesData[RulesCount];
2550 } ModifyRules_req;
2552 typedef [flag(NDR_NOALIGN)] struct {
2553 } ModifyRules_repl;
2555 /*************************/
2556 /* EcDoRpc Function 0x42 */
2557 typedef [flag(NDR_NOALIGN)] struct {
2558 hyper FolderId;
2559 } GetOwningServers_req;
2561 typedef [flag(NDR_NOALIGN)] struct {
2562 uint16 OwningServersCount;
2563 uint16 CheapServersCount;
2564 astring OwningServers[OwningServersCount];
2565 } GetOwningServers_repl;
2567 /*************************/
2568 /* EcDoRpc Function 0x43 */
2569 typedef [flag(NDR_NOALIGN)] struct {
2570 hyper Id;
2571 } LongTermIdFromId_req;
2573 typedef [flag(NDR_NOALIGN)] struct {
2574 GUID DatabaseGuid;
2575 uint8 GlobalCounter[6];
2576 uint16 padding;
2577 } LongTermId;
2579 typedef [flag(NDR_NOALIGN)] struct {
2580 LongTermId LongTermId;
2581 } LongTermIdFromId_repl;
2583 /*************************/
2584 /* EcDoRpc Function 0x44 */
2585 typedef [flag(NDR_NOALIGN)] struct {
2586 LongTermId LongTermId;
2587 } IdFromLongTermId_req;
2589 typedef [flag(NDR_NOALIGN)] struct {
2590 hyper Id;
2591 } IdFromLongTermId_repl;
2593 /*************************/
2594 /* EcDoRpc Function 0x45 */
2595 typedef [flag(NDR_NOALIGN)] struct {
2596 hyper FolderId;
2597 } PublicFolderIsGhosted_req;
2599 typedef [flag(NDR_NOALIGN)] struct {
2600 boolean8 IsGhosted;
2601 [switch_is(IsGhosted)] IsGhosted Ghost;
2602 } PublicFolderIsGhosted_repl;
2604 /*************************/
2605 /* EcDoRpc Function 0x46 */
2606 typedef [enum8bit, flag(NDR_PAHEX)] enum {
2607 MAPI_READONLY = 0x0,
2608 MAPI_READWRITE = 0x1,
2609 MAPI_CREATE = 0x2
2610 } OpenEmbeddedMessage_OpenModeFlags;
2612 typedef [flag(NDR_NOALIGN)] struct {
2613 uint8 handle_idx;
2614 uint16 CodePageId;
2615 OpenEmbeddedMessage_OpenModeFlags OpenModeFlags;
2616 } OpenEmbeddedMessage_req;
2618 typedef [flag(NDR_NOALIGN)] struct {
2619 uint8 Reserved;
2620 hyper MessageId;
2621 boolean8 HasNamedProperties;
2622 TypedString SubjectPrefix;
2623 TypedString NormalizedSubject;
2624 uint16 RecipientCount;
2625 uint16 ColumnCount;
2626 MAPITAGS RecipientColumns[ColumnCount];
2627 uint8 RowCount;
2628 OpenRecipientRow RecipientRows[RowCount];
2629 } OpenEmbeddedMessage_repl;
2631 /*************************/
2632 /* EcDoRpc Function 0x47 */
2633 typedef [flag(NDR_NOALIGN)] struct {
2634 } SetSpooler_req;
2636 typedef [flag(NDR_NOALIGN)] struct {
2637 } SetSpooler_repl;
2639 /*************************/
2640 /* EcDoRpc Function 0x48 */
2641 typedef [enum8bit] enum {
2642 LockState_1stLock = 0x0,
2643 LockState_1stUnlock = 0x1,
2644 LockState_1stFinished = 0x2
2645 } LockState;
2647 typedef [flag(NDR_NOALIGN)] struct {
2648 hyper MessageId;
2649 LockState LockState;
2650 } SpoolerLockMessage_req;
2652 typedef [flag(NDR_NOALIGN)] struct {
2653 } SpoolerLockMessage_repl;
2655 /*************************/
2656 /* EcDoRpc Function 0x49 */
2657 typedef [flag(NDR_NOALIGN)] struct {
2658 } AddressTypes_req;
2660 typedef [flag(NDR_NOALIGN)] struct {
2661 uint16 cValues;
2662 uint16 size;
2663 mapi_LPSTR transport[cValues];
2664 } AddressTypes_repl;
2666 /**************************/
2667 /* EcDoRpc Function 0x4a */
2668 typedef [flag(NDR_NOALIGN)] struct {
2669 } TransportSend_req;
2671 typedef [nodiscriminant] union {
2672 [case(0x0)] mapi_SPropValue_array lpProps;
2673 [case(0x1)];
2674 } TransportSend_lpProps;
2676 typedef [flag(NDR_NOALIGN)] struct {
2677 boolean8 NoPropertiesReturned;
2678 [switch_is(NoPropertiesReturned)] TransportSend_lpProps properties;
2679 } TransportSend_repl;
2681 /**************************/
2682 /* EcDoRpc Function 0x4e */
2683 typedef [flag(NDR_NOALIGN)] struct {
2684 uint16 BufferSize;
2685 } FastTransferSourceGetBuffer_req;
2687 typedef [enum16bit] enum {
2688 TransferStatus_Error = 0x0,
2689 TransferStatus_Partial = 0x1,
2690 TransferStatus_NoRoom = 0x2,
2691 TransferStatus_Done = 0x3
2692 } TransferStatus;
2694 typedef [flag(NDR_NOALIGN)] struct {
2695 TransferStatus TransferStatus;
2696 uint16 InProgressCount;
2697 uint16 TotalStepCount;
2698 uint8 Reserved;
2699 uint16 TransferBufferSize;
2700 [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING)] DATA_BLOB TransferBuffer;
2701 } FastTransferSourceGetBuffer_repl;
2703 /**************************/
2704 /* EcDoRpc Function 0x4f */
2705 typedef [enum8bit] enum {
2706 DIR_FORWARD = 0x0,
2707 DIR_BACKWARD = 0x1
2708 } FindRow_ulFlags;
2710 typedef [flag(NDR_NOALIGN)] struct {
2711 FindRow_ulFlags ulFlags;
2712 [subcontext(2)] mapi_SRestriction res;
2713 BOOKMARK origin;
2714 SBinary_short bookmark;
2715 } FindRow_req;
2717 typedef [flag(NDR_NOALIGN)] struct {
2718 uint8 RowNoLongerVisible;
2719 uint8 HasRowData;
2720 [flag(NDR_NOALIGN)] DATA_BLOB row;
2721 } FindRow_repl;
2723 /**************************/
2724 /* EcDoRpc Function 0x50 */
2725 typedef [flag(NDR_NOALIGN)] struct {
2726 boolean8 WantCancel;
2727 } Progress_req;
2729 typedef [flag(NDR_NOALIGN)] struct {
2730 uint32 CompletedTaskCount;
2731 uint32 TotalTaskCount;
2732 } Progress_repl;
2734 /*************************/
2735 /* EcDoRpc Function 0x55 */
2736 typedef [enum8bit] enum {
2737 MNID_ID = 0,
2738 MNID_STRING = 1
2739 } ulKind;
2741 typedef [flag(NDR_NOALIGN)] struct {
2742 uint8 NameSize;
2743 [flag(STR_NULLTERM)] string Name;
2744 } mapi_name;
2746 typedef [nodiscriminant] union {
2747 [case(MNID_ID)] uint32 lid;
2748 [case(MNID_STRING)] mapi_name lpwstr;
2749 } Kind;
2751 typedef [flag(NDR_NOALIGN)] struct {
2752 ulKind ulKind;
2753 GUID lpguid;
2754 [switch_is(ulKind)] Kind kind;
2755 } MAPINAMEID;
2757 typedef [flag(NDR_NOALIGN)] struct {
2758 uint16 PropertyIdCount;
2759 uint16 PropertyIds[PropertyIdCount];
2760 } GetNamesFromIDs_req;
2762 typedef [flag(NDR_NOALIGN)] struct {
2763 uint16 count;
2764 MAPINAMEID nameid[count];
2765 } GetNamesFromIDs_repl;
2767 /*************************/
2768 /* EcDoRpc Function 0x56 */
2769 typedef [flag(NDR_NOALIGN)] struct {
2770 uint8 ulFlags;
2771 uint16 count;
2772 MAPINAMEID nameid[count];
2773 } GetIDsFromNames_req;
2775 typedef [flag(NDR_NOALIGN)] struct {
2776 uint16 count;
2777 uint16 propID[count];
2778 } GetIDsFromNames_repl;
2780 /*************************/
2781 /* EcDoRpc Function 0x57 */
2782 typedef [flag(NDR_NOALIGN)] struct {
2783 SBinary_short ServerEntryId;
2784 SBinary_short ClientEntryId;
2785 } UpdateDeferredActionMessages_req;
2787 typedef [flag(NDR_NOALIGN)] struct {
2788 } UpdateDeferredActionMessages_repl;
2790 /*************************/
2791 /* EcDoRpc Function 0x58 */
2792 typedef [flag(NDR_NOALIGN)] struct {
2793 boolean8 WantAsynchronous;
2794 boolean8 WantDeleteAssociated;
2795 } EmptyFolder_req;
2797 typedef [flag(NDR_NOALIGN)] struct {
2798 boolean8 PartialCompletion;
2799 } EmptyFolder_repl;
2801 /*************************/
2802 /* EcDoRpc Function 0x59 */
2803 typedef [flag(NDR_NOALIGN)] struct {
2804 uint16 MaxRowCount;
2805 hyper CategoryId;
2806 } ExpandRow_req;
2808 typedef [flag(NDR_NOALIGN)] struct {
2809 uint32 ExpandedRowCount;
2810 uint16 RowCount;
2811 [flag(NDR_REMAINING)]DATA_BLOB RowData;
2812 } ExpandRow_repl;
2814 /*************************/
2815 /* EcDoRpc Function 0x5a */
2816 typedef [flag(NDR_NOALIGN)] struct {
2817 hyper CategoryId;
2818 } CollapseRow_req;
2820 typedef [flag(NDR_NOALIGN)] struct {
2821 uint32 CollapsedRowCount;
2822 } CollapseRow_repl;
2824 /*************************/
2825 /* EcDoRpc Function 0x5b */
2826 typedef [flag(NDR_NOALIGN)] struct {
2827 hyper RegionOffset;
2828 hyper RegionSize;
2829 uint32 LockFlags;
2830 } LockRegionStream_req;
2832 typedef [flag(NDR_NOALIGN)] struct {
2833 } LockRegionStream_repl;
2835 /*************************/
2836 /* EcDoRpc Function 0x5c */
2837 typedef [flag(NDR_NOALIGN)] struct {
2838 hyper RegionOffset;
2839 hyper RegionSize;
2840 uint32 LockFlags;
2841 } UnlockRegionStream_req;
2843 typedef [flag(NDR_NOALIGN)] struct {
2844 } UnlockRegionStream_repl;
2846 /*************************/
2847 /* EcDoRpc Function 0x5d */
2848 typedef [flag(NDR_NOALIGN)] struct {
2849 } CommitStream_req;
2851 typedef [flag(NDR_NOALIGN)] struct {
2852 } CommitStream_repl;
2854 /*************************/
2855 /* EcDoRpc Function 0x5e */
2856 typedef [flag(NDR_NOALIGN)] struct {
2857 } GetStreamSize_req;
2859 typedef [flag(NDR_NOALIGN)] struct {
2860 uint32 StreamSize;
2861 } GetStreamSize_repl;
2863 /*************************/
2864 /* EcDoRpc Function 0x5f */
2865 typedef [bitmap8bit] bitmap {
2866 NoStrings = 0x01,
2867 NoIds = 0x02
2868 } QueryFlags;
2870 typedef [nodiscriminant] union {
2871 [case(0x0)];
2872 [case(0x1)] GUID guid;
2873 } QueryNamedProperties_guid;
2875 typedef [flag(NDR_NOALIGN)] struct {
2876 QueryFlags QueryFlags;
2877 boolean8 HasGuid;
2878 [switch_is(HasGuid)] QueryNamedProperties_guid PropertyGuid;
2879 } QueryNamedProperties_req;
2881 typedef [flag(NDR_NOALIGN)] struct {
2882 uint16 IdCount;
2883 uint16 PropertyIds[IdCount];
2884 MAPINAMEID PropertyNames[IdCount];
2885 } QueryNamedProperties_repl;
2887 /*************************/
2888 /* EcDoRpc Function 0x60 */
2889 typedef [flag(NDR_NOALIGN)] struct {
2890 GUID DatabaseGuid;
2891 } GetPerUserLongTermIds_req;
2893 typedef [flag(NDR_NOALIGN)] struct {
2894 uint16 LongTermIdCount;
2895 LongTermId LongTermIds[LongTermIdCount];
2896 } GetPerUserLongTermIds_repl;
2898 /*************************/
2899 /* EcDoRpc Function 0x61 */
2900 typedef [flag(NDR_NOALIGN)] struct {
2901 LongTermId LongTermId;
2902 } GetPerUserGuid_req;
2904 typedef [flag(NDR_NOALIGN)] struct {
2905 GUID DatabaseGuid;
2906 } GetPerUserGuid_repl;
2908 /*************************/
2909 /* EcDoRpc Function 0x63 */
2910 typedef [flag(NDR_NOALIGN)] struct {
2911 uint8 FolderId[24];
2912 boolean8 WhatIfChanged;
2913 uint32 DataOffset;
2914 uint16 MaxDataSize;
2915 } ReadPerUserInformation_req;
2917 typedef [flag(NDR_NOALIGN)] struct {
2918 boolean8 HasFinished;
2919 uint16 DataSize;
2920 [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING)] DATA_BLOB Data;
2921 } ReadPerUserInformation_repl;
2923 /*************************/
2924 /* EcDoRpc Function 0x66 */
2925 typedef [flag(NDR_NOALIGN)] struct {
2926 boolean8 WantAsynchronous;
2927 MSGFLAG_READ ReadFlags;
2928 uint16 MessageIdCount;
2929 hyper MessageIds[MessageIdCount];
2930 } SetReadFlags_req;
2932 typedef [flag(NDR_NOALIGN)] struct {
2933 boolean8 PartialCompletion;
2934 } SetReadFlags_repl;
2936 /*************************/
2937 /* EcDoRpc Function 0x67 */
2938 typedef [flag(NDR_NOALIGN)] struct {
2939 uint8 handle_idx;
2940 boolean8 WantAsynchronous;
2941 CopyFlags CopyFlags;
2942 mapi_SPropTagArray PropertyTags;
2943 } CopyProperties_req;
2945 typedef [flag(NDR_NOALIGN)] struct {
2946 uint16 PropertyProblemCount;
2947 PropertyProblem PropertyProblem[PropertyProblemCount];
2948 } CopyProperties_repl;
2950 /*************************/
2951 /* EcDoRpc Function 0x68 */
2952 typedef [flag(NDR_NOALIGN)] struct {
2953 uint8 unknown;
2954 hyper fid;
2955 astring lpszMessageClass;
2956 FILETIME modiftime;
2957 } ReceiveFolder;
2959 typedef [flag(NDR_NOALIGN)] struct {
2960 } GetReceiveFolderTable_req;
2962 typedef [flag(NDR_NOALIGN)] struct {
2963 uint32 cValues;
2964 ReceiveFolder entries[cValues];
2965 } GetReceiveFolderTable_repl;
2967 /*************************/
2968 /* EcDoRpc Function 0x6b */
2969 typedef [flag(NDR_NOALIGN)] struct {
2970 hyper RowId;
2971 uint32 RowInstanceNumber;
2972 } GetCollapseState_req;
2974 typedef [flag(NDR_NOALIGN)] struct {
2975 SBinary_short CollapseState;
2976 } GetCollapseState_repl;
2978 /*************************/
2979 /* EcDoRpc Function 0x6c */
2980 typedef [flag(NDR_NOALIGN)] struct {
2981 SBinary_short CollapseState;
2982 } SetCollapseState_req;
2984 typedef [flag(NDR_NOALIGN)] struct {
2985 SBinary_short bookmark;
2986 } SetCollapseState_repl;
2988 /*************************/
2989 /* EcDoRpc Function 0x6d */
2990 typedef [flag(NDR_NOALIGN)] struct {
2991 } GetTransportFolder_req;
2993 typedef [flag(NDR_NOALIGN)] struct {
2994 hyper FolderId;
2995 } GetTransportFolder_repl;
2997 /*************************/
2998 /* EcDoRpc Function 0x6e */
2999 typedef [flag(NDR_NOALIGN)] struct {
3000 uint16 SessionIndex;
3001 } Pending_repl;
3003 /*************************/
3004 /* EcDoRpc Function 0x6f */
3005 typedef [enum8bit,flag(NDR_NOALIGN)] enum {
3006 OPTION_TYPE_RECIPIENT = 0x1,
3007 OPTION_TYPE_MESSAGE = 0x2
3008 } OPTIONDATA_ulFlags;
3010 typedef [flag(NDR_NOALIGN)] struct {
3011 astring transport;
3012 OPTIONDATA_ulFlags type;
3013 } RegisterOptions_req;
3015 typedef [flag(NDR_NOALIGN)] struct {
3016 OPTIONDATA_ulFlags ulFlags;
3017 DATA_BLOB data;
3018 } RegisterOptions_repl;
3020 /*************************/
3021 /* EcDoRpc Function 0x70 */
3022 typedef [enum8bit] enum {
3023 Contents = 0x1,
3024 Hierarchy = 0x2
3025 } SynchronizationType;
3027 typedef [bitmap8bit] bitmap {
3028 SendOptions_Unicode = 0x1,
3029 SendOptions_ForUpload = 0x3,
3030 SendOptions_RecoverMode = 0x4,
3031 SendOptions_ForceUnicode = 0x8,
3032 SendOptions_Partial = 0x10
3033 } SendOptions;
3035 typedef [bitmap16bit] bitmap {
3036 SynchronizationFlag_Unicode = 0x1,
3037 SynchronizationFlag_NoDeletions = 0x2,
3038 SynchronizationFlag_NoSoftDeletions = 0x4,
3039 SynchronizationFlag_ReadState = 0x8,
3040 SynchronizationFlag_FAI = 0x10,
3041 SynchronizationFlag_Normal = 0x20,
3042 SynchronizationFlag_OnlySpecifiedProperties = 0x80,
3043 SynchronizationFlag_NoForeignIdentifiers = 0x100,
3044 SynchronizationFlag_Reserved = 0x1000,
3045 SynchronizationFlag_BestBody = 0x2000,
3046 SynchronizationFlag_IgnoreSpecifiedOnFAI = 0x4000,
3047 SynchronizationFlag_Progress = 0x8000
3048 } SynchronizationFlag;
3050 typedef [bitmap32bit] bitmap {
3051 Eid = 0x00000001,
3052 MessageSize = 0x00000002,
3053 Cn = 0x00000004,
3054 OrderByDeliveryTime = 0x00000008
3055 } SynchronizationExtraFlags;
3057 typedef [flag(NDR_NOALIGN)] struct {
3058 uint8 handle_idx;
3059 SynchronizationType SynchronizationType;
3060 SendOptions SendOptions;
3061 SynchronizationFlag SynchronizationFlag;
3062 uint16 RestrictionSize;
3063 [subcontext(0),subcontext_size(RestrictionSize),flag(NDR_REMAINING)] DATA_BLOB RestrictionData;
3064 SynchronizationExtraFlags SynchronizationExtraFlags;
3065 mapi_SPropTagArray PropertyTags;
3066 } SyncConfigure_req;
3068 typedef [flag(NDR_NOALIGN)] struct {
3069 } SyncConfigure_repl;
3071 /*************************/
3072 /* EcDoRpc Function 0x72 */
3073 typedef [bitmap8bit] bitmap {
3074 ImportFlag_Associated = 0x10,
3075 ImportFlag_FailOnConflict = 0x40
3076 } ImportFlag;
3078 typedef [flag(NDR_NOALIGN)] struct {
3079 uint8 handle_idx;
3080 ImportFlag ImportFlag;
3081 mapi_SPropValue_array PropertyValues;
3082 } SyncImportMessageChange_req;
3084 typedef [flag(NDR_NOALIGN)] struct {
3085 hyper MessageId;
3086 } SyncImportMessageChange_repl;
3088 /*************************/
3089 /* EcDoRpc Function 0x73 */
3090 typedef [flag(NDR_NOALIGN)] struct {
3091 mapi_SPropValue_array HierarchyValues;
3092 mapi_SPropValue_array PropertyValues;
3093 } SyncImportHierarchyChange_req;
3095 typedef [flag(NDR_NOALIGN)] struct {
3096 hyper FolderId;
3097 } SyncImportHierarchyChange_repl;
3099 /*************************/
3100 /* EcDoRpc Function 0x74 */
3101 typedef [flag(NDR_NOALIGN)] struct {
3102 boolean8 IsHierarchy;
3103 mapi_SPropValue_array PropertyValues;
3104 } SyncImportDeletes_req;
3106 typedef [flag(NDR_NOALIGN)] struct {
3107 } SyncImportDeletes_repl;
3109 /*************************/
3110 /* EcDoRpc Function 0x75 */
3111 typedef [v1_enum,flag(NDR_PAHEX)] enum {
3112 PidTagIdsetGiven = 0x40170003,
3113 PidTagCnsetSeen = 0x67960102,
3114 PidTagCnsetSeenFAI = 0x67da0102,
3115 PidTagCnsetRead = 0x67d20102
3116 } StateProperty;
3118 typedef [flag(NDR_NOALIGN)] struct {
3119 StateProperty StateProperty;
3120 uint32 TransferBufferSize;
3121 } SyncUploadStateStreamBegin_req;
3123 typedef [flag(NDR_NOALIGN)] struct {
3124 } SyncUploadStateStreamBegin_repl;
3126 /*************************/
3127 /* EcDoRpc Function 0x76 */
3128 typedef [flag(NDR_NOALIGN)] struct {
3129 uint32 StreamDataSize;
3130 uint8 StreamData[StreamDataSize];
3131 } SyncUploadStateStreamContinue_req;
3133 typedef [flag(NDR_NOALIGN)] struct {
3134 } SyncUploadStateStreamContinue_repl;
3136 /*************************/
3137 /* EcDoRpc Function 0x77 */
3138 typedef [flag(NDR_NOALIGN)] struct {
3139 } SyncUploadStateStreamEnd_req;
3141 typedef [flag(NDR_NOALIGN)] struct {
3142 } SyncUploadStateStreamEnd_repl;
3144 /*************************/
3145 /* EcDoRpc Function 0x78 */
3146 typedef [flag(NDR_NOALIGN)] struct {
3147 uint32 SourceFolderIdSize;
3148 uint8 SourceFolderId[SourceFolderIdSize];
3149 uint32 SourceMessageIdSize;
3150 uint8 SourceMessageId[SourceMessageIdSize];
3151 uint32 PredecessorChangeListSize;
3152 uint8 PredecessorChangeList[PredecessorChangeListSize];
3153 uint32 DestinationMessageIdSize;
3154 uint8 DestinationMessageId[DestinationMessageIdSize];
3155 uint32 ChangeNumberSize;
3156 uint8 ChangeNumber[ChangeNumberSize];
3157 } SyncImportMessageMove_req;
3159 typedef [flag(NDR_NOALIGN)] struct {
3160 hyper MessageId;
3161 } SyncImportMessageMove_repl;
3163 /*************************/
3164 /* EcDoRpc Function 0x79 */
3165 typedef [flag(NDR_NOALIGN)] struct {
3166 [subcontext(2)] mapi_SPropValue_array values;
3167 } SetPropertiesNoReplicate_req;
3169 typedef [flag(NDR_NOALIGN)] struct {
3170 uint16 PropertyProblemCount;
3171 PropertyProblem PropertyProblem[PropertyProblemCount];
3172 } SetPropertiesNoReplicate_repl;
3174 /*************************/
3175 /* EcDoRpc Function 0x7a */
3176 typedef [flag(NDR_NOALIGN)] struct {
3177 mapi_SPropTagArray PropertyTags;
3178 } DeletePropertiesNoReplicate_req;
3180 typedef [flag(NDR_NOALIGN)] struct {
3181 uint16 PropertyProblemCount;
3182 PropertyProblem PropertyProblem[PropertyProblemCount];
3183 } DeletePropertiesNoReplicate_repl;
3185 /*************************/
3186 /* EcDoRpc Function 0x7b */
3187 typedef [public,bitmap32bit] bitmap {
3188 STORE_HAS_SEARCHES = 0x010000000
3189 } StoreState;
3191 typedef [flag(NDR_NOALIGN)] struct {
3192 } GetStoreState_req;
3194 typedef [flag(NDR_NOALIGN)] struct {
3195 StoreState StoreState;
3196 } GetStoreState_repl;
3198 /*************************/
3199 /* EcDoRpc Function 0x7e */
3200 typedef [flag(NDR_NOALIGN)] struct {
3201 uint8 handle_idx;
3202 boolean8 IsContentsCollector;
3203 } SyncOpenCollector_req;
3205 typedef [flag(NDR_NOALIGN)] struct {
3206 } SyncOpenCollector_repl;
3208 /*************************/
3209 /* EcDoRpc Function 0x7f */
3210 typedef [flag(NDR_NOALIGN)] struct {
3211 uint32 IdCount;
3212 } GetLocalReplicaIds_req;
3214 typedef [flag(NDR_NOALIGN)] struct {
3215 GUID ReplGuid;
3216 uint8 GlobalCount[6];
3217 } GetLocalReplicaIds_repl;
3219 /*************************/
3220 /* EcDoRpc Function 0x80 */
3221 // typedef [flag(NDR_NOALIGN)] struct {
3222 // uint16 MessageSize;
3223 // uint8 MessageId[MessageSize];
3224 // boolean8 MarkAsRead;
3225 // } MessageReadStates;
3227 typedef [flag(NDR_NOALIGN)] struct {
3228 uint16 MessageReadStateSize;
3229 [subcontext(0),subcontext_size(MessageReadStateSize),flag(NDR_REMAINING)] DATA_BLOB MessageStates;
3230 } SyncImportReadStateChanges_req;
3232 typedef [flag(NDR_NOALIGN)] struct {
3233 } SyncImportReadStateChanges_repl;
3235 /*************************/
3236 /* EcDoRpc Function 0x81 */
3237 typedef [flag(NDR_NOALIGN)] struct {
3238 } ResetTable_req;
3240 typedef [flag(NDR_NOALIGN)] struct {
3241 } ResetTable_repl;
3243 /*************************/
3244 /* EcDoRpc Function 0x82 */
3245 typedef [flag(NDR_NOALIGN)] struct {
3246 uint8 handle_idx;
3247 } SyncGetTransferState_req;
3249 typedef [flag(NDR_NOALIGN)] struct {
3250 } SyncGetTransferState_repl;
3252 /*************************/
3253 /* EcDoRpc Function 0x87 */
3254 typedef [flag(NDR_NOALIGN)] struct {
3255 uint8 handle_idx;
3256 asclstr name;
3257 } OpenPublicFolderByName_req;
3259 typedef [flag(NDR_NOALIGN)] struct {
3260 boolean8 HasRules;
3261 boolean8 IsGhosted;
3262 [switch_is(IsGhosted)] IsGhosted Ghost;
3263 } OpenPublicFolderByName_repl;
3265 /*************************/
3266 /* EcDoRpc Function 0x88 */
3267 typedef [flag(NDR_NOALIGN)] struct {
3268 GUID NotificationGuid;
3269 } SetSyncNotificationGuid_req;
3271 typedef [flag(NDR_NOALIGN)] struct {
3272 } SetSyncNotificationGuid_repl;
3274 /*************************/
3275 /* EcDoRpc Function 0x89 */
3276 typedef [flag(NDR_NOALIGN)] struct {
3277 SBinary_short bookmark;
3278 } FreeBookmark_req;
3280 typedef [flag(NDR_NOALIGN)] struct {
3281 } FreeBookmark_repl;
3283 /**************************/
3284 /* EcDoRpc Function 0x91 */
3285 typedef [flag(NDR_NOALIGN)] struct {
3286 boolean8 WantAsynchronous;
3287 boolean8 NotifyNonRead;
3288 uint16 MessageIdCount;
3289 hyper MessageIds[MessageIdCount];
3290 } HardDeleteMessages_req;
3292 typedef [flag(NDR_NOALIGN)] struct {
3293 boolean8 PartialCompletion;
3294 } HardDeleteMessages_repl;
3296 /*************************/
3297 /* EcDoRpc Function 0xFE */
3298 typedef [public,bitmap8bit] bitmap {
3299 LogonPrivate = 0x1,
3300 UnderCover = 0x2,
3301 Ghosted = 0x4,
3302 SpIProcess = 0x8
3303 } LogonFlags;
3305 typedef [public,bitmap32bit] bitmap {
3306 PUBLIC = 0x2,
3307 HOME_LOGON = 0x4,
3308 TAKE_OWNERSHIP = 0x8,
3309 ALTERNATE_SERVER = 0x100,
3310 IGNORE_HOME_MDB = 0x200,
3311 NO_MAIL = 0x400,
3312 USE_PER_MDB_REPLID_MAPPING = 0x010000000
3313 } OpenFlags;
3315 typedef [enum8bit] enum {
3316 DayOfWeek_Sunday = 0x0,
3317 DayOfWeek_Monday = 0x1,
3318 DayOfWeek_Tuesday = 0x2,
3319 DayOfWeek_Wednesday = 0x3,
3320 DayOfWeek_Thursday = 0x4,
3321 DayOfWeek_Friday = 0x5,
3322 DayOfWeek_Saturday = 0x6
3323 } DayOfWeek;
3325 typedef [flag(NDR_NOALIGN)] struct {
3326 uint8 Seconds;
3327 uint8 Minutes;
3328 uint8 Hour;
3329 DayOfWeek DayOfWeek;
3330 uint8 Day;
3331 uint8 Month;
3332 uint16 Year;
3333 } LogonTime;
3335 typedef [bitmap8bit] bitmap {
3336 ResponseFlags_Reserved = 0x1,
3337 ResponseFlags_OwnerRight = 0x2,
3338 ResponseFlags_SendAsRight = 0x4,
3339 ResponseFlags_OOF = 0x10
3340 } ResponseFlags;
3342 typedef [flag(NDR_NOALIGN)] struct {
3343 hyper FolderIds[13];
3344 uint16 ReplId;
3345 GUID Guid;
3346 GUID PerUserGuid;
3347 } store_pf;
3349 typedef [flag(NDR_NOALIGN)] struct {
3350 hyper FolderIds[13];
3351 ResponseFlags ResponseFlags;
3352 GUID MailboxGuid;
3353 uint16 ReplId;
3354 GUID ReplGUID;
3355 LogonTime LogonTime;
3356 hyper GwartTime;
3357 StoreState StoreState;
3358 } store_mailbox;
3360 typedef [nodiscriminant] union {
3361 [case(0x0)] store_pf store_pf;
3362 [case(LogonPrivate)] store_mailbox store_mailbox;
3363 } LogonType;
3365 typedef [nopush,flag(NDR_NOALIGN)] struct {
3366 LogonFlags LogonFlags;
3367 OpenFlags OpenFlags;
3368 StoreState StoreState;
3369 ascstr3 EssDN;
3370 } Logon_req;
3372 typedef [flag(NDR_NOALIGN)] struct {
3373 LogonFlags LogonFlags;
3374 [switch_is(LogonFlags)] LogonType LogonType;
3375 } Logon_repl;
3377 /* Logon redirect response buffer (error_code == ecWrongServer) */
3378 typedef [public,flag(NDR_NOALIGN)] struct {
3379 LogonFlags LogonFlags;
3380 uint8 ServerNameSize;
3381 astring ServerName;
3382 } Logon_redirect;
3384 /*************************/
3385 /* EcDoRpc Function 0xA5 */
3386 typedef [flag(NDR_NOALIGN)] struct {
3387 SBinary_short bin;
3388 } proxypack_req;
3390 typedef [flag(NDR_NOALIGN)] struct {
3391 SBinary_short bin;
3392 } proxypack_repl;
3394 typedef [public, nodiscriminant] union {
3395 [case(op_MAPI_Release)] Release_req mapi_Release;
3396 [case(op_MAPI_OpenFolder)] OpenFolder_req mapi_OpenFolder;
3397 [case(op_MAPI_OpenMessage)] OpenMessage_req mapi_OpenMessage;
3398 [case(op_MAPI_GetHierarchyTable)] GetHierarchyTable_req mapi_GetHierarchyTable;
3399 [case(op_MAPI_GetContentsTable)] GetContentsTable_req mapi_GetContentsTable;
3400 [case(op_MAPI_CreateMessage)] CreateMessage_req mapi_CreateMessage;
3401 [case(op_MAPI_GetProps)] GetProps_req mapi_GetProps;
3402 [case(op_MAPI_GetPropsAll)] GetPropsAll_req mapi_GetPropsAll;
3403 [case(op_MAPI_GetPropList)] GetPropList_req mapi_GetPropList;
3404 [case(op_MAPI_SetProps)] SetProps_req mapi_SetProps;
3405 [case(op_MAPI_DeleteProps)] DeleteProps_req mapi_DeleteProps;
3406 [case(op_MAPI_SaveChangesMessage)] SaveChangesMessage_req mapi_SaveChangesMessage;
3407 [case(op_MAPI_SetMessageReadFlag)] SetMessageReadFlag_req mapi_SetMessageReadFlag;
3408 [case(op_MAPI_ReloadCachedInformation)] ReloadCachedInformation_req mapi_ReloadCachedInformation;
3409 [case(op_MAPI_SetColumns)] SetColumns_req mapi_SetColumns;
3410 [case(op_MAPI_SortTable)] SortTable_req mapi_SortTable;
3411 [case(op_MAPI_Restrict)] Restrict_req mapi_Restrict;
3412 [case(op_MAPI_RemoveAllRecipients)] RemoveAllRecipients_req mapi_RemoveAllRecipients;
3413 [case(op_MAPI_ModifyRecipients)] ModifyRecipients_req mapi_ModifyRecipients;
3414 [case(op_MAPI_ReadRecipients)] ReadRecipients_req mapi_ReadRecipients;
3415 [case(op_MAPI_QueryRows)] QueryRows_req mapi_QueryRows;
3416 [case(op_MAPI_GetStatus)] GetStatus_req mapi_GetStatus;
3417 [case(op_MAPI_QueryPosition)] QueryPosition_req mapi_QueryPosition;
3418 [case(op_MAPI_SeekRow)] SeekRow_req mapi_SeekRow;
3419 [case(op_MAPI_SeekRowBookmark)] SeekRowBookmark_req mapi_SeekRowBookmark;
3420 [case(op_MAPI_SeekRowApprox)] SeekRowApprox_req mapi_SeekRowApprox;
3421 [case(op_MAPI_CreateBookmark)] CreateBookmark_req mapi_CreateBookmark;
3422 [case(op_MAPI_CreateFolder)] CreateFolder_req mapi_CreateFolder;
3423 [case(op_MAPI_DeleteFolder)] DeleteFolder_req mapi_DeleteFolder;
3424 [case(op_MAPI_DeleteMessages)] DeleteMessages_req mapi_DeleteMessages;
3425 [case(op_MAPI_GetMessageStatus)] GetMessageStatus_req mapi_GetMessageStatus;
3426 [case(op_MAPI_SetMessageStatus)] SetMessageStatus_req mapi_SetMessageStatus;
3427 [case(op_MAPI_GetAttachmentTable)] GetAttachmentTable_req mapi_GetAttachmentTable;
3428 [case(op_MAPI_OpenAttach)] OpenAttach_req mapi_OpenAttach;
3429 [case(op_MAPI_CreateAttach)] CreateAttach_req mapi_CreateAttach;
3430 [case(op_MAPI_DeleteAttach)] DeleteAttach_req mapi_DeleteAttach;
3431 [case(op_MAPI_SaveChangesAttachment)] SaveChangesAttachment_req mapi_SaveChangesAttachment;
3432 [case(op_MAPI_SetReceiveFolder)] SetReceiveFolder_req mapi_SetReceiveFolder;
3433 [case(op_MAPI_GetReceiveFolder)] GetReceiveFolder_req mapi_GetReceiveFolder;
3434 [case(op_MAPI_RegisterNotification)] RegisterNotification_req mapi_RegisterNotification;
3435 [case(op_MAPI_OpenStream)] OpenStream_req mapi_OpenStream;
3436 [case(op_MAPI_ReadStream)] ReadStream_req mapi_ReadStream;
3437 [case(op_MAPI_WriteStream)] WriteStream_req mapi_WriteStream;
3438 [case(op_MAPI_SeekStream)] SeekStream_req mapi_SeekStream;
3439 [case(op_MAPI_SetStreamSize)] SetStreamSize_req mapi_SetStreamSize;
3440 [case(op_MAPI_SetSearchCriteria)] SetSearchCriteria_req mapi_SetSearchCriteria;
3441 [case(op_MAPI_GetSearchCriteria)] GetSearchCriteria_req mapi_GetSearchCriteria;
3442 [case(op_MAPI_SubmitMessage)] SubmitMessage_req mapi_SubmitMessage;
3443 [case(op_MAPI_MoveCopyMessages)] MoveCopyMessages_req mapi_MoveCopyMessages;
3444 [case(op_MAPI_AbortSubmit)] AbortSubmit_req mapi_AbortSubmit;
3445 [case(op_MAPI_MoveFolder)] MoveFolder_req mapi_MoveFolder;
3446 [case(op_MAPI_CopyFolder)] CopyFolder_req mapi_CopyFolder;
3447 [case(op_MAPI_QueryColumnsAll)] QueryColumnsAll_req mapi_QueryColumnsAll;
3448 [case(op_MAPI_Abort)] Abort_req mapi_Abort;
3449 [case(op_MAPI_CopyTo)] CopyTo_req mapi_CopyTo;
3450 [case(op_MAPI_CopyToStream)] CopyToStream_req mapi_CopyToStream;
3451 [case(op_MAPI_GetTable)] GetTable_req mapi_GetTable;
3452 [case(op_MAPI_GetRulesTable)] GetRulesTable_req mapi_GetRulesTable;
3453 [case(op_MAPI_ModifyTable)] ModifyTable_req mapi_ModifyTable;
3454 [case(op_MAPI_ModifyRules)] ModifyRules_req mapi_ModifyRules;
3455 [case(op_MAPI_GetOwningServers)] GetOwningServers_req mapi_GetOwningServers;
3456 [case(op_MAPI_LongTermIdFromId)] LongTermIdFromId_req mapi_LongTermIdFromId;
3457 [case(op_MAPI_IdFromLongTermId)] IdFromLongTermId_req mapi_IdFromLongTermId;
3458 [case(op_MAPI_PublicFolderIsGhosted)] PublicFolderIsGhosted_req mapi_PublicFolderIsGhosted;
3459 [case(op_MAPI_OpenEmbeddedMessage)] OpenEmbeddedMessage_req mapi_OpenEmbeddedMessage;
3460 [case(op_MAPI_SetSpooler)] SetSpooler_req mapi_SetSpooler;
3461 [case(op_MAPI_SpoolerLockMessage)] SpoolerLockMessage_req mapi_SpoolerLockMessage;
3462 [case(op_MAPI_AddressTypes)] AddressTypes_req mapi_AddressTypes;
3463 [case(op_MAPI_TransportSend)] TransportSend_req mapi_TransportSend;
3464 [case(op_MAPI_FastTransferSourceGetBuffer)] FastTransferSourceGetBuffer_req mapi_FastTransferSourceGetBuffer;
3465 [case(op_MAPI_FindRow)] FindRow_req mapi_FindRow;
3466 [case(op_MAPI_Progress)] Progress_req mapi_Progress;
3467 [case(op_MAPI_GetNamesFromIDs)] GetNamesFromIDs_req mapi_GetNamesFromIDs;
3468 [case(op_MAPI_GetIDsFromNames)] GetIDsFromNames_req mapi_GetIDsFromNames;
3469 [case(op_MAPI_UpdateDeferredActionMessages)] UpdateDeferredActionMessages_req mapi_UpdateDeferredActionMessages;
3470 [case(op_MAPI_EmptyFolder)] EmptyFolder_req mapi_EmptyFolder;
3471 [case(op_MAPI_ExpandRow)] ExpandRow_req mapi_ExpandRow;
3472 [case(op_MAPI_CollapseRow)] CollapseRow_req mapi_CollapseRow;
3473 [case(op_MAPI_LockRegionStream)] LockRegionStream_req mapi_LockRegionStream;
3474 [case(op_MAPI_UnlockRegionStream)] UnlockRegionStream_req mapi_UnlockRegionStream;
3475 [case(op_MAPI_CommitStream)] CommitStream_req mapi_CommitStream;
3476 [case(op_MAPI_GetStreamSize)] GetStreamSize_req mapi_GetStreamSize;
3477 [case(op_MAPI_QueryNamedProperties)] QueryNamedProperties_req mapi_QueryNamedProperties;
3478 [case(op_MAPI_GetPerUserLongTermIds)] GetPerUserLongTermIds_req mapi_GetPerUserLongTermIds;
3479 [case(op_MAPI_GetPerUserGuid)] GetPerUserGuid_req mapi_GetPerUserGuid;
3480 [case(op_MAPI_ReadPerUserInformation)] ReadPerUserInformation_req mapi_ReadPerUserInformation;
3481 [case(op_MAPI_SetReadFlags)] SetReadFlags_req mapi_SetReadFlags;
3482 [case(op_MAPI_CopyProperties)] CopyProperties_req mapi_CopyProperties;
3483 [case(op_MAPI_GetReceiveFolderTable)] GetReceiveFolderTable_req mapi_GetReceiveFolderTable;
3484 [case(op_MAPI_GetCollapseState)] GetCollapseState_req mapi_GetCollapseState;
3485 [case(op_MAPI_SetCollapseState)] SetCollapseState_req mapi_SetCollapseState;
3486 [case(op_MAPI_GetTransportFolder)] GetTransportFolder_req mapi_GetTransportFolder;
3487 [case(op_MAPI_RegisterOptions)] RegisterOptions_req mapi_RegisterOptions;
3488 [case(op_MAPI_SyncConfigure)] SyncConfigure_req mapi_SyncConfigure;
3489 [case(op_MAPI_SyncImportMessageChange)] SyncImportMessageChange_req mapi_SyncImportMessageChange;
3490 [case(op_MAPI_SyncImportHierarchyChange)] SyncImportHierarchyChange_req mapi_SyncImportHierarchyChange;
3491 [case(op_MAPI_SyncImportDeletes)] SyncImportDeletes_req mapi_SyncImportDeletes;
3492 [case(op_MAPI_SyncUploadStateStreamBegin)] SyncUploadStateStreamBegin_req mapi_SyncUploadStateStreamBegin;
3493 [case(op_MAPI_SyncUploadStateStreamContinue)] SyncUploadStateStreamContinue_req mapi_SyncUploadStateStreamContinue;
3494 [case(op_MAPI_SyncUploadStateStreamEnd)] SyncUploadStateStreamEnd_req mapi_SyncUploadStateStreamEnd;
3495 [case(op_MAPI_SyncImportMessageMove)] SyncImportMessageMove_req mapi_SyncImportMessageMove;
3496 [case(op_MAPI_SetPropertiesNoReplicate)] SetPropertiesNoReplicate_req mapi_SetPropertiesNoReplicate;
3497 [case(op_MAPI_DeletePropertiesNoReplicate)] DeletePropertiesNoReplicate_req mapi_DeletePropertiesNoReplicate;
3498 [case(op_MAPI_GetStoreState)] GetStoreState_req mapi_GetStoreState;
3499 [case(op_MAPI_SyncOpenCollector)] SyncOpenCollector_req mapi_SyncOpenCollector;
3500 [case(op_MAPI_GetLocalReplicaIds)] GetLocalReplicaIds_req mapi_GetLocalReplicaIds;
3501 [case(op_MAPI_SyncImportReadStateChanges)] SyncImportReadStateChanges_req mapi_SyncImportReadStateChanges;
3502 [case(op_MAPI_ResetTable)] ResetTable_req mapi_ResetTable;
3503 [case(op_MAPI_SyncGetTransferState)] SyncGetTransferState_req mapi_SyncGetTransferState;
3504 [case(op_MAPI_OpenPublicFolderByName)] OpenPublicFolderByName_req mapi_OpenPublicFolderByName;
3505 [case(op_MAPI_SetSyncNotificationGuid)] SetSyncNotificationGuid_req mapi_SetSyncNotificationGuid;
3506 [case(op_MAPI_FreeBookmark)] FreeBookmark_req mapi_FreeBookmark;
3507 [case(op_MAPI_HardDeleteMessages)] HardDeleteMessages_req mapi_HardDeleteMessages;
3508 [case(op_MAPI_Logon)] Logon_req mapi_Logon;
3509 [case(op_MAPI_proxypack)] proxypack_req mapi_proxypack;
3510 } EcDoRpc_MAPI_REQ_UNION;
3512 typedef [public, nodiscriminant] union {
3513 [case(op_MAPI_Release)] Release_repl mapi_Release;
3514 [case(op_MAPI_OpenFolder)] OpenFolder_repl mapi_OpenFolder;
3515 [case(op_MAPI_OpenMessage)] OpenMessage_repl mapi_OpenMessage;
3516 [case(op_MAPI_GetHierarchyTable)] GetHierarchyTable_repl mapi_GetHierarchyTable;
3517 [case(op_MAPI_GetContentsTable)] GetContentsTable_repl mapi_GetContentsTable;
3518 [case(op_MAPI_CreateMessage)] CreateMessage_repl mapi_CreateMessage;
3519 [case(op_MAPI_GetProps)] GetProps_repl mapi_GetProps;
3520 [case(op_MAPI_GetPropsAll)] GetPropsAll_repl mapi_GetPropsAll;
3521 [case(op_MAPI_GetPropList)] GetPropList_repl mapi_GetPropList;
3522 [case(op_MAPI_SetProps)] SetProps_repl mapi_SetProps;
3523 [case(op_MAPI_DeleteProps)] DeleteProps_repl mapi_DeleteProps;
3524 [case(op_MAPI_SaveChangesMessage)] SaveChangesMessage_repl mapi_SaveChangesMessage;
3525 [case(op_MAPI_RemoveAllRecipients)] RemoveAllRecipients_repl mapi_RemoveAllRecipients;
3526 [case(op_MAPI_ModifyRecipients)] ModifyRecipients_repl mapi_ModifyRecipients;
3527 [case(op_MAPI_ReadRecipients)] ReadRecipients_repl mapi_ReadRecipients;
3528 [case(op_MAPI_SetMessageReadFlag)] SetMessageReadFlag_repl mapi_SetMessageReadFlag;
3529 [case(op_MAPI_ReloadCachedInformation)] ReloadCachedInformation_repl mapi_ReloadCachedInformation;
3530 [case(op_MAPI_SetColumns)] SetColumns_repl mapi_SetColumns;
3531 [case(op_MAPI_SortTable)] SortTable_repl mapi_SortTable;
3532 [case(op_MAPI_Restrict)] Restrict_repl mapi_Restrict;
3533 [case(op_MAPI_QueryRows)] QueryRows_repl mapi_QueryRows;
3534 [case(op_MAPI_GetStatus)] GetStatus_repl mapi_GetStatus;
3535 [case(op_MAPI_QueryPosition)] QueryPosition_repl mapi_QueryPosition;
3536 [case(op_MAPI_SeekRow)] SeekRow_repl mapi_SeekRow;
3537 [case(op_MAPI_SeekRowBookmark)] SeekRowBookmark_repl mapi_SeekRowBookmark;
3538 [case(op_MAPI_SeekRowApprox)] SeekRowApprox_repl mapi_SeekRowApprox;
3539 [case(op_MAPI_CreateBookmark)] CreateBookmark_repl mapi_CreateBookmark;
3540 [case(op_MAPI_CreateFolder)] CreateFolder_repl mapi_CreateFolder;
3541 [case(op_MAPI_DeleteFolder)] DeleteFolder_repl mapi_DeleteFolder;
3542 [case(op_MAPI_DeleteMessages)] DeleteMessages_repl mapi_DeleteMessages;
3543 [case(op_MAPI_SetMessageStatus)] SetMessageStatus_repl mapi_SetMessageStatus;
3544 [case(op_MAPI_GetAttachmentTable)] GetAttachmentTable_repl mapi_GetAttachmentTable;
3545 [case(op_MAPI_OpenAttach)] OpenAttach_repl mapi_OpenAttach;
3546 [case(op_MAPI_CreateAttach)] CreateAttach_repl mapi_CreateAttach;
3547 [case(op_MAPI_DeleteAttach)] DeleteAttach_repl mapi_DeleteAttach;
3548 [case(op_MAPI_SaveChangesAttachment)] SaveChangesAttachment_repl mapi_SaveChangesAttachment;
3549 [case(op_MAPI_SetReceiveFolder)] SetReceiveFolder_repl mapi_SetReceiveFolder;
3550 [case(op_MAPI_GetReceiveFolder)] GetReceiveFolder_repl mapi_GetReceiveFolder;
3551 [case(op_MAPI_RegisterNotification)] RegisterNotification_repl mapi_RegisterNotification;
3552 [case(op_MAPI_Notify)] Notify_repl mapi_Notify;
3553 [case(op_MAPI_OpenStream)] OpenStream_repl mapi_OpenStream;
3554 [case(op_MAPI_ReadStream)] ReadStream_repl mapi_ReadStream;
3555 [case(op_MAPI_WriteStream)] WriteStream_repl mapi_WriteStream;
3556 [case(op_MAPI_SeekStream)] SeekStream_repl mapi_SeekStream;
3557 [case(op_MAPI_SetStreamSize)] SetStreamSize_repl mapi_SetStreamSize;
3558 [case(op_MAPI_SetSearchCriteria)] SetSearchCriteria_repl mapi_SetSearchCriteria;
3559 [case(op_MAPI_GetSearchCriteria)] GetSearchCriteria_repl mapi_GetSearchCriteria;
3560 [case(op_MAPI_SubmitMessage)] SubmitMessage_repl mapi_SubmitMessage;
3561 [case(op_MAPI_MoveCopyMessages)] MoveCopyMessages_repl mapi_MoveCopyMessages;
3562 [case(op_MAPI_AbortSubmit)] AbortSubmit_repl mapi_AbortSubmit;
3563 [case(op_MAPI_MoveFolder)] MoveFolder_repl mapi_MoveFolder;
3564 [case(op_MAPI_CopyFolder)] CopyFolder_repl mapi_CopyFolder;
3565 [case(op_MAPI_QueryColumnsAll)] QueryColumnsAll_repl mapi_QueryColumnsAll;
3566 [case(op_MAPI_Abort)] Abort_repl mapi_Abort;
3567 [case(op_MAPI_CopyTo)] CopyTo_repl mapi_CopyTo;
3568 [case(op_MAPI_CopyToStream)] CopyToStream_repl mapi_CopyToStream;
3569 [case(op_MAPI_GetTable)] GetTable_repl mapi_GetTable;
3570 [case(op_MAPI_GetRulesTable)] GetRulesTable_repl mapi_GetRulesTable;
3571 [case(op_MAPI_ModifyTable)] ModifyTable_repl mapi_ModifyTable;
3572 [case(op_MAPI_ModifyRules)] ModifyRules_repl mapi_ModifyRules;
3573 [case(op_MAPI_GetOwningServers)] GetOwningServers_repl mapi_GetOwningServers;
3574 [case(op_MAPI_LongTermIdFromId)] LongTermIdFromId_repl mapi_LongTermIdFromId;
3575 [case(op_MAPI_IdFromLongTermId)] IdFromLongTermId_repl mapi_IdFromLongTermId;
3576 [case(op_MAPI_PublicFolderIsGhosted)] PublicFolderIsGhosted_repl mapi_PublicFolderIsGhosted;
3577 [case(op_MAPI_OpenEmbeddedMessage)] OpenEmbeddedMessage_repl mapi_OpenEmbeddedMessage;
3578 [case(op_MAPI_SetSpooler)] SetSpooler_repl mapi_SetSpooler;
3579 [case(op_MAPI_SpoolerLockMessage)] SpoolerLockMessage_repl mapi_SpoolerLockMessage;
3580 [case(op_MAPI_AddressTypes)] AddressTypes_repl mapi_AddressTypes;
3581 [case(op_MAPI_TransportSend)] TransportSend_repl mapi_TransportSend;
3582 [case(op_MAPI_FastTransferSourceGetBuffer)] FastTransferSourceGetBuffer_repl mapi_FastTransferSourceGetBuffer;
3583 [case(op_MAPI_FindRow)] FindRow_repl mapi_FindRow;
3584 [case(op_MAPI_Progress)] Progress_repl mapi_Progress;
3585 [case(op_MAPI_GetNamesFromIDs)] GetNamesFromIDs_repl mapi_GetNamesFromIDs;
3586 [case(op_MAPI_GetIDsFromNames)] GetIDsFromNames_repl mapi_GetIDsFromNames;
3587 [case(op_MAPI_UpdateDeferredActionMessages)] UpdateDeferredActionMessages_repl mapi_UpdateDeferredActionMessages;
3588 [case(op_MAPI_EmptyFolder)] EmptyFolder_repl mapi_EmptyFolder;
3589 [case(op_MAPI_ExpandRow)] ExpandRow_repl mapi_ExpandRow;
3590 [case(op_MAPI_CollapseRow)] CollapseRow_repl mapi_CollapseRow;
3591 [case(op_MAPI_LockRegionStream)] LockRegionStream_repl mapi_LockRegionStream;
3592 [case(op_MAPI_UnlockRegionStream)] UnlockRegionStream_repl mapi_UnlockRegionStream;
3593 [case(op_MAPI_CommitStream)] CommitStream_repl mapi_CommitStream;
3594 [case(op_MAPI_GetStreamSize)] GetStreamSize_repl mapi_GetStreamSize;
3595 [case(op_MAPI_QueryNamedProperties)] QueryNamedProperties_repl mapi_QueryNamedProperties;
3596 [case(op_MAPI_GetPerUserLongTermIds)] GetPerUserLongTermIds_repl mapi_GetPerUserLongTermIds;
3597 [case(op_MAPI_GetPerUserGuid)] GetPerUserGuid_repl mapi_GetPerUserGuid;
3598 [case(op_MAPI_ReadPerUserInformation)] ReadPerUserInformation_repl mapi_ReadPerUserInformation;
3599 [case(op_MAPI_SetReadFlags)] SetReadFlags_repl mapi_SetReadFlags;
3600 [case(op_MAPI_CopyProperties)] CopyProperties_repl mapi_CopyProperties;
3601 [case(op_MAPI_GetReceiveFolderTable)] GetReceiveFolderTable_repl mapi_GetReceiveFolderTable;
3602 [case(op_MAPI_Pending)] Pending_repl mapi_Pending;
3603 [case(op_MAPI_GetCollapseState)] GetCollapseState_repl mapi_GetCollapseState;
3604 [case(op_MAPI_SetCollapseState)] SetCollapseState_repl mapi_SetCollapseState;
3605 [case(op_MAPI_GetTransportFolder)] GetTransportFolder_repl mapi_GetTransportFolder;
3606 [case(op_MAPI_RegisterOptions)] RegisterOptions_repl mapi_RegisterOptions;
3607 [case(op_MAPI_SyncConfigure)] SyncConfigure_repl mapi_SyncConfigure;
3608 [case(op_MAPI_SyncImportMessageChange)] SyncImportMessageChange_repl mapi_SyncImportMessageChange;
3609 [case(op_MAPI_SyncImportHierarchyChange)] SyncImportHierarchyChange_repl mapi_SyncImportHierarchyChange;
3610 [case(op_MAPI_SyncImportDeletes)] SyncImportDeletes_repl mapi_SyncImportDeletes;
3611 [case(op_MAPI_SyncUploadStateStreamBegin)] SyncUploadStateStreamBegin_repl mapi_SyncUploadStateStreamBegin;
3612 [case(op_MAPI_SyncUploadStateStreamContinue)] SyncUploadStateStreamContinue_repl mapi_SyncUploadStateStreamContinue;
3613 [case(op_MAPI_SyncUploadStateStreamEnd)] SyncUploadStateStreamEnd_repl mapi_SyncUploadStateStreamEnd;
3614 [case(op_MAPI_SyncImportMessageMove)] SyncImportMessageMove_repl mapi_SyncImportMessageMove;
3615 [case(op_MAPI_SetPropertiesNoReplicate)] SetPropertiesNoReplicate_repl mapi_SetPropertiesNoReplicate;
3616 [case(op_MAPI_DeletePropertiesNoReplicate)] DeletePropertiesNoReplicate_repl mapi_DeletePropertiesNoReplicate;
3617 [case(op_MAPI_GetStoreState)] GetStoreState_repl mapi_GetStoreState;
3618 [case(op_MAPI_SyncOpenCollector)] SyncOpenCollector_repl mapi_SyncOpenCollector;
3619 [case(op_MAPI_GetLocalReplicaIds)] GetLocalReplicaIds_repl mapi_GetLocalReplicaIds;
3620 [case(op_MAPI_SyncImportReadStateChanges)] SyncImportReadStateChanges_repl mapi_SyncImportReadStateChanges;
3621 [case(op_MAPI_ResetTable)] ResetTable_repl mapi_ResetTable;
3622 [case(op_MAPI_SyncGetTransferState)] SyncGetTransferState_repl mapi_SyncGetTransferState;
3623 [case(op_MAPI_OpenPublicFolderByName)] OpenPublicFolderByName_repl mapi_OpenPublicFolderByName;
3624 [case(op_MAPI_SetSyncNotificationGuid)] SetSyncNotificationGuid_repl mapi_SetSyncNotificationGuid;
3625 [case(op_MAPI_FreeBookmark)] FreeBookmark_repl mapi_FreeBookmark;
3626 [case(op_MAPI_HardDeleteMessages)] HardDeleteMessages_repl mapi_HardDeleteMessages;
3627 [case(op_MAPI_Logon)] Logon_repl mapi_Logon;
3628 [case(op_MAPI_proxypack)] proxypack_repl mapi_proxypack;
3630 } EcDoRpc_MAPI_REPL_UNION;
3632 typedef [public, nodiscriminant] union {
3633 [case(op_MAPI_Logon)] Logon_redirect mapi_Logon;
3634 [default];
3635 } EcDoRpc_MAPI_REPL_UNION_SPECIAL;
3637 typedef [public,flag(NDR_NOALIGN)] struct {
3638 uint8 opnum;
3639 uint8 logon_id;
3640 uint8 handle_idx;
3641 [switch_is(opnum)] EcDoRpc_MAPI_REQ_UNION u;
3642 } EcDoRpc_MAPI_REQ;
3644 typedef [public,nopush,nopull,noprint,flag(NDR_NOALIGN)] struct {
3645 uint8 opnum;
3646 uint8 handle_idx;
3647 MAPISTATUS error_code;
3648 [switch_is(opnum)] EcDoRpc_MAPI_REPL_UNION u;
3649 [switch_is(opnum)] EcDoRpc_MAPI_REPL_UNION_SPECIAL us;
3650 } EcDoRpc_MAPI_REPL;
3654 Abstract way to represent MAPI content
3657 typedef [public,nopull,nopush,noprint] struct {
3658 uint32 mapi_len; /* whole mapi_data length */
3659 uint16 length; /* content length */
3660 EcDoRpc_MAPI_REQ *mapi_req;
3661 uint32 *handles; /* handles id array */
3662 } mapi_request;
3664 typedef [public,nopull,nopush,noprint] struct {
3665 uint32 mapi_len;
3666 uint16 length;
3667 EcDoRpc_MAPI_REPL *mapi_repl;
3668 uint32 *handles;
3669 } mapi_response;
3672 [public] MAPISTATUS EcDoRpc(
3673 [in,out] policy_handle *handle,
3674 [in,out] uint32 size,
3675 [in,out] uint32 offset,
3676 [in] [subcontext(4),flag(NDR_REMAINING|NDR_NOALIGN)] mapi_request *mapi_request,
3677 [out][subcontext(4),flag(NDR_REMAINING|NDR_NOALIGN)] mapi_response *mapi_response,
3678 [in,out] uint16 *length,
3679 [in] uint16 max_data
3682 /*****************/
3683 /* Function 0x03 */
3684 void EcGetMoreRpc();
3686 /*****************/
3687 /* Function 0x04 */
3690 we could directly use a NOTIFKEY structure rather than
3691 a uint8 array, but this makes the IDL more robust
3693 sockaddr array is made of:
3694 - family (unsigned short in) sa_family_t
3695 - address data sa_data[14];
3698 typedef struct {
3699 uint16 cb;
3700 uint8 ab[cb];
3701 } NOTIFKEY;
3703 MAPISTATUS EcRRegisterPushNotification(
3704 [in,out] policy_handle *handle,
3705 [in] NotificationFlags ulEventMask,
3706 [in,size_is(cbContext)] uint8 rgbContext[*],
3707 [in] uint16 cbContext,
3708 [in] uint32 grbitAdviseBits,
3709 [in,size_is(cbCallbackAddress)] uint8 rgCallbackAddress[*],
3710 [in] uint16 cbCallbackAddress,
3711 [out,ref] uint32 *hNotification
3714 /*****************/
3715 /* Function 0x05 */
3716 MAPISTATUS EcRUnregisterPushNotification(
3717 [in,out] policy_handle *handle,
3718 [in] uint32 unknown[2]
3721 /*****************/
3722 /* Function 0x06 */
3723 void EcDummyRpc();
3725 /*****************/
3726 /* Function 0x07 */
3727 void EcRGetDCName();
3729 /*****************/
3730 /* Function 0x08 */
3731 void EcRNetGetDCName();
3733 /*****************/
3734 /* Function 0x09 */
3735 void EcDoRpcExt();
3737 /*****************/
3738 /* Function 0xa */
3739 MAPISTATUS EcDoConnectEx(
3740 [out] policy_handle *handle,
3741 [in,string,charset(DOS)] uint8 szUserDN[],
3742 [in] uint32 ulFlags,
3743 [in] uint32 ulConMod,
3744 [in] uint32 cbLimit,
3745 [in] uint32 ulCpid,
3746 [in] uint32 ulLcidString,
3747 [in] uint32 ulLcidSort,
3748 [in] uint32 ulIcxrLink,
3749 [in] uint16 usFCanConvertCodePages,
3750 [out] uint32 *pcmsPollsMax,
3751 [out] uint32 *pcRetry,
3752 [out] uint32 *pcmsRetryDelay,
3753 [out] uint32 *picxr,
3754 [out,unique,string,charset(DOS)]uint8 *szDNPrefix,
3755 [out,unique,string,charset(DOS)]uint8 *szDisplayName,
3756 [in] uint16 rgwClientVersion[3],
3757 [out] uint16 rgwServerVersion[3],
3758 [out] uint16 rgwBestVersion[3],
3759 [in,out] uint32 *pulTimeStamp,
3760 [in][subcontext(4),flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB rgbAuxIn,
3761 [in,out][range(0x0,0x1008)] uint32 *pcbAuxOut,
3762 [in][flag(NDR_REMAINING)] DATA_BLOB data
3767 uuid("c840a7dc-42c0-1a10-b4b9-08002b2fe182"),
3768 pointer_default(unique),
3769 helpstring("Unknown")
3770 ] interface exchange_unknown
3772 void unknown_dummy();