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