Question : Exemple Microsoft de Mapi

J'ai besoin de l'aide compilant ce dossier dans le studio visuel 2005. IL vient du rel= " nofollow " de " _blank " de target= de " http://support.microsoft.com/?id=171636 " de href= de le om/de http://support.microsoft.c ? la subsistance d'id=171636

I obtenant les erreurs suivantes en essayant de le compiler comme application de console et en plaçant compilent comme erreur C2039 de C.

Error 1 : « AdminServices » : n'est pas un membre de i \ exchangemapi \ erreur C2039
Error 2 de l'exchangemapi.c 74 : « GetMsgServiceTable » : n'est pas un membre de i \ exchangemapi \ erreur C2039
Error 3 de l'exchangemapi.c 85 : « AdminProviders » : n'est pas un membre de i \ exchangemapi \ erreur C2039
Error 4 de l'exchangemapi.c 112 : « CreateProvider » : n'est pas un membre de i \ exchangemapi \ erreur C2039
Error 5 de l'exchangemapi.c 141 : « OpenProfileSection » : n'est pas un membre de i \ exchangemapi \ erreur C2039
Error 6 de l'exchangemapi.c 154 : « GetProps » : n'est pas un membre de i \ exchangemapi \ erreur C2039
Error 7 de l'exchangemapi.c 162 : « SetProps » : n'est pas un membre de i \ exchangemapi \ erreur C2039
Error 8 de l'exchangemapi.c 201 : « Dégagement » : n'est pas un membre de i \ exchangemapi \ erreur C2039
Error 9 de l'exchangemapi.c 217 : « Dégagement » : n'est pas un membre de i \ exchangemapi \ erreur C2039
Error 10 de l'exchangemapi.c 218 : « Dégagement » : n'est pas un membre de i \ exchangemapi \ erreur C2039
Error 11 de l'exchangemapi.c 219 : « Dégagement » : n'est pas un membre de i \ exchangemapi \ erreur C2039
Error 12 de l'exchangemapi.c 220 : « Dégagement » : n'est pas un membre de i \ exchangemapi \
de l'exchangemapi.c 221 class= > " clair " de
> de " codeSnippet " de class= de
class= " lineNumbers " de
class= de
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 :
44 :
45 :
46 :
47 :
48 :
49 :
50 :
51 :
52 :
53 :
54 :
55 :
56 :
57 :
58 :
59 :
60 :
61 :
62 :
63 :
64 :
65 :
66 :
67 :
68 :
69 :
70 :
71 :
72 :
73 :
74 :
75 :
76 :
77 :
78 :
79 :
80 :
81 :
82 :
83 :
84 :
85 :
86 :
87 :
88 :
89 :
90 :
91 :
92 :
93 :
94 :
95 :
96 :
97 :
98 :
99 :
100 :
101 :
102 :
103 :
104 :
105 :
106 :
107 :
108 :
109 :
110 :
111 :
112 :
113 :
114 :
115 :
116 :
117 :
118 :
119 :
120 :
121 :
122 :
123 :
124 :
125 :
126 :
127 :
128 :
129 :
130 :
131 :
132 :
133 :
134 :
135 :
136 :
137 :
138 :
139 :
140 :
141 :
142 :
143 :
144 :
145 :
146 :
147 :
148 :
149 :
150 :
151 :
152 :
153 :
154 :
155 :
156 :
157 :
158 :
159 :
160 :
161 :
162 :
163 :
164 :
165 :
166 :
167 :
168 :
169 :
170 :
171 :
172 :
173 :
174 :
175 :
176 :
177 :
178 :
179 :
180 :
181 :
182 :
183 :
184 :
185 :
186 :
187 :
188 :
189 :
190 :
191 :
192 :
193 :
194 :
195 :
196 :
197 :
198 :
199 :
200 :
201 :
202 :
203 :
204 :
205 :
206 :
207 :
208 :
209 :
210 :
211 :
212 :
213 :
214 :
215 :
216 :
217 :
218 :
219 :
220 :
221 :
222 :
223 :
224 :
225 :
226 :
227 :
228 :
229 :
230 :
231 :
232 :
233 :
234 :
235 :
236 :
237 :
238 :
239 :
240 :
241 :
242 :
243 :
244 :
245 :
246 :
247 :
248 :
249 :
250 :
251 :
252 :
253 :
254 :
255 :
256 :
257 :
258 :
259 :
260 :
261 :
262 :
263 :
264 :
265 :
266 :
267 :
268 :
269 :
270 :
271 :
272 :
273 :
274 :
275 :
276 :
277 :
278 :
279 :
280 :
281 :
282 :
283 :
284 :
285 :
286 :
287 :
288 :
289 :
290 :
291 :
292 :
293 :
294 :
295 :
296 :
297 :
298 :
299 :
300 :
301 :
302 :
303 :
304 :
305 :
306 :
307 :
308 :
309 :
310 :
311 :
312 :
313 :
314 :
315 :
316 :
317 :
318 :
319 :
320 :
321 :
322 :
323 :
324 :
325 :
326 :
327 :
328 :
329 :
330 :
331 :
332 :
333 :
334 :
335 :
336 :
337 :
338 :
339 :
340 :
341 :
342 :
343 :
344 :
345 :
346 :
347 :
348 :
349 :
350 :
351 :
352 :
353 :
354 :
355 :
356 :
357 :
358 :
359 :
360 :
361 :
362 :
363 :
364 :
365 :
366 :
367 :
368 :
369 :
370 :
371 :
372 :
373 :
374 :
375 :
376 :
377 :
378 :
379 :
380 :
381 :
382 :
383 :
384 :
385 :
386 :
387 :
388 :
389 :
390 :
391 :
392 :
393 :
394 :
395 :
396 :
397 :
398 :
399 :
400 :
401 :
402 :
403 :
404 :
405 :
406 :
407 :
408 :
409 :
410 :
411 :
412 :
413 :
414 :
415 :
416 :
417 :
418 :
419 :
420 :
421 :
422 :
423 :
424 :
425 :
426 :
427 :
428 :
429 :
430 :
431 :
432 :
433 :
434 :
435 :
436 :
437 :
438 :
439 :
440 :
441 :
442 :
443 :
444 :
445 :
446 :
447 :
448 :
449 :
450 :
451 :
452 :
453 :
454 :
455 :
456 :
457 :
458 :
459 :
460 :
461 :
462 :
463 :
464 :
465 :
466 :
467 :
468 :
469 :
470 :
471 :
472 :
473 :
474 :
475 :
476 :
477 :
478 :
479 :
480 :
481 :
482 :
483 :
484 :
485 :
486 :
487 :
488 :
489 :
490 :
491 :
492 :
493 :
494 :
495 :
496 :
497 :
498 :
499 :
500 :
501 :
502 :
503 :
504 :
505 :
506 :
507 :
508 :
509 :
510 :
511 :
512 :
513 :
514 :
515 :
516 :
517 :
518 :
519 :
520 :
521 :
522 :
523 :
524 :
525 :
526 :
527 :
528 :
529 :
530 :
531 :
532 :
533 :
534 :
535 :
536 :
537 :
538 :
539 :
540 :
541 :
542 :
543 :
544 :
545 :
546 :
547 :
548 :
549 :
550 :
551 :
552 :
553 :
554 :
555 :
556 :
557 :
558 :
559 :
560 :
561 :
562 :
563 :
564 :
565 :
566 :
567 :
568 :
569 :
570 :
571 :
572 :
573 :
574 :
575 :
576 :
577 :
578 :
579 :
580 :
581 :
582 :
583 :
584 :
585 :
586 :
587 :
588 :
589 :
590 :
591 :
592 :
593 :
594 :
595 :
596 :
597 :
598 :
599 :
600 :
601 :
602 :
603 :
604 :
605 :
606 :
607 :
608 :
609 :
610 :
611 :
612 :
613 :
614 :
615 :
616 :
617 :
618 :
619 :
620 :
621 :
622 :
623 :
624 :
625 :
626 :
627 :
628 :
629 :
630 :
631 :
632 :
633 :
634 :
635 :
636 :
637 :
638 :
639 :
640 :
641 :
642 :
643 :
644 :
645 :
646 :
647 :
648 :
649 :
650 :
651 :
652 :
653 :
654 :
655 :
656 :
657 :
658 :
659 :
660 :
661 :
662 :
663 :
664 :
665 :
666 :
667 :
668 :
669 :
670 :
671 :
672 :
673 :
674 :
675 :
676 :
677 :
678 :
679 :
680 :
681 :
682 :
683 :
684 :
685 :
686 :
687 :
688 :
689 :
690 :
691 :
692 :
693 :
694 :
695 :
696 :
697 :
698 :
699 :
700 :
701 :
702 :
703 :
704 :
705 :
706 :
707 :
708 :
709 :
710 :
711 :
712 :
713 :
714 :
715 :
716 :
717 :
718 :
719 :
720 :
721 :
722 :
723 :
724 :
725 :
726 :
727 :
728 :
729 :
730 :
731 :
732 :
733 :
734 :
735 :
736 :
737 :
738 :
739 :
740 :
741 :
742 :
743 :
744 :
745 :
746 :
747 :
748 :
749 :
750 :
751 :
752 :
753 :
754 :
755 :
756 :
757 :
758 :
759 :
760 :
761 :
762 :
763 :
764 :
765 :
766 :
767 :
768 :
769 :
770 :
771 :
772 :
773 :
774 :
775 :
776 :
777 :
778 :
779 :
780 :
781 :
782 :
783 :
784 :
785 :
786 :
787 :
788 :
789 :
790 :
791 :
792 :
793 :
794 :
795 :
796 :
797 :
798 :
799 :
800 :
801 :
802 :
803 :
804 :
805 :
806 :
807 :
808 :
809 :
810 :
811 :
812 :
813 :
814 :
815 :
816 :
817 :
818 :
819 :
820 :
821 :
822 :
823 :
824 :
825 :
826 :
827 :
828 :
829 :
830 :
831 :
832 :
833 :
834 :
835 :
836 :
837 :
838 :
839 :
840 :
841 :
842 :
843 :
844 :
845 :
846 :
847 :
848 :
849 :
850 :
851 :
852 :
853 :
854 :
855 :
856 :
857 :
858 :
859 :
860 :
861 :
862 :
863 :
864 :
865 :
866 :
867 :
868 :
869 :
870 :
871 :
872 :
873 :
874 :
875 :
876 :
877 :
878 :
879 :
880 :
881 :
882 :
883 :
884 :
885 :
886 :
887 :
888 :
889 :
890 :
891 :
892 :
893 :
894 :
895 :
896 :
897 :
898 :
899 :
900 :
901 :
902 :
903 :
904 :
905 :
906 :
907 :
908 :
909 :
910 :
911 :
912 :
913 :
914 :
915 :
916 :
917 :
918 :
919 :
920 :
921 :
922 :
923 :
924 :
925 :
926 :
927 :
928 :
929 :
930 :
931 :
932 :
933 :
934 :
935 :
936 :
937 :
938 :
939 :
940 :
941 :
942 :
943 :
944 :
945 :
946 :
947 :
948 :
949 :
950 :
951 :
952 :
953 :
954 :
955 :
956 :
957 :
958 :
959 :
960 :
961 :
962 :
963 :
964 :
965 :
966 :
967 :
968 :
969 :
970 :
971 :
972 :
973 :
974 :
975 :
976 :
977 :
978 :
979 :
980 :
981 :
982 :
983 :
984 :
985 :
986 :
987 :
988 :
989 :
990 :
991 :
992 :
993 :
994 :
995 :
996 :
997 :
998 :
999 :
1000 :
1001 :
1002 :
1003 :
1004 :
1005 :
1006 :
1007 :
1008 :
1009 :
1010 :
1011 :
1012 :
1013 :
1014 :
1015 :
1016 :
1017 :
1018 :
1019 :
1020 :
1021 :
1022 :
1023 :
1024 :
1025 :
1026 :
1027 :
1028 :
1029 :
1030 :
1031 :
1032 :
1033 :
1034 :
1035 :
1036 :
1037 :
1038 :
1039 :
1040 :
1041 :
1042 :
1043 :
1044 :
1045 :
1046 :
1047 :
1048 :
1049 :
1050 :
1051 :
1052 :
1053 :
1054 :
1055 :
1056 :
1057 :
1058 :
1059 :
1060 :
1061 :
1062 :
1063 :
1064 :
1065 :
1066 :
1067 :
1068 :
1069 :
1070 :
1071 :
1072 :
1073 :
1074 :
1075 :
1076 :
1077 :
1078 :
1079 :
1080 :
1081 :
1082 :
1083 :
1084 :
1085 :
1086 :
1087 :
1088 :
1089 :
1090 :
1091 :
1092 :
1093 :
1094 :
1095 :
1096 :
1097 :
1098 :
1099 :
1100 :
1101 :
1102 :
1103 :
1104 :
1105 :
1106 :
1107 :
1108 :
1109 :
1110 :
1111 :
1112 :
1113 :
1114 :
1115 :
1116 :
1117 :
1118 :
1119 :
1120 :
1121 :
1122 :
1123 :
1124 :
1125 :
1126 :
1127 :
1128 :
1129 :
1130 :
1131 :
1132 :
1133 :
1134 :
1135 :
1136 :
1137 :
1138 :
1139 :
1140 :
1141 :
1142 :
1143 :
1144 :
1145 :
1146 :
1147 :
1148 :
1149 :
1150 :
1151 :
1152 :
1153 :
1154 :
1155 :
1156 :
1157 :
1158 :
1159 :
1160 :
1161 :
1162 :
1163 :
1164 :
1165 :
1166 :
1167 :
1168 :
1169 :
1170 :
1171 :
1172 :
1173 :
1174 :
1175 :
1176 :
1177 :
1178 :
1179 :
1180 :
1181 :
1182 :
1183 :
1184 :
1185 :
1186 :
1187 :
1188 :
1189 :
1190 :
1191 :
1192 :
1193 :
1194 :
1195 :
1196 :
1197 :
1198 :
1199 :
1200 :
1201 :
1202 :
1203 :
1204 :
1205 :
1206 :
1207 :
1208 :
1209 :
1210 :
1211 :
1212 :
1213 :
1214 :
1215 :
1216 :
1217 :
1218 :
1219 :
1220 :
1221 :
1222 :
1223 :
1224 :
1225 :
1226 :
1227 :
1228 :
1229 :
1230 :
1231 :
1232 :
1233 :
1234 :
1235 :
1236 :
1237 :
1238 :
1239 :
1240 :
1241 :
1242 :
1243 :
1244 :
1245 :
1246 :
1247 :
1248 :
1249 :
1250 :
1251 :
1252 :
1253 :
1254 :
1255 :
1256 :
1257 :
1258 :
1259 :
1260 :
1261 :
1262 :
1263 :
1264 :
1265 :
1266 :
1267 :
1268 :
1269 :
1270 :
1271 :
1272 :
1273 :
1274 :
1275 :
1276 :
1277 :
1278 :
1279 :
1280 :
1281 :
1282 :
1283 :
1284 :
1285 :
1286 :
1287 :
1288 :
1289 :
1290 :
1291 :
1292 :
1293 :
1294 :
1295 :
1296 :
1297 :
1298 :
1299 :
1300 :
1301 :
1302 :
1303 :
1304 :
1305 :
1306 :
1307 :
1308 :
1309 :
1310 :
1311 :
1312 :
1313 :
1314 :
1315 :
1316 :
1317 :
1318 :
1319 :
1320 :
1321 :
1322 :
1323 :
1324 :
1325 :
1326 :
1327 :
1328 :
1329 :
1330 :
1331 :
1332 :
1333 :
1334 :
1335 :
1336 :
1337 :
1338 :
1339 :
1340 :
1341 :
1342 :
1343 :
1344 :
1345 :
1346 :
1347 :
1348 :
1349 :
1350 :
1351 :
1352 :
1353 :
1354 :
1355 :
1356 :
1357 :
1358 :
1359 :
1360 :
1361 :
1362 :
1363 :
1364 :
1365 :
1366 :
1367 :
1368 :
1369 :
1370 :
1371 :
1372 :
1373 :
1374 :
1375 :
1376 :
1377 :
1378 :
1379 :
1380 :
1381 :
1382 :
1383 :
1384 :
1385 :
1386 :
1387 :
1388 :
1389 :
1390 :
1391 :
1392 :
1393 :
1394 :
1395 :
1396 :
1397 :
1398 :
1399 :
1400 :
1401 :
1402 :
1403 :
1404 :
1405 :
1406 :
1407 :
1408 :
1409 :
1410 :
1411 :
1412 :
1413 :
1414 :
1415 :
1416 :
1417 :
1418 :
1419 :
1420 :
1421 :
1422 :
1423 :
1424 :
1425 :
1426 :
1427 :
1428 :
1429 :
1430 :
1431 :
1432 :
1433 :
1434 :
1435 :
1436 :
1437 :
1438 :
1439 :
1440 :
1441 :
1442 :
1443 :
1444 :
1445 :
1446 :
1447 :
1448 :
1449 :
1450 :
1451 :
1452 :
1453 :
1454 :
1455 :
1456 :
1457 :
1458 :
1459 :
1460 :
1461 :
1462 :
1463 :
1464 :
1465 :
1466 :
1467 :
1468 :
1469 :
1470 :
1471 :
1472 :
1473 :
1474 :
1475 :
1476 :
1477 :
1478 :
1479 :
1480 :
1481 :
1482 :
1483 :
1484 :
1485 :
1486 :
1487 :
1488 :
1489 :
1490 :
1491 :
1492 :
1493 :
1494 :
1495 :
1496 :
1497 :
1498 :
1499 :
1500 :
1501 :
1502 :
1503 :
1504 :
1505 :
1506 :
1507 :
1508 :
1509 :
1510 :
1511 :
1512 :
1513 :
1514 :
1515 :
1516 :
1517 :
1518 :
1519 :
1520 :
1521 :
1522 :
1523 :
1524 :
1525 :
1526 :
1527 :
1528 :
1529 :
1530 :
1531 :
1532 :
1533 :
1534 :
1535 :
1536 :
1537 :
1538 :
1539 :
1540 :
1541 :
1542 :
1543 :
1544 :
1545 :
1546 :
1547 :
1548 :
1549 :
1550 :
1551 :
1552 :
1553 :
1554 :
1555 :
1556 :
1557 :
1558 :
1559 :
1560 :
1561 :
1562 :
1563 :
1564 :
1565 :
1566 :
1567 :
1568 :
1569 :
1570 :
1571 :
1572 :
1573 :
1574 :
1575 :
1576 :
1577 :
1578 :
1579 :
1580 :
1581 :
1582 :
1583 :
1584 :
1585 :
1586 :
1587 :
1588 :
1589 :
1590 :
1591 :
1592 :
1593 :
1594 :
1595 :
1596 :
1597 :
1598 :
1599 :
1600 :
1601 :
1602 :
1603 :
1604 :
1605 :
1606 :
1607 :
1608 :
1609 :
1610 :
1611 :
1612 :
1613 :
1614 :
1615 :
1616 :
1617 :
1618 :
1619 :
1620 :
1621 :
1622 :
1623 :
1624 :
1625 :
1626 :
1627 :
1628 :
1629 :
1630 :
1631 :
1632 :
1633 :
1634 :
1635 :
1636 :
1637 :
1638 :
1639 :
1640 :
1641 :
1642 :
1643 :
1644 :
1645 :
1646 :
1647 :
1648 :
1649 :
1650 :
1651 :
1652 :
1653 :
1654 :
1655 :
1656 :
1657 :
1658 :
1659 :
1660 :
1661 :
1662 :
1663 :
1664 :
1665 :
1666 :
1667 :
1668 :
1669 :
1670 :
1671 :
1672 :
1673 :
1674 :
1675 :
1676 :
1677 :
1678 :
1679 :
1680 :
1681 :
1682 :
1683 :
1684 :
1685 :
1686 :
1687 :
1688 :
1689 :
1690 :
1691 :
1692 :
1693 :
1694 :
1695 :
1696 :
1697 :
1698 :
1699 :
1700 :
1701 :
1702 :
1703 :
1704 :
1705 :
1706 :
1707 :
1708 :
1709 :
1710 :
1711 :
1712 :
1713 :
1714 :
1715 :
1716 :
1717 :
1718 :
1719 :
1720 :
1721 :
1722 :
1723 :
1724 :
1725 :
1726 :
1727 :
1728 :
1729 :
1730 :
1731 :
1732 :
1733 :
1734 :
1735 :
1736 :
1737 :
1738 :
1739 :
1740 :
1741 :
1742 :
1743 :
1744 :
1745 :
1746 :
1747 :
1748 :
1749 :
1750 :
1751 :
1752 :
1753 :
1754 :
1755 :
1756 :
1757 :
1758 :
1759 :
1760 :
1761 :
1762 :
1763 :
1764 :
1765 :
1766 :
1767 :
1768 :
1769 :
1770 :
1771 :
1772 :
1773 :
1774 :
1775 :
1776 :
1777 :
1778 :
1779 :
1780 :
1781 :
1782 :
1783 :
1784 :
1785 :
1786 :
1787 :
1788 :
1789 :
1790 :
1791 :
1792 :
1793 :
1794 :
1795 :
1796 :
1797 :
1798 :
1799 :
1800 :
1801 :
1802 :
1803 :
1804 :
1805 :
1806 :
1807 :
1808 :
1809 :
1810 :
1811 :
1812 :
1813 :
1814 :
1815 :
1816 :
1817 :
1818 :
1819 :
1820 :
1821 :
1822 :
1823 :
1824 :
1825 :
1826 :
1827 :
1828 :
1829 :
1830 :
1831 :
1832 :
1833 :
1834 :
1835 :
1836 :
1837 :
1838 :
1839 :
1840 :
1841 :
1842 :
1843 :
1844 :
1845 :
1846 :
1847 :
1848 :
1849 :
1850 :
1851 :
1852 :
1853 :
1854 :
1855 :
1856 :
1857 :
1858 :
1859 :
1860 :
1861 :
1862 :
1863 :
1864 :
1865 :
1866 :
1867 :
1868 :
1869 :
1870 :
1871 :
1872 :
1873 :
1874 :
1875 :
1876 :
1877 :
1878 :
1879 :
1880 :
1881 :
1882 :
1883 :
1884 :
1885 :
1886 :
1887 :
1888 :
1889 :
1890 :
1891 :
1892 :
1893 :
1894 :
1895 :
1896 :
1897 :
1898 :
1899 :
1900 :
1901 :
1902 :
1903 :
1904 :
1905 :
1906 :
1907 :
1908 :
1909 :
1910 :
1911 :
1912 :
1913 :
1914 :
1915 :
1916 :
1917 :
1918 :
1919 :
1920 :
1921 :
1922 :
1923 :
1924 :
1925 :
1926 :
1927 :
1928 :
1929 :
1930 :
1931 :
1932 :
1933 :
1934 :
1935 :
1936 :
1937 :
1938 :
1939 :
1940 :
1941 :
1942 :
1943 :
1944 :
1945 :
1946 :
1947 :
1948 :
1949 :
1950 :
1951 :
1952 :
1953 :
1954 :
1955 :
1956 :
1957 :
1958 :
1959 :
1960 :
1961 :
1962 :
1963 :
1964 :
1965 :
1966 :
1967 :
1968 :
1969 :
1970 :
1971 :
1972 :
1973 :
1974 :
1975 :
1976 :
1977 :
1978 :
1979 :
1980 :
1981 :
1982 :
1983 :
1984 :
1985 :
1986 :
1987 :
1988 :
1989 :
1990 :
1991 :
1992 :
1993 :
1994 :
1995 :
1996 :
1997 :
1998 :
1999 :
2000 :
2001 :
2002 :
2003 :
2004 :
2005 :
2006 :
2007 :
2008 :
2009 :
2010 :
2011 :
2012 :
2013 :
2014 :
2015 :
2016 :
2017 :
2018 :
2019 :
2020 :
2021 :
2022 :
2023 :
2024 :
2025 :
2026 :
2027 :
2028 :
2029 :
2030 :
2031 :
2032 :
2033 :
2034 :
2035 :
2036 :
2037 :
2038 :
2039 :
2040 :
2041 :
2042 :
2043 :
2044 :
2045 :
2046 :
2047 :
2048 :
2049 :
2050 :
2051 :
2052 :
2053 :
2054 :
2055 :
2056 :
2057 :
2058 :
2059 :
2060 :
2061 :
2062 :
2063 :
2064 :
2065 :
2066 :
2067 :
2068 :
2069 :
2070 :
2071 :
2072 :
2073 :
2074 :
2075 :
2076 :
2077 :
2078 :
2079 :
2080 :
2081 :
2082 :
2083 :
2084 :
2085 :
2086 :
2087 :
2088 :
2089 :
2090 :
2091 :
2092 :
2093 :
2094 :
2095 :
2096 :
2097 :
2098 :
2099 :
2100 :
2101 :
2102 :
2103 :
2104 :
2105 :
2106 :
2107 :
2108 :
2109 :
2110 :
2111 :
2112 :
2113 :
2114 :
2115 :
2116 :
2117 :
2118 :
2119 :
2120 :
2121 :
2122 :
2123 :
2124 :
2125 :
2126 :
2127 :
2128 :
2129 :
2130 :
2131 :
2132 :
2133 :
2134 :
2135 :
2136 :
2137 :
2138 :
2139 :
2140 :
2141 :
2142 :
2143 :
2144 :
2145 :
2146 :
2147 :
2148 :
2149 :
2150 :
2151 :
2152 :
2153 :
2154 :
2155 :
2156 :
2157 :
2158 :
2159 :
2160 :
2161 :
2162 :
2163 :
2164 :
2165 :
2166 :
2167 :
2168 :
2169 :
2170 :
2171 :
2172 :
2173 :
2174 :
2175 :
2176 :
2177 :
2178 :
2179 :
2180 :
2181 :
2182 :
2183 :
2184 :
2185 :
2186 :
2187 :
2188 :
2189 :
2190 :
2191 :
2192 :
2193 :
2194 :
2195 :
2196 :
2197 :
2198 :
2199 :
2200 :
2201 :
2202 :
2203 :
2204 :
2205 :
2206 :
2207 :
2208 :
2209 :
2210 :
2211 :
2212 :
2213 :
2214 :
2215 :
2216 :
2217 :
2218 :
2219 :
2220 :
2221 :
2222 :
2223 :
2224 :
2225 :
2226 :
2227 :
2228 :
2229 :
2230 :
2231 :
2232 :
2233 :
2234 :
2235 :
2236 :
2237 :
2238 :
2239 :
2240 :
2241 :
2242 :
2243 :
2244 :
2245 :
2246 :
2247 :
2248 :
2249 :
2250 :
2251 :
2252 :
2253 :
2254 :
2255 :
2256 :
2257 :
2258 :
2259 :
2260 :
2261 :
2262 :
2263 :
2264 :
2265 :
2266 :
2267 :
2268 :
2269 :
2270 :
2271 :
2272 :
2273 :
2274 :
2275 :
2276 :
2277 :
2278 :
2279 :
2280 :
2281 :
2282 :
2283 :
2284 :
2285 :
2286 :
2287 :
2288 :
2289 :
2290 :
2291 :
2292 :
2293 :
2294 :
2295 :
2296 :
2297 :
2298 :
2299 :
2300 :
2301 :
2302 :
2303 :
2304 :
2305 :
2306 :
2307 :
2308 :
2309 :
2310 :
2311 :
2312 :
2313 :
2314 :
2315 :
2316 :
2317 :
2318 :
2319 :
2320 :
2321 :
2322 :
2323 :
2324 :
2325 :
2326 :
2327 :
2328 :
2329 :
2330 :
2331 :
2332 :
2333 :
2334 :
2335 :
2336 :
2337 :
2338 :
2339 :
2340 :
2341 :
2342 :
2343 :
2344 :
2345 :
2346 :
2347 :
2348 :
2349 :
2350 :
2351 :
2352 :
2353 :
2354 :
2355 :
2356 :
2357 :
2358 :
2359 :
2360 :
2361 :
2362 :
2363 :
2364 :
2365 :
2366 :
2367 :
2368 :
2369 :
2370 :
2371 :
2372 :
2373 :
2374 :
2375 :
2376 :
2377 :
2378 :
2379 :
2380 :
2381 :
2382 :
2383 :
2384 :
2385 :
2386 :
2387 :
2388 :
2389 :
2390 :
2391 :
2392 :
2393 :
2394 :
2395 :
2396 :
2397 :
2398 :
2399 :
2400 :
2401 :
2402 :
2403 :
2404 :
2405 :
2406 :
2407 :
2408 :
2409 :
2410 :
2411 :
2412 :
2413 :
2414 :
2415 :
2416 :
2417 :
2418 :
2419 :
2420 :
2421 :
2422 :
2423 :
2424 :
2425 :
2426 :
2427 :
2428 :
2429 :
2430 :
2431 :
2432 :
2433 :
2434 :
2435 :
2436 :
2437 :
2438 :
2439 :
2440 :
2441 :
2442 :
2443 :
2444 :
2445 :
2446 :
2447 :
2448 :
2449 :
2450 :
2451 :
2452 :
2453 :
2454 :
2455 :
2456 :
2457 :
2458 :
2459 :
2460 :
2461 :
2462 :
2463 :
2464 :
2465 :
2466 :
2467 :
2468 :
2469 :
2470 :
2471 :
2472 :
2473 :
2474 :
2475 :
2476 :
2477 :
2478 :
2479 :
2480 :
2481 :
2482 :
2483 :
2484 :
2485 :
2486 :
class= >/* " notpretty " de l'id= " codeSnippet667511 " de
 codé directement dans l'URL
// par exemple, URL L "/~FlatUrlSpace/1-401 " se rapportera à la chemise avec FID 1-401
// et URL L "/~FlatUrlSpace/1-401/2-8fb " se rapporteront au message avec MI 2-8fb
// dans cette chemise.
// mais se rappellent que les FID/MID doivent être à long terme, c.-à-d. GUID-Globcnt, 
// le replid utilisé ci-dessus est simplement d'expliquer l'idée plus simple.
#DEFINE WSZ_URL_FLAT_FOLDER_SPACE L " /-FlatUrlSpace-/ « 
cwchUrlFlatFolderSpace 16 de #define

Propriété de // qui définit, qu'une chemise soit bloquée ou pas
#define PR_SECURE_IN_SITE PROP_TAG (PT_BOOLEAN, pidAdminMin+0xE)

// PR_LOCAL_COMMIT_TIME est maintenu sur des chemises et des messages. Il est
// FileTime quand l'objet a été modifié pour la dernière fois sur le MDB donné. Il est mis à jour
// quand l'objet est modifié (replié y compris dans le changement). C'est 
// strictement calculé, non-transmissible et non-copyable.
#define PR_LOCAL_COMMIT_TIME PROP_TAG (PT_SYSTIME, pidAdminMin+0x79)

// PR_LOCAL_COMMIT_TIME_MAX est maintenu sur des chemises seulement. 
// c'est le >= PR_LOCAL_COMMIT_TIME de tous les messages dans la chemise. Il est mis à jour
// quand n'importe quel message dans la chemise est modifié. Ceci est strictement calculé,
// non-transmissible et non-copyable.
#define PR_LOCAL_COMMIT_TIME_MAX PROP_TAG (PT_SYSTIME, pidAdminMin+0x7a)

// PR_DELETED_COUNT_TOTAL est maintenu sur des chemises seulement.
// c'est tout le nombre de messages supprimés dans cette chemise du commencement
// de temps (bien, plutôt du temps ce dispositif est arrivé, des chemises de
les vieux serveurs de // qui sont améliorés démarreront par 0). Si le compte déborde
// 4 bytes, il reprendra à 0. C'est mis à jour toutes les fois qu'un message dans
la chemise de // est supprimée. Ceci est strictement calculé, non-transmitabble et 
// non-copyable.
#define PR_DELETED_COUNT_TOTAL PROP_TAG (PT_LONG, pidAdminMin+0x7b)

// PR_AUTO_RESET est maintenu sur des messages seulement. Son PT_MV_CLSID et est supprimé
// (par le magasin) lorsqu'un message est sauvé, s'il n'a pas été 
// a explicitement placé sur le message entre le moment où il a été ouvert et sauvé 
// (par l'utilisateur/$$etAPP qui a ouvert et plus tard a sauvé le message). 
// on le prévoit pour être employé par des agents de rappel de service d'async.
#define PR_AUTO_RESET PROP_TAG (PT_MV_CLSID, pidAdminMin+0x7c)

/*------------------------------------------------------------------------
 *
 * Propriétés d'objet de TABLE
 *
 * Chaîne d'identification : 0x662F-0x662F
 *
 *-----------------------------------------------------------------------*

la propriété de //This peut être employée dans une table de contenu pour obtenir PR_ENTRYID retourné
//as un entryid à long terme au lieu d'un entryid à court terme.
#define PR_LONG - _ENTRYID_FROM_TABLE PROP_TAG (PT_BINARY, pidSpecialMin) de LIMITE

// ceci est seulement la propriété lue qui est employée pour les tables de contenu qui incluent
entrées de subfolder de //.
#define PR_SUBFOLDER PROP_TAG (PT_BOOLEAN, pidAdminMin+0x78)


/*------------------------------------------------------------------------
 *
 * Propriétés d'ENVELOPPE du passage « MTE »
 *
 * Chaîne d'identification :  0x66E0-0x66FF
 *
 *-----------------------------------------------------------------------*

#define PR_ORIGINATOR_NAME PROP_TAG (PT_TSTRING, pidMessageWriteableMin+0x3)
#define PR_ORIGINATOR_ADDR PROP_TAG (PT_TSTRING, pidMessageWriteableMin+0x4)
#define PR_ORIGINATOR_ADDRTYPE PROP_TAG (PT_TSTRING, pidMessageWriteableMin+0x5)
#define PR_ORIGINATOR_ENTRYID PROP_TAG (PT_BINARY, pidMessageWriteableMin+0x6)
#define PR_ARRIVAL_TIME PROP_TAG (PT_SYSTIME, pidMessageWriteableMin+0x7)
#define PR_TRACE_INFO PROP_TAG (PT_BINARY, pidMessageWriteableMin+0x8)
#define PR_INTERNAL_TRACE_INFO PROP_TAG (PT_BINARY, pidMessageWriteableMin+0x12)
#define PR_SUBJECT_TRACE_INFO PROP_TAG (PT_BINARY, pidMessageWriteableMin+0x9)
#define PR_RECIPIENT_NUMBER PROP_TAG (PT_LONG, pidMessageWriteableMin+0xA)
#define PR_MTS_SUBJECT_ID PROP_TAG (PT_BINARY, pidMessageWriteableMin+0xB)
#define PR_REPORT_DESTINATION_NAME PROP_TAG (PT_TSTRING, pidMessageWriteableMin+0xC)
#define PR_REPORT_DESTINATION_ENTRYID PROP_TAG (PT_BINARY, pidMessageWriteableMin+0xD)
#define PR_CONTENT_SEARCH_KEY PROP_TAG (PT_BINARY, pidMessageWriteableMin+0xE)
#define PR_FOREIGN_ID PROP_TAG (PT_BINARY, pidMessageWriteableMin+0xF)
#define PR_FOREIGN_REPORT_ID PROP_TAG (PT_BINARY, pidMessageWriteableMin+0x10)
#define PR_FOREIGN_SUBJECT_ID PROP_TAG (PT_BINARY, pidMessageWriteableMin+0x11)
#define PR_PROMOTE_PROP_ID_LIST PROP_TAG (PT_BINARY, pidMessageWriteableMin+0x13)
#DEFINE PR_MTS_ID PR_MESSAGE_SUBMISSION_ID
#DEFINE PR_MTS_REPORT_ID PR_MESSAGE_SUBMISSION_ID

/*------------------------------------------------------------------------
 *
 * Format de propriétés de trace
 * PR_TRACE_INFO
 * PR_INTERNAL_TRACE_INFO
 *
 *-----------------------------------------------------------------------*

#define MAX_ADMD_NAME_SIZ 17
#define MAX_PRMD_NAME_SIZ 17
#define MAX_COUNTRY_NAME_SIZ 4
#define MAX_MTA_NAME_SIZ 33

#define ADMN_PAD 3
#define PRMD_PAD 3
#define COUNTRY_PAD 0
#define MTA_PAD 3
#define PRMD_PAD_FOR_ACTIONS 2
#define MTA_PAD_FOR_ACTIONS 2

struct de typedef {
    LONG lAction ;                // l'action de cheminement l'emplacement de découverte
                                     // a pris. (1984 actions seulement)
    ftArrivalTime de FILETIME ;          // le temps à l'où le communiqué
                                     // est entré dans l'emplacement de découverte.
    ftDeferredTime de FILETIME ;         // le temps sont quel l'emplacement de découverte
                                     // a libéré le message.
    rgchADMDName de char [MAX_ADMD_NAME_SIZ+ADMN_PAD] ;			 	// ADMD
    rgchCountryName de char [MAX_COUNTRY_NAME_SIZ+COUNTRY_PAD] ; 	Pays de //
    rgchPRMDId de char [MAX_PRMD_NAME_SIZ+PRMD_PAD] ;              	// PRMD
    rgchAttADMDName de char [MAX_ADMD_NAME_SIZ+ADMN_PAD] ;       	// a essayé ADMD
    rgchAttCountryName de char [MAX_COUNTRY_NAME_SIZ+COUNTRY_PAD] ;  // a essayé le pays
    rgchAttPRMDId de char [MAX_PRMD_NAME_SIZ+PRMD_PAD_FOR_ACTIONS] ;	// a essayé le PRMD
    bAdditionalActions de BYTE ;									// 1998 actions additionnelles
} TRACEENTRY, LOIN * LPTRACEENTRY ;

struct de typedef {
    cEntries d'ULONG ;               Nombre de // d'entrées de trace
    TRACEENTRY rgtraceentry [MAPI_DIM] ; choix de // d'entrées de trace
} TRACEINFO, LOIN * LPTRACEINFO ;

struct de typedef
{
	LONG lAction ;				// la mesure 1984 de cheminement que le domaine de découverte a prise.
	ftArrivalTime de FILETIME ;			// le temps à l'où le communiqué est entré dans le domaine de découverte.
	ftDeferredTime de FILETIME ;			Sont // le temps ce qui le domaine la découverte a libéré le message.
    rgchADMDName de char [MAX_ADMD_NAME_SIZ+ADMN_PAD] ;				// ADMD
    rgchCountryName de char [MAX_COUNTRY_NAME_SIZ+COUNTRY_PAD] ; 		Pays de //
    rgchPRMDId de char [MAX_PRMD_NAME_SIZ+PRMD_PAD] ;             	// PRMD
    rgchAttADMDName de char [MAX_ADMD_NAME_SIZ+ADMN_PAD] ;       		// a essayé ADMD
    rgchAttCountryName de char [MAX_COUNTRY_NAME_SIZ+COUNTRY_PAD] ;	// a essayé le pays
    rgchAttPRMDId de char [MAX_PRMD_NAME_SIZ+PRMD_PAD] ;		        // a essayé le PRMD
    rgchMTAName de char [MAX_MTA_NAME_SIZ+MTA_PAD] ; 		            Nom de MTA de //
    rgchAttMTAName de char [MAX_MTA_NAME_SIZ+MTA_PAD_FOR_ACTIONS] ;	// a essayé le nom de MTA
    bAdditionalActions de BYTE ;										// 1988 actions additionnelles
} INTTRACEENTRY, *PINTTRACEENTRY ;


struct de typedef
{
	cEntries d'ULONG ;					Nombre de // d'entrées de trace
	INTTRACEENTRY rgIntTraceEntry [MAPI_DIM] ;	choix de // d'entrées internes de trace
} INTTRACEINFO, *PINTTRACEINFO ;


/*------------------------------------------------------------------------
 *
 * déclaration d'interface de « IExchangeModifyTable »
 *
 * Utilisé pour obtenir/placer les règles et le contrôle d'accès sur des chemises.
 *
 *-----------------------------------------------------------------------*


ulRowFlags de/* *
#DEFINE ROWLIST_REPLACE ((ULONG) 1)

#DEFINE ROW_ADD ((ULONG) 1)
#DEFINE ROW_MODIFY ((ULONG) 2)
#DEFINE ROW_REMOVE ((ULONG) 4)
#DEFINE ROW_EMPTY (ROW_ADD|ROW_REMOVE)

_ROWENTRY de struct de typedef
{
	ulRowFlags d'ULONG ;
	cValues d'ULONG ;
	rgPropVals de LPSPropValue ;
} ROWENTRY, LOIN * LPROWENTRY ;

_ROWLIST de struct de typedef
{
	cEntries d'ULONG ;
	aEntries de ROWENTRY [MAPI_DIM] ;
} ROWLIST, LOIN * LPROWLIST ;

#DEFINE EXCHANGE_IEXCHANGEMODIFYTABLE_METHODS) (D'IPURE \
	MAPIMETHOD) (de GetLastError \
		(, De hResult de THIS_ HRESULT \
				, D'ulFlags d'ULONG \
				De LPMAPIERROR lppMAPIError LOIN *) IPURE ;		\
	MAPIMETHOD (GetTable) \
		(, D'ulFlags de THIS_ ULONG \
				LPMAPITABLE LOIN *) IPURE lppTable ;			\
	MAPIMETHOD) (de ModifyTable \
		(, D'ulFlags de THIS_ ULONG \
				lpMods de LPROWLIST) IPURE ;

INTERFACE de #undef
INTERFACE IExchangeModifyTable de #define
DECLARE_MAPI_INTERFACE_ (IExchangeModifyTable, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGEMODIFYTABLE_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeModifyTable, LPEXCHANGEMODIFYTABLE) ;

Peu de drapeau spécial de/* pour GetContentsTable, GetHierarchyTable et
	OpenEntry.
	Soutenu par > serveurs 5.x 
	Si ensemble dans GetContentsTable et GetHierarchyTable
	nous montrerons seulement les articles qui sont doux supprimé, c.-à-d. supprimés
	par l'utilisateur mais pas encore purgé du système. Si ensemble dans OpenEntry
	nous ouvrirons cet article même si c'est doux supprimé *
Le peu de drapeau de/* ne doit pas se heurter par des définitions existantes dans Mapi *
/****** MAPI_UNICODE ((ULONG) 0x80000000) en haut *
/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) ci-dessous *
/****** MAPI_ASSOCIATED ((ULONG) 0x00000040) ci-dessous *
/****** CONVENIENT_DEPTH ((ULONG) 0x00000001) *
#define SHOW_SOFT_DELETES ((ULONG) 0x00000002)
#define SHOW_SUBFOLDERS ((ULONG) 0x00000004)

// a réservé le peu de drapeau - ne pas placer
#define MAPI_RESERVED1 ((ULONG) 0x00010000)

// ne bloquent pas cet OpenMessage (OpenEntry de MAPI)
#define MDB_OPEN_MSG_NO_BLOCK ((ULONG) 0x00000020)

// ouvrent un MI chez SaveChanges 
/****** KEEP_OPEN_READONLY ((ULONG) 0x00000001) *
/****** KEEP_OPEN_READWRITE ((ULONG) 0x00000002) *
/****** FORCE_SAVE ((ULONG) 0x00000004) *
/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) *
#define MDB_SAVE_MSG_UNLOCK ((ULONG) 0x00000040)	


Peu de drapeau spécial de/* pour DeleteFolder
	Soutenu par > serveurs 5.x 
	Si réglé le serveur supprimera dur la chemise (c.-à-d. il ne sera pas
	maintenu pour le rétablissement postérieur) *
Le peu de drapeau de/* ne doit pas se heurter par des définitions existantes dans Mapi *
/* DeleteFolder *
/#define DEL_MESSAGES de ***** ((ULONG) 0x00000001) *
/#define FOLDER_DIALOG de ***** ((ULONG) 0x00000002) *
/#define DEL_FOLDERS de ***** ((ULONG) 0x00000004) *
/* EmptyFolder *
/#define DEL_ASSOCIATED de ***** ((ULONG) 0x00000008) *

#define DELETE_HARD_DELETE ((ULONG) 0x00000010)

Détails de contrôle d'accès de/* *

//Properties
#define PR_MEMBER_ID PROP_TAG (PT_I8, pidSpecialMin+0x01)
#define PR_MEMBER_NAME PROP_TAG (PT_TSTRING, pidSpecialMin+0x02)
#DEFINE PR_MEMBER_ENTRYID PR_ENTRYID
#define PR_MEMBER_RIGHTS PROP_TAG (PT_LONG, pidSpecialMin+0x03)

peu de //Security
DROITES du typedef DWORD ;
#define 0x0000001L frightsReadAny
frightsCreate 0x0000002L de #define
0x0000008L frightsEditOwned par #define
0x0000010L frightsDeleteOwned par #define
#define 0x0000020L frightsEditAny
#define 0x0000040L frightsDeleteAny
frightsCreateSubfolder 0x0000080L de #define
frightsOwner 0x0000100L de #define
NOTE du frightsContact 0x0000200L // de #define : pas une partie de rightsAll
#define 0x0000400L frightsVisible
rightsNone 0x00000000 de #define
#define rightsReadOnly frightsReadAny
rightsReadWrite de #define (frightsReadAny|frightsEditAny)
rightsAll 0x00005FBL de #define


//
Droits d'accès spécifiques de boîte aux lettres de //.
//

//
Note de // que les droites de sdpermUser n'existent dans aucun descripteur de sécurité, elles
// sont maintenus sur l'objet de boîte aux lettres dans le magasin, et initialisés du
objet d'utilisateur de // dans le DS.
//
SUPPRESSION de fsdpermUserDeleteMailbox de #define
fsdpermUserMailboxOwner 0x00000001 de #define
fsdpermUserSendAs 0x00000002 de #define
fsdpermUserPrimaryUser 0x00000004 de #define


sdpermUserGenericRead de #define (STANDARD_RIGHTS_READ)

// générique s'exécutent
sdpermUserGenericExecute de #define (STANDARD_RIGHTS_EXECUTE)
// générique écrivent
sdpermUserGenericWrite de #define (STANDARD_RIGHTS_WRITE | fsdpermUserDeleteMailbox)

// générique tous
sdpermUserGenericAll de #define (STANDARD_RIGHTS_ALL | fsdpermUserMailboxOwner | fsdpermUserSendAs | fsdpermUserPrimaryUser)

//
Droites de détail de message de //.
//
typedef DWORD SDRIGHTS ;

#define 0x00000001 fsdrightReadBody // ** SEULEMENT SUR LES MESSAGES, MÊMES QUE FILE_READ_DATA
fsdrightListContents 0x00000001 // de #define ** SEULEMENT SUR DES CHEMISES, MÊMES QUE FILE_LIST_DATA - IGNORÉ
#define 0x00000002 fsdrightWriteBody // ** SEULEMENT SUR LES MESSAGES, MÊMES QUE FILE_WRITE_DATA
fsdrightCreateItem de #define 0x00000002 // ** SEULEMENT SUR les chemises, MÊMES QUE FILE_ADD_FILE

fsdrightAppendMsg de #define 0x00000004 // ** SEULEMENT SUR LES MESSAGES, MÊMES QUE FILE_WRITE_DATA. IMPOSÉ PAR DES STATISTIQUES FINANCIÈRE INTERNATIONALE.
fsdrightCreateContainer de #define 0x00000004 // ** SEULEMENT SUR LES CHEMISES, MÊMES QUE FILE_ADD_FILE

fsdrightReadProperty 0x00000008 // ** MÊME de #define QUE FILE_READ_EA
fsdrightWriteProperty 0x00000010 // ** MÊME de #define QUE FILE_WRITE_EA

fsdrightExecute 0x00000020 // de #define mêmes que FILE_EXECUTE/FILE_TRAVERSE.  IMPOSÉ PAR DES STATISTIQUES FINANCIÈRE INTERNATIONALE
#define fsdrightReserved1 0x00000040 // mêmes que FILE_DELETE_CHILD. Actuellement inutilisé
fsdrightReadAttributes 0x00000080 // de #define mêmes que FILE_READ_ATTRIBUTES. Actuellement inutilisé
fsdrightWriteAttributes 0x00000100 // de #define mêmes que FILE_WRITE_ATTRIBUTES. Actuellement inutilisé

fsdrightWriteOwnProperty de #define 0x00000200 // ** SEULEMENT SUR DES MESSAGES
fsdrightDeleteOwnItem de #define 0x00000400 // ** SEULEMENT SUR DES MESSAGES
fsdrightViewItem 0x00000800 de #define
fsdrightOwner de #define 0x00004000 // ** SEULEMENT SUR DES CHEMISES
fsdrightContact de #define 0x00008000 // ** SEULEMENT SUR DES CHEMISES

//
Droites standard de NT de //.
//
fsdrightWriteSD WRITE_DAC de #define
SUPPRESSION de fsdrightDelete de #define
fsdrightWriteOwner WRITE_OWNER de #define
fsdrightReadControl READ_CONTROL de #define
le #define fsdrightSynchronize SYNCHRONISENT

sdrightsNone 0x00000000 de #define
sdrightsBestAccess MAXIMUM_ALLOWED de #define
#define sdrightsReadOnly GENERIC_READ
sdrightsReadWrite GENERIC_READ de #define | GENERIC_WRITE

sdrightsGenericRead de #define (fsdrightReadControl | fsdrightReadBody | fsdrightReadAttributes | fsdrightReadProperty | fsdrightViewItem |\
									 fsdrightSynchronize)
sdrightsGenericWrite de #define (fsdrightReadControl | fsdrightWriteBody | fsdrightWriteAttributes | fsdrightWriteProperty | \
									 fsdrightAppendMsg | fsdrightCreateItem | fsdrightDelete | fsdrightCreateContainer | \
									 fsdrightOwner | fsdrightSynchronize | fsdrightWriteSD | fsdrightWriteOwner)

sdrightsGenericExecute de #define (fsdrightReadControl | fsdrightReadAttributes | fsdrightExecute | fsdrightViewItem | fsdrightSynchronize)

sdrightsGenericAll de #define (fsdrightDelete | fsdrightReadProperty | fsdrightWriteProperty |\
									 fsdrightCreateItem | fsdrightCreateContainer | fsdrightReadControl | fsdrightWriteSD |\
									 fsdrightWriteOwner | fsdrightReadControl | \
									 fsdrightViewItem | fsdrightOwner | \
									 fsdrightWriteOwnProperty | fsdrightDeleteOwnItem  | fsdrightSynchronize | \
									 fsdrightExecute | fsdrightReserved1 | fsdrightReadAttributes | fsdrightWriteAttributes | \
									 fsdrightReadBody | fsdrightWriteBody | fsdrightSynchronize | fsdrightContact)

//
// SDRights qui composent ensemble le rightsOwner.
//
sdrightsFolderOwner de #define (fsdrightWriteProperty | fsdrightOwner | fsdrightWriteSD | fsdrightDelete | \
							fsdrightWriteOwner | fsdrightWriteAttributes)

//
Droites de // qui sont valides sur des chemises.
//
sdrightsFolders de #define (fsdrightDelete | fsdrightReadProperty | fsdrightReadAttributes | \
							fsdrightWriteProperty | fsdrightWriteAttributes | fsdrightWriteOwner | \
							fsdrightReadControl | fsdrightWriteSD | fsdrightExecute | \
							fsdrightCreateContainer | fsdrightViewItem | fsdrightOwner | \
							fsdrightContact | fsdrightCreateItem | fsdrightSynchronize | fsdrightListContents | fsdrightReserved1)

//
Droites de // qui sont valides sur des messages.
//
//
// NOTA: : fsdrightWriteOwnProperty/fsdrightDeleteOwnItem ne sont pas dans cette liste.
//
sdrightsItems de #define (fsdrightDelete | fsdrightReadBody | fsdrightReadAttributes | fsdrightReadProperty | \
							fsdrightWriteProperty | fsdrightWriteBody | fsdrightWriteAttributes | fsdrightReadControl | \
							fsdrightWriteOwner | fsdrightWriteSD | fsdrightViewItem | fsdrightWriteOwnProperty | \
							fsdrightDeleteOwnItem  | fsdrightSynchronize  | fsdrightExecute | fsdrightAppendMsg)

//
// ces droits d'accès sont ignorés dans la détermination d'un ACL canonique.  Puisque le magasin d'échange ignore
// ces droits, leur présence ou absence ne rend pas un ACL canonique.
//

#define sdrightsIgnored (fsdrightExecute | fsdrightAppendMsg | fsdrightContact | fsdrightReserved1)

//
De // définitions compatibles de droites vers l'arrière.
//
msgrightsGenericRead de #define (sdrightsGenericRead et sdrightsItems)
msgrightsGenericWrite de #define (sdrightsGenericWrite et sdrightsItems)
msgrightsGenericExecute de #define (sdrightsGenericExecute et sdrightsItems)
msgrightsGenericAll de #define (sdrightsGenericAll et sdrightsItems)

fldrightsGenericRead de #define (sdrightsGenericRead et sdrightsFolders)
fldrightsGenericWrite de #define (sdrightsGenericWrite et sdrightsFolders)
fldrightsGenericExecute de #define (sdrightsGenericExecute et sdrightsFolders)
fldrightsGenericAll de #define (sdrightsGenericAll et sdrightsFolders)

//
// si l'ensemble dans la zone de commande de RM d'un NTSD, laisse
// un administrateur pour placer explicitement l'écart-type sur un objet.
//
#define EXCHANGE_RM_SET_EXPLICIT_SD 0x01

//
// recherchent l'identification de propriété du guid

#define GUID_PROP_ID (pguid) ((pguid) - >Data1 et 0xffff)
#define GUID_SUB_PROP_ID (pguid) ((pguid) - >Data1 >> 16 et 0xffff)

#define SET_GUID_PROP_ID (pguid, ptag) (pguid) - >Data1 = PROP_ID (ptag)
#define SET_GUID_SUB_PROP_ID (pguid, ptag, subptag) (pguid) - >Data1 = (PROP_ID (ptag) | PROP_ID (subptag) << 16)

, Du #define PROPERTY_GUID (ptag) {PROP_ID (ptag) \
							0x6585, 0x11d3, \
							{0xb6, 0x19, 0x00, 0xaa, 0x00, 0x4b, 0x9c, 0x30}} \

#define SUB_PROPERTY_GUID (ptag, subptag) {PROP_ID (subptag) << 16 | , de PROP_ID (ptag) \
							0x6585, 0x11d3, \
							{0xb6, 0x19, 0x00, 0xaa, 0x00, 0x4b, 0x9c, 0x30}} \


//
Version de transfert de // pour PR_NT_SECURITY_DESCRIPTOR.
//
// en recherchant le descripteur de sécurité pour un objet, l'écart-type retourné est
// réellement composé de structure suivante :
//
// 2 BYTES capitonnant la longueur de données (version y compris)
// version de 2 BYTES
// l'information de sécurité de 4 BYTES (pour SetPrivateObjectSecurity)
// <0 ou more>
// étiquette de propriété de 2 BYTES
// 16 BYTES a appelé Property GUID 
// 1 BYTE a appelé la propriété « sorte »
// si (== aimable MNID_ID)
// 4 BYTES a appelé property ID
// autrement
le 
Descripteur réel de sécurité de //
//
// pour déterminer le descripteur de sécurité de PR_NT_SECURITY_DESCRIPTOR,
utilisation de // le macro de SECURITY_DESCRIPTOR_OF.
//
// pour déterminer la version du descripteur de sécurité, emploient le macro de SECURITY_DESCRIPTOR_VERSION.
//
//
// satisfont notent qu'OLEDB/DAV réserve les chiffres pairs de la version de transfert, ainsi ce doit TOUJOURS être un nombre impair.
//
#define SECURITY_DESCRIPTOR_TRANSFER_VERSION 0x0003

#define SECURITY_DESCRIPTOR_OF (Pb) (((BYTE *) (Pb)) + * ((MOT *) (Pb)))
#define SECURITY_DESCRIPTOR_VERSION (Pb) (* ((MOT *) ((Pb) + sizeof (MOT))))
#define SECURITY_INFORMATION_OF (Pb) (* ((DWORD *) ((Pb) + sizeof (MOT) + sizeof (MOT))))
Pb) de CbSecurityDescriptorHeader de #define ((Pb) (* ((MOT *)))

//
// à vérifier pour voir si la version de descripteur de sécurité assortit actuellement compilé
version de //.
//
#define FCheckSecurityDescriptorVersion (Pb) == SECURITY_DESCRIPTOR_TRANSFER_VERSION (de SECURITY_DESCRIPTOR_VERSION (Pb))

//
Portées de rôle de //
//
BYTE ROLESCOPE de typedef ;
Des rôles du #define ROLESCOPE_OBJECT 0x00 // seront lus de l'objet (chemise ou article) lui-même
Des rôles du #define ROLESCOPE_FOLDER 0x01 // seront lus de la chemise elle-même, ou de la chemise contenante si c'est un article
#DEFINE ROLESCOPE_MAX ROLESCOPE_FOLDER	

//
Autorité de sécurité de // utilisée pour des sids de rôle
//
#define SECURITY_EXCHANGE_AUTHORITY {0.0.0.0.0.8}

//
Propriétés de rôle d'application de //
//
#define PR_XMT_SECURITY_ROLE_1 PROP_TAG (PT_BINARY, 0x3d25)
#define PR_XMT_SECURITY_ROLE_1_AS_XML PROP_TAG (PT_TSTRING, 0x3d25)
#define PR_XMT_SECURITY_ROLE_2 PROP_TAG (PT_BINARY, 0x3d26)
#define PR_XMT_SECURITY_ROLE_2_AS_XML PROP_TAG (PT_TSTRING, 0x3d26)
#define PR_XMT_SECURITY_ROLE_3 PROP_TAG (PT_BINARY, 0x3d27)
#define PR_XMT_SECURITY_ROLE_3_AS_XML PROP_TAG (PT_TSTRING, 0x3d27)
#define PR_XMT_SECURITY_ROLE_4 PROP_TAG (PT_BINARY, 0x3d28)
#define PR_XMT_SECURITY_ROLE_4_AS_XML PROP_TAG (PT_TSTRING, 0x3d28)
#define PR_XMT_SECURITY_ROLE_5 PROP_TAG (PT_BINARY, 0x3d29)
#define PR_XMT_SECURITY_ROLE_5_AS_XML PROP_TAG (PT_TSTRING, 0x3d29)
#define PR_XMT_SECURITY_ROLE_6 PROP_TAG (PT_BINARY, 0x3d2A)
#define PR_XMT_SECURITY_ROLE_6_AS_XML PROP_TAG (PT_TSTRING, 0x3d2A)
#define PR_XMT_SECURITY_ROLE_7 PROP_TAG (PT_BINARY, 0x3d2B)
#define PR_XMT_SECURITY_ROLE_7_AS_XML PROP_TAG (PT_TSTRING, 0x3d2B)
#define PR_XMT_SECURITY_ROLE_8 PROP_TAG (PT_BINARY, 0x3d2C)
#define PR_XMT_SECURITY_ROLE_8_AS_XML PROP_TAG (PT_TSTRING, 0x3d2C)
#define PR_NON_XMT_SECURITY_ROLE_1 PROP_TAG (PT_BINARY, 0x0E7C)
#define PR_NON_XMT_SECURITY_ROLE_1_AS_XML PROP_TAG (PT_TSTRING, 0x0E7C)
#define PR_NON_XMT_SECURITY_ROLE_2 PROP_TAG (PT_BINARY, 0x0E7D)
#define PR_NON_XMT_SECURITY_ROLE_2_AS_XML PROP_TAG (PT_TSTRING, 0x0E7D)
#define PR_NON_XMT_SECURITY_ROLE_3 PROP_TAG (PT_BINARY, 0x0E7E)
#define PR_NON_XMT_SECURITY_ROLE_3_AS_XML PROP_TAG (PT_TSTRING, 0x0E7E)
#define PR_NON_XMT_SECURITY_ROLE_4 PROP_TAG (PT_BINARY, 0x0E7F)
#define PR_NON_XMT_SECURITY_ROLE_4_AS_XML PROP_TAG (PT_TSTRING, 0x0E7F)
#define PR_NON_XMT_SECURITY_ROLE_5 PROP_TAG (PT_BINARY, 0x0E80)
#define PR_NON_XMT_SECURITY_ROLE_5_AS_XML PROP_TAG (PT_TSTRING, 0x0E80)
#define PR_NON_XMT_SECURITY_ROLE_6 PROP_TAG (PT_BINARY, 0x0E81)
#define PR_NON_XMT_SECURITY_ROLE_6_AS_XML PROP_TAG (PT_TSTRING, 0x0E81)
#define PR_NON_XMT_SECURITY_ROLE_7 PROP_TAG (PT_BINARY, 0x0E82)
#define PR_NON_XMT_SECURITY_ROLE_7_AS_XML PROP_TAG (PT_TSTRING, 0x0E82)
#define PR_NON_XMT_SECURITY_ROLE_8 PROP_TAG (PT_BINARY, 0x0E83)
#define PR_NON_XMT_SECURITY_ROLE_8_AS_XML PROP_TAG (PT_TSTRING, 0x0E83)


/* ordonne des détails *

Types de propriété de //
#define PT_SRESTRICTION ((ULONG) 0x00FD)
#define PT_ACTIONS ((ULONG) 0x00FE)

/*-----------------------------------------------------------------------
 * PT_FILE_HANDLE : les vraies données sont dans le dossier spécifique par la poignée. 
 * appui vertical. Value.l a la poignée de dossier
 * PT_FILE_EA :	les vraies données sont dans le dossier spécifique par attribut prolongé
 * appui vertical. Value.bin a des données binaires d'ea
 * PT_VIRTUAL : de vraies données sont calculées en marche.
 * appui vertical. Value.bin a la goutte virtuelle binaire crue de propriété qui a
 * l'information pour faire la conversion. C'est interne au magasin et
 * n'est pas soutenu pour des appels d'extérieur.
 *-----------------------------------------------------------------------*

#define PT_FILE_HANDLE ((ULONG) 0x0103)
#define PT_FILE_EA ((ULONG) 0x0104)
#define PT_VIRTUAL ((ULONG) 0x0105)

#define FVirtualProp (ptag) == PT_VIRTUAL (de PROP_TYPE (ptag))
#define FFileHandleProp (ptag) == PT_FILE_HANDLE (de PROP_TYPE (ptag) || == PT_FILE_EA de PROP_TYPE (ptag))

//Properties dans la table de règle
#define PR_RULE_ID PROP_TAG (PT_I8, pidSpecialMin+0x04)
#define PR_RULE_IDS PROP_TAG (PT_BINARY, pidSpecialMin+0x05)
#define PR_RULE_SEQUENCE PROP_TAG (PT_LONG, pidSpecialMin+0x06)
#define PR_RULE_STATE PROP_TAG (PT_LONG, pidSpecialMin+0x07)
#define PR_RULE_USER_FLAGS PROP_TAG (PT_LONG, pidSpecialMin+0x08)
#define PR_RULE_CONDITION PROP_TAG (PT_SRESTRICTION, pidSpecialMin+0x09)
#define PR_RULE_ACTIONS PROP_TAG (PT_ACTIONS, pidSpecialMin+0x10)
#define PR_RULE_PROVIDER PROP_TAG (PT_STRING8, pidSpecialMin+0x11)
#define PR_RULE_NAME PROP_TAG (PT_TSTRING, pidSpecialMin+0x12)
#define PR_RULE_LEVEL PROP_TAG (PT_LONG, pidSpecialMin+0x13)
#define PR_RULE_PROVIDER_DATA PROP_TAG (PT_BINARY, pidSpecialMin+0x14)
// s'est déplacé à ptag.h (scottno) - toujours requis pour l'upgrader 2.27
#define PR_RULE_VERSION PROP_TAG (PT_I2, pidSpecialMin+0x1D) de //

valeurs d'une propriété de //PR_STATE
#define ST_DISABLED 0x0000
#define ST_ENABLED 0x0001
#define ST_ERROR 0x0002
#define ST_ONLY_WHEN_OOF 0x0004
#define ST_KEEP_OOF_HIST 0x0008
#define ST_EXIT_LEVEL 0x0010

#define ST_CLEAR_OOF_HIST 0x80000000

restriction de //Empty
#define NULL_RESTRICTION 0xff

// RELOP spécial pour le membre de la DL
#define RELOP_MEMBER_OF_DL 100

types de //Action
enum de typedef
{
	OP_MOVE = 1,
	OP_COPY,
	OP_REPLY,
	OP_OOF_REPLY,
	OP_DEFER_ACTION,
	OP_BOUNCE,
	OP_FORWARD,
	OP_DELEGATE,
	OP_TAG,
	OP_DELETE,
	OP_MARK_AS_READ,

} ACTTYPE ;

nom de fournisseur de // pour des règles de modérateur
szProviderModeratorRule « MSFT de #define : M. »
wszProviderModeratorRule L " MSFT de #define : M. "

saveurs d'action de //

// pour OP_REPLY
#define DO_NOT_SEND_TO_ORIGINATOR 1
#define STOCK_REPLY_TEMPLATE 2

// pour OP_FORWARD
#define FWD_PRESERVE_SENDER 1
#define FWD_DO_NOT_MUNGE_MSG 2
#define FWD_AS_ATTACHMENT 4

valeurs de //scBounceCode
#DEFINE BOUNCE_MESSAGE_SIZE_TOO_LARGE (SCODE) MAPI_DIAG_LENGTH_CONSTRAINT_VIOLATD
#DEFINE BOUNCE_FORMS_MISMATCH (SCODE) MAPI_DIAG_RENDITION_UNSUPPORTED
#DEFINE BOUNCE_ACCESS_DENIED (SCODE) MAPI_DIAG_MAIL_REFUSED

préfixe de classe de //Message des calibres pour réponse et de réponse d'OOF
szReplyTemplateMsgClassPrefix « IPM.Note.Rules.ReplyTemplate de #define. »
szOofTemplateMsgClassPrefix « IPM.Note.Rules.OofTemplate de #define. »

structure de //Action
_action de struct de typedef
{
	Acttype d'ACTTYPE ;

	// pour indiquer quelle saveur de l'action.
	ulActionFlavor d'ULONG ;

	Restriction d'action de //
	// a actuellement employé et doit être placé POUR ANNULER
	lpRes de LPSRestriction ;

	// actuellement inutilisé, doit être placé à 0.
	LPSPropTagArray lpPropTagArray ;

	Drapeaux définis pour l'utilisateur de //
	ulFlags d'ULONG ;

	// capitonnant pour aligner l'union sur la frontière de byte 8
	dwAlignPad d'ULONG ;

	union
	{
		// a employé pour des actions d'OP_MOVE et d'OP_COPY
		struct
		{
			cbStoreEntryId d'ULONG ;
			lpStoreEntryId de LPENTRYID ;
			cbFldEntryId d'ULONG ;
			lpFldEntryId de LPENTRYID ;
		} actMoveCopy ;

		// a employé pour des actions d'OP_REPLY et d'OP_OOF_REPLY
		struct
		{
			cbEntryId d'ULONG ;
			lpEntryId de LPENTRYID ;
			guidReplyTemplate de GUID ;
		} actReply ;

		// a employé pour l'action d'OP_DEFER_ACTION
		struct
		{
			cbData d'ULONG ;
			*pbData de BYTE ;
		} actDeferAction ;

		Code d'erreur de // à placer pour l'action d'OP_BOUNCE
		scBounceCode de SCODE ;

		liste de // d'adresse pour l'action d'OP_FORWARD et d'OP_DELEGATE
		Lpadrlist de LPADRLIST ;

		valeur d'appui vertical de // pour l'action d'OP_TAG
		propTag de SPropValue ;
	} ;
} ACTION, LOIN * LPACTION ;

Version de règles de //
#define EDK_RULES_VERSION 1

//Array des actions
_actions de struct de typedef
{
	ulVersion d'ULONG ;		utilisation de // le #define ci-dessus
	cActions d'UINT ;
	lpAction de LPACTION ;
} ACTIONS ;

définitions de classe de message de // pour l'action et les messages d'erreur reportés de Deffered
szDamMsgClass « action de #define de l'échange 4.0.Deferred d'IPC.Microsoft »
szDemMsgClass « erreur de #define de l'échange 4.0.Deferred d'IPC.Microsoft »

/*
 * Codes d'erreur de règle
 * Valeurs pour PR_RULE_ERROR
 *
Erreur de fourre-tout du #define RULE_ERR_UNKNOWN 1 //general
#define RULE_ERR_LOAD 2 //unable pour charger des règles de chemise
#define RULE_ERR_DELIVERY 3 //unable pour fournir le message temporairement
#define RULE_ERR_PARSING 4 //error tout en analysant
#define RULE_ERR_CREATE_DAE 5 //error créant le message de DAE
Se déplacer du #define RULE_ERR_NO_FOLDER 6 //folder/copie n'existe pas
Entrer de droites du #define RULE_ERR_NO_RIGHTS 7 //no pour/copie dans la chemise
#define RULE_ERR_CREATE_DAM 8 //error créant la dam
#define RULE_ERR_NO_SENDAS 9 //can ne pas envoyer en tant qu'autre utilisateur
Le calibre du #define RULE_ERR_NO_TEMPLATE 10 //reply est absent
#define RULE_ERR_EXECUTION 11 //error dans l'exécution de règle
Taille de quote-part du #define RULE_ERR_QUOTA_EXCEEDED 12 //mailbox dépassée
Le #define RULE_ERR_TOO_MANY_RECIPS 13 //number des recips exceded la limite supérieure

#DEFINE RULE_ERR_FIRST RULE_ERR_UNKNOWN
#DEFINE RULE_ERR_LAST RULE_ERR_TOO_MANY_RECIPS

/*------------------------------------------------------------------------
 *
 * déclaration d'interface de « IExchangeRuleAction »
 *
 * Utilisé pour obtenir les actions d'un message d'intervention reporté.
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGERULEACTION_METHODS) (D'IPURE \
	MAPIMETHOD) (d'ActionCount \
		(lpcActions de THIS_ ULONG LOIN *) IPURE ;			\
	MAPIMETHOD) (de GetAction \
		(, D'ulActionNumber de THIS_ ULONG \
				LARGE_INTEGER *, de lpruleid \
				De LPACTION lppAction LOIN *) IPURE ;

INTERFACE de #undef
INTERFACE IExchangeRuleAction de #define
DECLARE_MAPI_INTERFACE_ (IExchangeRuleAction, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGERULEACTION_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeRuleAction, LPEXCHANGERULEACTION) ;

/*------------------------------------------------------------------------
 *
 * déclaration d'interface de « IExchangeManageStore »
 *
 * Utilisé pour des fonctions de gestion de magasin.
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEMANAGESTORE_METHODS) (D'IPURE \
	MAPIMETHOD) (de CreateStoreEntryID \
		(, De lpszMsgStoreDN de THIS_ LPSTR \
				, De lpszMailboxDN de LPSTR \
				, D'ulFlags d'ULONG \
				D'ULONG, de lpcbEntryID LOIN * \
				De LPENTRYID lppEntryID LOIN *) IPURE ;			\
	MAPIMETHOD) (d'EntryIDFromSourceKey \
		(THIS_ ULONG cFolderKeySize, \
				De BYTE, de lpFolderSourceKey LOIN * \
				ULONG cMessageKeySize, \
				De BYTE, de lpMessageSourceKey LOIN * \
				D'ULONG, de lpcbEntryID LOIN * \
				De LPENTRYID lppEntryID LOIN *) IPURE ;			\
	MAPIMETHOD) (de GetRights \
		(, De cbUserEntryID de THIS_ ULONG \
				, De lpUserEntryID de LPENTRYID \
				, De cbEntryID d'ULONG \
				, De lpEntryID de LPENTRYID \
				D'ULONG lpulRights LOIN *) IPURE ;			\
	MAPIMETHOD) (de GetMailboxTable \
		(, De lpszServerName de THIS_ LPSTR \
				De LPMAPITABLE, lppTable LOIN * \
				ulFlags d'ULONG) IPURE ;				\
	MAPIMETHOD) (de GetPublicFolderTable \
		(, De lpszServerName de THIS_ LPSTR \
				De LPMAPITABLE, lppTable LOIN * \
				ulFlags d'ULONG) IPURE ;

INTERFACE de #undef
INTERFACE IExchangeManageStore de #define
DECLARE_MAPI_INTERFACE_ (IExchangeManageStore, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGEMANAGESTORE_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeManageStore, LPEXCHANGEMANAGESTORE) ;

/*------------------------------------------------------------------------
 *
 * déclaration de l'interface « IExchangeManageStore2 »
 *
 * Utilisé pour des fonctions de gestion de magasin.
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEMANAGESTORE2_METHODS) (D'IPURE \
	MAPIMETHOD) (de CreateNewsgroupNameEntryID \
		(, De lpszNewsgroupName de THIS_ LPSTR \
				D'ULONG, de lpcbEntryID LOIN * \
				De LPENTRYID lppEntryID LOIN *) IPURE ;

INTERFACE de #undef
INTERFACE IExchangeManageStore2 de #define
DECLARE_MAPI_INTERFACE_ (IExchangeManageStore2, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGEMANAGESTORE_METHODS (PUR)
	EXCHANGE_IEXCHANGEMANAGESTORE2_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeManageStore2, LPEXCHANGEMANAGESTORE2) ;


/*------------------------------------------------------------------------
 *
 * déclaration de l'interface « IExchangeManageStore3 »
 *
 * Utilisé pour des fonctions de gestion de magasin.
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEMANAGESTORE3_METHODS) (D'IPURE \
	MAPIMETHOD) (de GetMailboxTableOffset \
		(, De lpszServerName de THIS_ LPSTR \
				De LPMAPITABLE, lppTable LOIN * \
				, D'ulFlags d'ULONG \
				uOffset d'UINT) IPURE ;

INTERFACE de #undef
INTERFACE IExchangeManageStore3 de #define
DECLARE_MAPI_INTERFACE_ (IExchangeManageStore3, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGEMANAGESTORE_METHODS (PUR)
	EXCHANGE_IEXCHANGEMANAGESTORE2_METHODS (PUR)
	EXCHANGE_IEXCHANGEMANAGESTORE3_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeManageStore3, LPEXCHANGEMANAGESTORE3) ;


/*------------------------------------------------------------------------
 *
 * déclaration de l'interface « IExchangeManageStore4 »
 *
 * Utilisé pour des fonctions de gestion de magasin.
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEMANAGESTORE4_METHODS) (D'IPURE \
	MAPIMETHOD) (de GetPublicFolderTableOffset \
		(, De lpszServerName de THIS_ LPSTR \
				De LPMAPITABLE, lppTable LOIN * \
				, D'ulFlags d'ULONG \
				uOffset d'UINT) IPURE ;

INTERFACE de #undef
INTERFACE IExchangeManageStore4 de #define
DECLARE_MAPI_INTERFACE_ (IExchangeManageStore4, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGEMANAGESTORE_METHODS (PUR)
	EXCHANGE_IEXCHANGEMANAGESTORE2_METHODS (PUR)
	EXCHANGE_IEXCHANGEMANAGESTORE3_METHODS (PUR)
	EXCHANGE_IEXCHANGEMANAGESTORE4_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeManageStore4, LPEXCHANGEMANAGESTORE4) ;


/*------------------------------------------------------------------------
 *
 * déclaration d'interface de « IExchangeNntpNewsfeed »
 *
 * Utilisé pour la distribution d'articles Usenet de traction de NNTP.
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGENNTPNEWSFEED_METHODS) (D'IPURE \
	MAPIMETHOD (configurer) \
		(, De lpszNewsfeedDN de THIS_ LPSTR \
				, De cValues d'ULONG \
				LPSPropValue) IPURE lpIMailPropArray ;	\
	MAPIMETHOD) (de CheckMsgIds \
		(, De lpszMsgIds de THIS_ LPSTR \
				D'ULONG, lpcfWanted LOIN * \
				BYTE LOIN **) IPURE lppfWanted ;			\
	MAPIMETHOD) (d'OpenArticleStream \
		(lppStream de THIS_ LPSTREAM LOIN *) IPURE ;			\
				

INTERFACE de #undef
INTERFACE IExchangeNntpNewsfeed de #define
DECLARE_MAPI_INTERFACE_ (IExchangeNntpNewsfeed, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGENNTPNEWSFEED_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeNntpNewsfeed, LPEXCHANGENNTPNEWSFEED) ;

Propriétés de // pour GetMailboxTable
#define PR_NT_USER_NAME PROP_TAG (PT_TSTRING, pidAdminMin+0x10)
//
La définition de // PR_LOCALE_ID a été abaissée et combinée avec autre
propriétés lieu-spécifiques de //.  Elle est encore retournée par
table de boîte aux lettres de //.
//
#define PR_LOCALE_ID PROP_TAG (PT_LONG, pidAdminMin+0x11) de //
#define PR_LAST_LOGON_TIME PROP_TAG (PT_SYSTIME, pidAdminMin+0x12)
#define PR_LAST_LOGOFF_TIME PROP_TAG (PT_SYSTIME, pidAdminMin+0x13)
#define PR_STORAGE_LIMIT_INFORMATION PROP_TAG (PT_LONG, pidAdminMin+0x14)
propriété de // à la réception (non lue) lue par message de neutralisation
// réutilisant la propriété de table de chemises (pidAdminMin+0x15)

#DEFINE PR_INTERNET_MDNS PROP_TAG (PT_BOOLEAN, PROP_ID (PR_NEWSGROUP_COMPONENT))

propriétés de // pour l'information de quote-part de boîte aux lettres - réutilisant des propriétés de table de chemise -
nom, propriétaire, et contacts de chemise de // réutilisés.
#define PR_QUOTA_WARNING_THRESHOLD PROP_TAG (PT_LONG, pidAdminMin+0x91)
#define PR_QUOTA_SEND_THRESHOLD PROP_TAG (PT_LONG, pidAdminMin+0x92)
#define PR_QUOTA_RECEIVE_THRESHOLD PROP_TAG (PT_LONG, pidAdminMin+0x93)


Propriétés de // pour GetPublicFolderTable
#define PR_FOLDER_FLAGS PROP_TAG (PT_LONG, pidAdminMin+0x18)
#define PR_LAST_ACCESS_TIME PROP_TAG (PT_SYSTIME, pidAdminMin+0x19)
#define PR_RESTRICTION_COUNT PROP_TAG (PT_LONG, pidAdminMin+0x1A)
#define PR_CATEG_COUNT PROP_TAG (PT_LONG, pidAdminMin+0x1B)
#define PR_CACHED_COLUMN_COUNT PROP_TAG (PT_LONG, pidAdminMin+0x1C)
#define PR_NORMAL_MSG_W_ATTACH_COUNT PROP_TAG (PT_LONG, pidAdminMin+0x1D)
#define PR_ASSOC_MSG_W_ATTACH_COUNT PROP_TAG (PT_LONG, pidAdminMin+0x1E)
#define PR_RECIPIENT_ON_NORMAL_MSG_COUNT PROP_TAG (PT_LONG, pidAdminMin+0x1F)
#define PR_RECIPIENT_ON_ASSOC_MSG_COUNT PROP_TAG (PT_LONG, pidAdminMin+0x20)
#define PR_ATTACH_ON_NORMAL_MSG_COUNT PROP_TAG (PT_LONG, pidAdminMin+0x21)
#define PR_ATTACH_ON_ASSOC_MSG_COUNT PROP_TAG (PT_LONG, pidAdminMin+0x22)
#define PR_NORMAL_MESSAGE_SIZE PROP_TAG (PT_LONG, pidAdminMin+0x23)
#define PR_NORMAL_MESSAGE_SIZE_EXTENDED PROP_TAG (PT_I8, pidAdminMin+0x23)
#define PR_ASSOC_MESSAGE_SIZE PROP_TAG (PT_LONG, pidAdminMin+0x24)
#define PR_ASSOC_MESSAGE_SIZE_EXTENDED PROP_TAG (PT_I8, pidAdminMin+0x24)
#define PR_FOLDER_PATHNAME PROP_TAG (PT_TSTRING, pidAdminMin+0x25)
#define PR_OWNER_COUNT PROP_TAG (PT_LONG, pidAdminMin+0x26)
#define PR_CONTACT_COUNT PROP_TAG (PT_LONG, pidAdminMin+0x27)

/* la limitation de taille absolue d'une chemise publique * 
#define PR_PF_OVER_HARD_QUOTA_LIMIT PROP_TAG (PT_LONG, pidAdminMin+0x91)
/* la limite de taille d'un message dans une chemise publique * 
#define PR_PF_MSG_SIZE_LIMIT PROP_TAG (PT_LONG, pidAdminMin+0x92)

// n'héritent pas des arrangements d'échéance des arrangements larges de MDB et n'emploient pas à la place le détail de chemise ceux
// (si le détail de chemise n'est pas placé, il n'obtiendra néanmoins pas de MDB et ne restera pas sans l'échéance du tout)
#define PR_PF_DISALLOW_MDB_WIDE_EXPIRY PROP_TAG (PT_BOOLEAN, pidAdminMin+0x93)

propriétés Lieu-spécifiques de //
#define PR_LOCALE_ID PROP_TAG (PT_LONG, pidAdminMin+0x11)
#define PR_CODE_PAGE_ID PROP_TAG (PT_LONG, pidAdminMin+0x33)
#define PR_SORT_LOCALE_ID PROP_TAG (PT_LONG, pidAdminMin+0x75)

Version de // PT_I8 de PR_MESSAGE_SIZE définie dans mapitags.h
#DEFINE PR_MESSAGE_SIZE_EXTENDED PROP_TAG (PT_I8, PROP_ID (PR_MESSAGE_SIZE))

Peu de/* dans PR_FOLDER_FLAGS *
#define MDB_FOLDER_IPM 0x1
#define MDB_FOLDER_SEARCH 0x2
#define MDB_FOLDER_NORMAL 0x4
#define MDB_FOLDER_RULES 0x8

Peu de/* utilisé dans les ulFlags dans GetPublicFolderTable () *
#define MDB_NON_IPM 0x10
#define MDB_IPM 0x20

Peu de/* dans PR_STORAGE_LIMIT_INFORMATION *
#define MDB_LIMIT_BELOW 0x1
#define MDB_LIMIT_ISSUE_WARNING 0x2
#define MDB_LIMIT_PROHIBIT_SEND 0x4
#define MDB_LIMIT_NO_CHECK 0x8
#define MDB_LIMIT_DISABLED 0x10

/* A définissent pour « aucune information de quote-part » en recherchant l'information de quote-part *
#define MDB_QUOTA_NOQUOTA 0xFFFFFFFF

/*------------------------------------------------------------------------
 *
 * déclaration d'interface de « IExchangeFastTransfer »
 *
 * Utilisé pour l'interface rapide de transfert utilisée à
 * mettre en application CopyTo, CopyProps, CopyFolder, et
 * CopyMessages.
 *
 *-----------------------------------------------------------------------*

Drapeaux de transfert de //
Utilisation MAPI_MOVE de // pour l'option de mouvement

Méthodes de transfert de //
#define TRANSFER_COPYTO 1
#define TRANSFER_COPYPROPS 2
#define TRANSFER_COPYMESSAGES 3
#define TRANSFER_COPYFOLDER 4


#DEFINE EXCHANGE_IEXCHANGEFASTTRANSFER_METHODS) (D'IPURE \
	MAPIMETHOD) (de config \
		(, D'ulFlags de THIS_ ULONG \
				ulTransferMethod d'ULONG) IPURE ;	\
	MAPIMETHOD) (de TransferBuffer \
		(, De Cb de THIS_ ULONG \
				, De lpb de LPBYTE \
				) IPURE *lpcbProcessed PAR ULONG ;		\
	STDMETHOD_ (BOOL,) d'IsInterfaceOk \
		(, D'ulTransferMethod de THIS_ ULONG \
				, De refiid de REFIID \
				, De lpptagList de LPSPropTagArray \
				ulFlags d'ULONG) IPURE ;

INTERFACE de #undef
INTERFACE IExchangeFastTransfer de #define
DECLARE_MAPI_INTERFACE_ (IExchangeFastTransfer, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGEFASTTRANSFER_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeFastTransfer, LPEXCHANGEFASTTRANSFER) ;



/*------------------------------------------------------------------------
 *
 * déclaration d'interface de « IExchangeExportChanges »
 *
 * Utilisé pour la synchronisation par accroissement
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEEXPORTCHANGES_METHODS) (D'IPURE \
	MAPIMETHOD) (de GetLastError \
		(, De hResult de THIS_ HRESULT \
		 	    , D'ulFlags d'ULONG \
		 	    De LPMAPIERROR lppMAPIError LOIN *) IPURE ;	\
	MAPIMETHOD) (de config \
		(, De lpStream de THIS_ LPSTREAM \
				, D'ulFlags d'ULONG \
				, De lpUnk de LPUNKNOWN \
		 		, De lpRestriction de LPSRestriction \
		 	    , De lpIncludeProps de LPSPropTagArray \
		 	    , De lpExcludeProps de LPSPropTagArray \
		 		ULONG ulBufferSize) IPURE ;	\
	MAPIMETHOD (synchroniser) \
		(, De lpulSteps de THIS_ ULONG LOIN * \
				D'ULONG lpulProgress LOIN *) IPURE ;	\
	MAPIMETHOD) (d'UpdateState \
		(lpStream de THIS_ LPSTREAM) IPURE ;

INTERFACE de #undef
INTERFACE IExchangeExportChanges de #define
DECLARE_MAPI_INTERFACE_ (IExchangeExportChanges, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGEEXPORTCHANGES_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeExportChanges, LPEXCHANGEEXPORTCHANGES) ;

/*------------------------------------------------------------------------
 *
 * déclaration de l'interface « IExchangeExportChanges2 »
 *
 * Utilisé pour la synchronisation par accroissement
 * A la méthode Config2 pour configurer pour des jets de conversion de format d'Internet
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEEXPORTCHANGES2_METHODS) (D'IPURE \
	MAPIMETHOD) (de ConfigForConversionStream \
		(, De lpStream de THIS_ LPSTREAM \
				, D'ulFlags d'ULONG \
				, De lpUnk de LPUNKNOWN \
		 		, De lpRestriction de LPSRestriction \
		 		, De cValuesConversion d'ULONG \
		 		, De lpPropArrayConversion de LPSPropValue \
		 		ULONG ulBufferSize) IPURE ;

INTERFACE de #undef
INTERFACE IExchangeExportChanges2 de #define
DECLARE_MAPI_INTERFACE_ (IExchangeExportChanges2, IExchangeExportChanges)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGEEXPORTCHANGES_METHODS (PUR)
	EXCHANGE_IEXCHANGEEXPORTCHANGES2_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeExportChanges2, LPEXCHANGEEXPORTCHANGES2) ;

/*------------------------------------------------------------------------
 *
 * déclaration de l'interface « IExchangeExportChanges3 »
 *
 * Utilisé pour la synchronisation par accroissement
 * A la méthode Config3 pour configurer pour le téléchargement sélectif de message
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEEXPORTCHANGES3_METHODS) (D'IPURE \
	MAPIMETHOD) (de ConfigForSelectiveSync \
		(, De lpStream de THIS_ LPSTREAM \
				, D'ulFlags d'ULONG \
				, De lpUnk de LPUNKNOWN \
				, De lpMsgList de LPENTRYLIST \
		 		, De lpRestriction de LPSRestriction \
		 	    , De lpIncludeProps de LPSPropTagArray \
		 	    , De lpExcludeProps de LPSPropTagArray \
		 		ULONG ulBufferSize) IPURE ;

INTERFACE de #undef
INTERFACE IExchangeExportChanges3 de #define
DECLARE_MAPI_INTERFACE_ (IExchangeExportChanges3, IExchangeExportChanges2)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGEEXPORTCHANGES_METHODS (PUR)
	EXCHANGE_IEXCHANGEEXPORTCHANGES2_METHODS (PUR)
	EXCHANGE_IEXCHANGEEXPORTCHANGES3_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeExportChanges3, LPEXCHANGEEXPORTCHANGES3) ;

_ReadState de struct de typedef
{
	cbSourceKey d'ULONG ;
	BYTE * pbSourceKey ;
	ulFlags d'ULONG ;
} READSTATE, *LPREADSTATE ;

/*------------------------------------------------------------------------
 *
 * déclaration d'interface de « IExchangeImportContentsChanges »
 *
 * Utilisé pour la synchronisation par accroissement du contenu de chemise (c.-à-d. messages)
 *
 *-----------------------------------------------------------------------*


#DEFINE EXCHANGE_IEXCHANGEIMPORTCONTENTSCHANGES_METHODS) (D'IPURE \
	MAPIMETHOD) (de GetLastError \
		(, De hResult de THIS_ HRESULT \
		 	    , D'ulFlags d'ULONG \
		 	    De LPMAPIERROR lppMAPIError LOIN *) IPURE ;			\
	MAPIMETHOD) (de config \
		(, De lpStream de THIS_ LPSTREAM \
		 		ulFlags d'ULONG) IPURE ;				\
	MAPIMETHOD) (d'UpdateState \
		(lpStream de THIS_ LPSTREAM) IPURE ;			\
	MAPIMETHOD) (d'ImportMessageChange \
		(, De cpvalChanges de THIS_ ULONG \
				, De ppvalChanges de LPSPropValue \
				, D'ulFlags d'ULONG \
				*LPPMESSAGE DE LPMESSAGE) IPURE ;			\
	MAPIMETHOD) (d'ImportMessageDeletion \
		(, D'ulFlags de THIS_ ULONG \
		 		lpSrcEntryList de LPENTRYLIST) IPURE ;		\
	MAPIMETHOD) (d'ImportPerUserReadStateChange \
		(, De cElements de THIS_ ULONG \
		 		lpReadState de LPREADSTATE) IPURE ;			\
	MAPIMETHOD) (d'ImportMessageMove \
		(, De cbSourceKeySrcFolder de THIS_ ULONG \
		 		De BYTE, de pbSourceKeySrcFolder LOIN * \
		 		, De cbSourceKeySrcMessage d'ULONG \
		 		De BYTE, de pbSourceKeySrcMessage LOIN * \
		 		, De cbPCLMessage d'ULONG \
		 		De BYTE, de pbPCLMessage LOIN * \
		 		, De cbSourceKeyDestMessage d'ULONG \
		 		De BYTE, de pbSourceKeyDestMessage LOIN * \
		 		, De cbChangeNumDestMessage d'ULONG \
		 		De BYTE pbChangeNumDestMessage LOIN *) IPURE ;


INTERFACE de #undef
INTERFACE IExchangeImportContentsChanges de #define
DECLARE_MAPI_INTERFACE_ (IExchangeImportContentsChanges, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGEIMPORTCONTENTSCHANGES_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeImportContentsChanges,
						   LPEXCHANGEIMPORTCONTENTSCHANGES) ;

/*------------------------------------------------------------------------
 *
 * déclaration de l'interface « IExchangeImportContentsChanges2 »
 *
 * Utilisé pour la synchronisation par accroissement du contenu de chemise (c.-à-d. messages)
 * Cette interface te permet d'importer des changements de message comme Internet
 * jet de conversion de format
 *
 *-----------------------------------------------------------------------*


#DEFINE EXCHANGE_IEXCHANGEIMPORTCONTENTSCHANGES2_METHODS) (D'IPURE \
	MAPIMETHOD) (de ConfigForConversionStream \
		(, De lpStream de THIS_ LPSTREAM \
		 		, D'ulFlags d'ULONG \
		 		, De cValuesConversion d'ULONG \
		 		lpPropArrayConversion de LPSPropValue) IPURE ;	\
	MAPIMETHOD) (d'ImportMessageChangeAsAStream \
		(, De cpvalChanges de THIS_ ULONG \
				, De ppvalChanges de LPSPropValue \
				, D'ulFlags d'ULONG \
				*LPPSTREAM DE LPSTREAM) IPURE ;			\


INTERFACE de #undef
INTERFACE IExchangeImportContentsChanges2 de #define
DECLARE_MAPI_INTERFACE_ (IExchangeImportContentsChanges2, IExchangeImportContentsChanges)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGEIMPORTCONTENTSCHANGES_METHODS (PUR)
	EXCHANGE_IEXCHANGEIMPORTCONTENTSCHANGES2_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeImportContentsChanges2,
						   LPEXCHANGEIMPORTCONTENTSCHANGES2) ;

/*------------------------------------------------------------------------
 *
 * déclaration d'interface de « IExchangeImportHierarchyChanges »
 *
 * Utilisé pour la synchronisation par accroissement de la hiérarchie de chemise
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEIMPORTHIERARCHYCHANGES_METHODS) (D'IPURE \
	MAPIMETHOD) (de GetLastError \
		(, De hResult de THIS_ HRESULT \
				, D'ulFlags d'ULONG \
				De LPMAPIERROR lppMAPIError LOIN *) IPURE ;			\
	MAPIMETHOD) (de config \
		(, De lpStream de THIS_ LPSTREAM \
		 		ulFlags d'ULONG) IPURE ;				\
	MAPIMETHOD) (d'UpdateState \
		(lpStream de THIS_ LPSTREAM) IPURE ;			\
	MAPIMETHOD) (d'ImportFolderChange \
		(, De cpvalChanges de THIS_ ULONG \
				ppvalChanges de LPSPropValue) IPURE ;	\
	MAPIMETHOD) (d'ImportFolderDeletion \
		(, D'ulFlags de THIS_ ULONG \
		 		lpSrcEntryList de LPENTRYLIST) IPURE ;

INTERFACE de #undef
INTERFACE IExchangeImportHierarchyChanges de #define
DECLARE_MAPI_INTERFACE_ (IExchangeImportHierarchyChanges, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGEIMPORTHIERARCHYCHANGES_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeImportHierarchyChanges,
						   LPEXCHANGEIMPORTHIERARCHYCHANGES) ;

#define ulHierChanged (0x01)

#DEFINE EXCHANGE_IEXCHANGECHANGEADVISESINK_METHODS) (D'IPURE \
	MAPIMETHOD_ (ULONG,) d'OnNotify \
		(, D'ulFlags de THIS_ ULONG \
		 		lpEntryList de LPENTRYLIST) IPURE ;		\

INTERFACE de #undef
INTERFACE IExchangeChangeAdviseSink de #define
DECLARE_MAPI_INTERFACE_ (IExchangeChangeAdviseSink, IUnknown)
{
	BEGIN_INTERFACE
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGECHANGEADVISESINK_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeChangeAdviseSink,
						   LPEXCHANGECHANGEADVISESINK) ;

#DEFINE EXCHANGE_IEXCHANGECHANGEADVISOR_METHODS) (D'IPURE \
	MAPIMETHOD) (de GetLastError \
		(, De hResult de THIS_ HRESULT \
				, D'ulFlags d'ULONG \
				De LPMAPIERROR lppMAPIError LOIN *) IPURE ;			\
	MAPIMETHOD) (de config \
		(, De lpStream de THIS_ LPSTREAM \
		 		, De lpGUID de LPGUID \
				, De lpAdviseSink de LPEXCHANGECHANGEADVISESINK \
		 		ulFlags d'ULONG) IPURE ;			\
	MAPIMETHOD) (d'UpdateState \
		(lpStream de THIS_ LPSTREAM) IPURE ;				\
	MAPIMETHOD) (d'AddKeys \
		(lpEntryList de THIS_ LPENTRYLIST) IPURE ;				\
	MAPIMETHOD) (de RemoveKeys \
		(lpEntryList de THIS_ LPENTRYLIST) IPURE ;

INTERFACE de #undef
INTERFACE IExchangeChangeAdvisor de #define
DECLARE_MAPI_INTERFACE_ (IExchangeChangeAdvisor, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGECHANGEADVISOR_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeChangeAdvisor,
						   LPEXCHANGECHANGEADVISOR) ;

/*------------------------------------------------------------------------
 *
 * Les erreurs sont retournées par l'interface par accroissement de synchronisation de changement d'échange
 *
 *-----------------------------------------------------------------------*

#define MAKE_SYNC_E (errer) (MAKE_SCODE (SEVERITY_ERROR, FACILITY_ITF, errent))
#define MAKE_SYNC_W (avertir) (MAKE_SCODE (SEVERITY_SUCCESS, FACILITY_ITF, avertissent))

#DEFINE SYNC_E_UNKNOWN_FLAGS MAPI_E_UNKNOWN_FLAGS
#DEFINE SYNC_E_INVALID_PARAMETER E_INVALIDARG
#DEFINE SYNC_E_ERROR E_FAIL
#define SYNC_E_OBJECT_DELETED MAKE_SYNC_E (0x800)
#define SYNC_E_IGNORE MAKE_SYNC_E (0x801)
#define SYNC_E_CONFLICT MAKE_SYNC_E (0x802)
#define SYNC_E_NO_PARENT MAKE_SYNC_E (0x803)
#define SYNC_E_INCEST MAKE_SYNC_E (0x804)
#define SYNC_E_UNSYNCHRONIZED MAKE_SYNC_E (0x805)

#define SYNC_W_PROGRESS MAKE_SYNC_W (0x820)
#define SYNC_W_CLIENT_CHANGE_NEWER MAKE_SYNC_W (0x821)

/*------------------------------------------------------------------------
 *
 * Drapeaux employés par l'interface par accroissement de synchronisation de changement d'échange
 *
 *-----------------------------------------------------------------------*

#define SYNC_UNICODE 0x01
#define SYNC_NO_DELETIONS 0x02
#define SYNC_NO_SOFT_DELETIONS 0x04
#define SYNC_READ_STATE 0x08
#define SYNC_ASSOCIATED 0x10
#define SYNC_NORMAL 0x20
#define SYNC_NO_CONFLICTS 0x40
#define SYNC_ONLY_SPECIFIED_PROPS 0x80
#define SYNC_NO_FOREIGN_KEYS 0x100
#define SYNC_LIMITED_IMESSAGE 0x200
#define SYNC_CATCHUP 0x400
#define SYNC_NEW_MESSAGE 0x800 // seulement applicable à ImportMessageChange ()
#define SYNC_MSG_SELECTIVE 0x1000 // utilisé intérieurement.  Rejettera si utilisé par des clients.

#ifdef JAMAIS
#define SYNC_IMAIL_MIME_FORMAT 0x400
#define SYNC_IMAIL_UUENCODE_FORMAT 0x800
#define SYNC_ONLY_HEADERS 0x1000
#endif

/*------------------------------------------------------------------------
 *
 * Drapeaux employés par ImportMessageDeletion et méthodes d'ImportFolderDeletion
 *
 *-----------------------------------------------------------------------*

#define SYNC_SOFT_DELETE 0x01
#define SYNC_EXPIRY 0x02

/*------------------------------------------------------------------------
 *
 * Drapeaux employés par la méthode d'ImportPerUserReadStateChange
 *
 *-----------------------------------------------------------------------*

#define SYNC_READ 0x01

/*------------------------------------------------------------------------
 *
 * déclaration d'interface de « IExchangeFavorites »
 *
 * Utilisé pour ajouter ou enlever les chemises préférées du magasin public.
 * Cette interface est obtenue en appelant QueryInterface sur la chemise
 * dont l'EntryID est spécifié par PR_IPM_FAVORITES_ENTRYID sur le public
 * magasin.
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEFAVORITES_METHODS) (D'IPURE \
	MAPIMETHOD) (de GetLastError \
		(, De hResult de THIS_ HRESULT \
				, D'ulFlags d'ULONG \
				De LPMAPIERROR lppMAPIError LOIN *) IPURE ;		\
	MAPIMETHOD) (d'AddFavorites \
		(lpEntryList de THIS_ LPENTRYLIST) IPURE ;			\
	MAPIMETHOD) (de DelFavorites \
		(lpEntryList de THIS_ LPENTRYLIST) IPURE ;			\

INTERFACE de #undef
INTERFACE IExchangeFavorites de #define
DECLARE_MAPI_INTERFACE_ (IExchangeFavorites, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGEFAVORITES_METHODS (PUR)
} ;

DECLARE_MAPI_INTERFACE_PTR (IExchangeFavorites, LPEXCHANGEFAVORITES) ;


/*------------------------------------------------------------------------
 *
 * Propriétés employées par les chemises api de favoris
 *
 *-----------------------------------------------------------------------*

#define PR_AUTO_ADD_NEW_SUBS PROP_TAG (PT_BOOLEAN, pidExchangeNonXmitReservedMin+0x5)
#define PR_NEW_SUBS_GET_AUTO_ADD PROP_TAG (PT_BOOLEAN, pidExchangeNonXmitReservedMin+0x6)
/*------------------------------------------------------------------------
 *
 * Propriétés employées par les chemises en différé api
 *
 *-----------------------------------------------------------------------*

#define PR_OFFLINE_FLAGS PROP_TAG (PT_LONG, pidFolderMin+0x5)
#define PR_SYNCHRONIZE_FLAGS PROP_TAG (PT_LONG, pidExchangeNonXmitReservedMin+0x4)


/*------------------------------------------------------------------------
 *
 * Drapeaux employés par les chemises en différé api
 *
 *-----------------------------------------------------------------------*

#define OF_AVAILABLE_OFFLINE ((ULONG) 0x00000001)
#define OF_FORCE ((ULONG) 0x80000000)

#define SF_DISABLE_STARTUP_SYNC ((ULONG) 0x00000001)

/*------------------------------------------------------------------------
 *
 * déclaration d'interface de « IExchangeMessageConversion »
 *
 * Utilisé pour configurer des jets de conversion de message
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEMESSAGECONVERSION_METHODS) (D'IPURE \
	MAPIMETHOD) (d'OpenStream \
		(, De cValues de THIS_ ULONG \
				, lpPropArray de LPSPropValue \
				De LPSTREAM lppStream LOIN *) IPURE ;
INTERFACE de #undef
INTERFACE IExchangeMessageConversion de #define
DECLARE_MAPI_INTERFACE_ (IExchangeMessageConversion, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (PUR)
	EXCHANGE_IEXCHANGEMESSAGECONVERSION_METHODS (PUR)
} ;
Le #undef METTENT EN APPLICATION
Le #define METTENT EN APPLICATION

DECLARE_MAPI_INTERFACE_PTR (IExchangeMessageConversion, LPEXCHANGEMESSAGECONVERSION) ;

#define PR_MESSAGE_SITE_NAME PROP_TAG (PT_TSTRING, pidExchangeNonXmitReservedMin+0x7)
#define PR_MESSAGE_SITE_NAME_A PROP_TAG (PT_STRING8, pidExchangeNonXmitReservedMin+0x7)
#define PR_MESSAGE_SITE_NAME_W PROP_TAG (PT_UNICODE, pidExchangeNonXmitReservedMin+0x7)

#define PR_MESSAGE_PROCESSED PROP_TAG (PT_BOOLEAN, pidExchangeNonXmitReservedMin+0x8)

#define PR_MSG_BODY_ID PROP_TAG (PT_LONG, pidExchangeXmitReservedMin-0x03)


#define PR_BILATERAL_INFO PROP_TAG (PT_BINARY, pidExchangeXmitReservedMin-0x04)
#define PR_DL_REPORT_FLAGS PROP_TAG (PT_LONG, pidExchangeXmitReservedMin-0x05)

#define PRIV_DL_HIDE_MEMBERS 0x00000001
#define PRIV_DL_REPORT_TO_ORIG 0x00000002
#define PRIV_DL_REPORT_TO_OWNER 0x00000004
#define PRIV_DL_ALLOW_OOF 0x00000008

/*---------------------------------------------------------------------------------
 *
 * PR_PREVIEW est une propriété de contenu de chemise qui est l'un ou l'autre PR_ABSTRACT
 * ou les 255 premiers caractères de PR_BODY.
 * PR_PREVIEW_UNREAD est une propriété de contenu de chemise qui est l'un ou l'autre PR_PREVIEW
 * si le message n'est pas lu, ou NULLE si on le lit.
 *
 *---------------------------------------------------------------------------------*
#define PR_ABSTRACT PROP_TAG (PT_TSTRING, pidExchangeXmitReservedMin-0x06)
#define PR_ABSTRACT_A PROP_TAG (PT_STRING8, pidExchangeXmitReservedMin-0x06)
#define PR_ABSTRACT_W PROP_TAG (PT_UNICODE, pidExchangeXmitReservedMin-0x06)

#define PR_PREVIEW PROP_TAG (PT_TSTRING, pidExchangeXmitReservedMin-0x07)
#define PR_PREVIEW_A PROP_TAG (PT_STRING8, pidExchangeXmitReservedMin-0x07)
#define PR_PREVIEW_W PROP_TAG (PT_UNICODE, pidExchangeXmitReservedMin-0x07)

#define PR_PREVIEW_UNREAD PROP_TAG (PT_TSTRING, pidExchangeXmitReservedMin-0x08)
#define PR_PREVIEW_UNREAD_A PROP_TAG (PT_STRING8, pidExchangeXmitReservedMin-0x08)
#define PR_PREVIEW_UNREAD_W PROP_TAG (PT_UNICODE, pidExchangeXmitReservedMin-0x08)

//
// informe IMAIL que la pleine fidélité devrait être jetée pour ce message.
//
#define PR_DISABLE_FULL_FIDELITY PROP_TAG (PT_BOOLEAN, pidRenMsgFldMin+0x72)

attributs de dossier de // pour des messages/chemises
le besoin de // d'être dans la gamme de propriété de REN afin de replier
#define PR_ATTR_HIDDEN PROP_TAG (PT_BOOLEAN, pidRenMsgFldMin+0x74)
#define PR_ATTR_SYSTEM PROP_TAG (PT_BOOLEAN, pidRenMsgFldMin+0x75)
#define PR_ATTR_READONLY PROP_TAG (PT_BOOLEAN, pidRenMsgFldMin+0x76)

Drapeau de // indiquant si le msg a été lu ou pas (appui vertical inaltérable pour maintenant - non replié).
#define PR_READ PROP_TAG (PT_BOOLEAN, pidStoreNonTransMin+0x29)

Descripteur de sécurité administrative de // pour une chemise, si présent.
//
#define PR_ADMIN_SECURITY_DESCRIPTOR PROP_TAG (PT_BINARY, 0x3d21)
//
Représentation compatible de // Win32 de descripteur de sécurité de chemise/message
//
#define PR_WIN32_SECURITY_DESCRIPTOR PROP_TAG (PT_BINARY, 0x3d22)
//
// VRAI si PR_NT_SECURITY_DESCRIPTOR décrit non la sémantique de Win32 ACL.
// si ceci est placé, les composants qui emploient PR_WIN32_SECURITY_DESCRIPTOR ne peut pas
// permettent la modification de PR_NT_SECURITY_DESCRIPTOR (ou de PR_DEFAULT_MESSAGE_SD).
//
#define PR_NON_WIN32_ACL PROP_TAG (PT_BOOLEAN, 0x3d23)

//
Les articles VRAIS de // le cas échéant dans la chemise contiennent l'article ACLs de niveau
//
#define PR_ITEM_LEVEL_ACL PROP_TAG (PT_BOOLEAN, 0x3d24)

#define PR_DAV_TRANSFER_SECURITY_DESCRIPTOR PROP_TAG (PT_BINARY, 0x0E84)
//
// XML a composé des versions des propriétés de DESCRIPTEUR de SÉCURITÉ de NT
#define PR_NT_SECURITY_DESCRIPTOR_AS_XML PROP_TAG (PT_TSTRING, pidStoreNonTransMin+0x2A)
#define PR_NT_SECURITY_DESCRIPTOR_AS_XML_A PROP_TAG (PT_STRING8, pidStoreNonTransMin+0x2A)
#define PR_NT_SECURITY_DESCRIPTOR_AS_XML_W PROP_TAG (PT_UNICODE, pidStoreNonTransMin+0x2A)
#define PR_ADMIN_SECURITY_DESCRIPTOR_AS_XML PROP_TAG (PT_TSTRING, pidStoreNonTransMin+0x2B)
#define PR_ADMIN_SECURITY_DESCRIPTOR_AS_XML_A PROP_TAG (PT_STRING8, pidStoreNonTransMin+0x2B)
#define PR_ADMIN_SECURITY_DESCRIPTOR_AS_XML_W PROP_TAG (PT_UNICODE, pidStoreNonTransMin+0x2B)


/*------------------------------------------------------------------------------------
*
* Propriété d'information d'OWA
*
*------------------------------------------------------------------------------------*
#define PR_OWA_URL PROP_TAG (PT_STRING8, pidRenMsgFldMin+0x71)


// $ que la valeur de cette identification de propriété changera à l'avenir.  Ne pas compter dessus
// $ sa valeur courante.  Compter sur la définition seulement.
#define PR_STORE_SLOWLINK PROP_TAG (PT_BOOLEAN, 0x7c0a)


/*
 * Endroits d'enregistrement des arrangements
 *
&& (WIN32) défini par #if ! défini (MAC)
#define SZ_HPC_V2 « \ de logiciel \ Microsoft \ \ services de Windows CE »
#define SZ_HPC_V2_MAJOR « MajorVersion » // = 2
#define SZ_HPC_V2_MINOR « MinorVersion » // = 0 ou 1

#define SZ_HPC_V1 « logiciel \ \ \ de Microsoft \ Pegasus »
Le #define SZ_HPC_V1_MAJOR « MajorVersion » // = 1 nombres importants et mineurs n'est pas apparu
Le #define SZ_HPC_V1_MINOR « MinorVersion » // = 1 jusqu'à après v1.0 a été libéré
#define SZ_HPC_V1_0 « InstalledDir » // actuel pour v1.0

#define SZ_OUTL_OST_OPTIONS « \ de logiciel \ Microsoft \ \ \ de bureau \ 8.0 \ \ \ de perspectives \ OST »
#define SZ_NO_OST « NoOST »
On permet le #define NO_OST_FLAG_ALLOWED 0 // OST sur la machine
Le #define NO_OST_FLAG_CACHE_ONLY 1 // OST peut seulement être employé comme cachette
On ne permet pas le #define NO_OST_FLAG_NOT_ALLOWED 2 // OST sur la machine
On ne permet pas le #define NO_OST_FLAG_NO_CACHE 3 // OST comme cachette
#DEFINE NO_OST_DEFAULT NO_OST_FLAG_ALLOWED
#endif

/*
 * Propriété spéciale de GUID pour supprimer des événements de synchro pour des chemises. Si
 * cette propriété est placée sur une chemise (toute valeur de GIUD), événements de synchro 
 * être supprimé pour cette chemise. Le visiteur peut alors sélectivement permettre
 * événements de synchro pour cette chemise en spécifiant le GUID correspondant dedans
 * l'objet de NEWLOGON.
 *
#define PR_SYNCEVENT_SUPPRESS_GUID PROP_TAG (PT_BINARY, 0x3880)

/*
 * Ce qui suit sont les GUIDS bien connus pour les différentes chemises spéciales.
 * Par défaut, des événements de synchro sont supprimés pour ces chemises. Vous pouvez s'insérer 
 * GUIDs dans votre objet de NEWLOGON pour permettre sélectivement des événements de synchro pour
 * chaque chemise.
 *
// {B2DC5B57-AF2D-4915-BAE3-90E5BDFB0070}
guidOutboxSyncEvents du const GUID de //static = 
// { 
// 0xb2dc5b57, 0xaf2d, 0x4915, 
// { 
// 0xba, 0xe3, 0x90, 0xe5, 0xbd, 0xfb, 0x0, 0x70 
//} 
//} ;
//
// {2185EE91-28CD-4d9b-BFB4-BC49BB1DD8C0}
guidMTSInSyncEvents du const GUID de //static = 
// { 
// 0x2185ee91, 0x28cd, 0x4d9b, 
// {
// 0xbf, 0xb4, 0xbc, 0x49, 0xbb, 0x1d, 0xd8, 0xc0 
//} 
//} ;
//
// {1BDBAFD3-1384-449b-A200-DE4745B07839}
guidMTSOutSyncEvents du const GUID de //static = 
// {
// 0x1bdbafd3, 0x1384, 0x449b, 
// { 
// 0xa2, 0x0, 0xde, 0x47, 0x45, 0xb0, 0x78, 0x39 
//} 
//} ;
//
// {221ED74D-0B5C-4c0e-8807-23AFDD8AC2FF}
guidTransportTempFolderSyncEvents du const GUID de //static = 
// {
// 0x221ed74d, 0xb5c, 0x4c0e, 
// { 
// 0x88, 0x7, 0x23, 0xaf, 0xdd, 0x8a, 0xc2, 0xff 
//} 
//} ;


/*
 * Fermer à clef les propriétés
 *
 //REVIEW : : certaines de ces définitions apparaissent tous les deux dans MAPITAGS.H et EDKMDB.H
 //one a placé des définitions devrait être enlevé
#define PR_LOCK_BRANCH_ID PROP_TAG (PT_I8, 0x3800)
#define PR_LOCK_RESOURCE_FID PROP_TAG (PT_I8, 0x3801)
#define PR_LOCK_RESOURCE_DID PROP_TAG (PT_I8, 0x3802)
#define PR_LOCK_RESOURCE_VID PROP_TAG (PT_I8, 0x3803)
#define PR_LOCK_ENLISTMENT_CONTEXT PROP_TAG (PT_BINARY, 0x3804)
#define PR_LOCK_TYPE PROP_TAG (PT_SHORT, 0x3805)
#define PR_LOCK_SCOPE PROP_TAG (PT_SHORT, 0x3806)
#define PR_LOCK_TRANSIENT_ID PROP_TAG (PT_BINARY, 0x3807)
#define PR_LOCK_DEPTH PROP_TAG (PT_LONG, 0x3808)
#define PR_LOCK_TIMEOUT PROP_TAG (PT_LONG, 0x3809)
#define PR_LOCK_EXPIRY_TIME PROP_TAG (PT_SYSTIME, 0x380a)
#define PR_LOCK_GLID PROP_TAG (PT_BINARY, 0x380b)
#define PR_LOCK_NULL_URL_W PROP_TAG (PT_UNICODE, 0x380c)

/*
 * Ferment à clef des drapeaux
 *
#define LOCK_NON_PERSISTENT 0x00000001 
#define LOCK_BLOCKING_MID_LOCK 0x00000002
#define LOCK_NULL_RESOURCE 0x00000004
#define LOCK_READ_ACCESS_CHECK_ONLY 0x00000008
#define LOCK_WRITE_THROUGH_GOP 0x00010000 
// ce peu est réservé et ne doit pas être placé !
#define LOCK_RESERVED 0x80000000 

/*
 * Ouvrir les drapeaux
 *
#define UNLOCK_CHECKIN_ABORT 0x00000001 
#define UNLOCK_CHECKIN_KEEP_LOCKED 0x00000002
#define UNLOCK_BLOCKING_MID_LOCK_ALL 0x00000004
#define UNLOCK_BLOCKING_MID_LOCK_LOGON_ONLY 0x00000008
#define UNLOCK_NULL_RESOURCE 0x00000010
#define UNLOCK_WRITE_THROUGH_GOP 0x00010000

/*
 * Drapeaux de Versioning pour la chemise
 *
wNonVersionedFolder de #define ((MOT) 0x0000)
wVersionedFolderSimple de #define ((MOT) 0x0001)
wVersionedFolderAuto de #define ((MOT) 0x0002) //When vous version automatique il est simple versioned aussi bien.

/*
 * Les codes opération de Versioning pour la version rame dans le ptagVersionedOperation
 *
fVersionedDelete de #define ((ULONG) 0x01)
fVersionedUnDelete de #define ((ULONG) 0x02)
fVersionedPin de #define ((ULONG) 0x04)
fVersionedUnPin de #define ((ULONG) 0x08)
fVersionedMoveIn de #define ((ULONG) 0x10)
fVersionedMoveOut de #define ((ULONG) 0x20)

/*------------------------------------------------------------------------
 *
 * Propriétés internes spécifiques de LocalStore
 *
 * Ce sont des propriétés qui seront employées intérieurement par le magasin local.
 * Des propriétés qui sont énumérées ici sont employées dans les composants autres que le magasin local
 *-----------------------------------------------------------------------*
pidLISMsgFolderPropMin pidLocalStoreInternalMin+0xa0 // 0x65a0 de #define
pidLISMsgFolderPropMax pidLocalStoreInternalMin+0xc0 // 0x65c0 de #define

pidLISErrorCodeMin pidLISMsgFolderPropMin+0xa // 0x65aa de #define
pidLISErrorCodeMax pidLISMsgFolderPropMin+0x10 // 0x65b0 de #define

pidLISInterfacePropMin pidLocalStoreInternalMin+0xd0 // 0x65d0 de #define
pidLISInterfacePropMax pidLocalStoreInternalMin+0xe0 // 0x65e0 de #define

ptagLISSubfolders PROP_TAG (PT_BOOLEAN, pidLocalStoreInternalMin+0x0) de #define
ptagLISUnreadCount PROP_TAG (PT_LONG, pidLocalStoreInternalMin+0x1) de #define

ptagLISErrorCode PROP_TAG (PT_LONG, pidLISErrorCodeMin+0x0) de #define // PROP_TAG (PT_LONG, 0x65aa)
ptagLISErrorItemType PROP_TAG (PT_LONG, pidLISErrorCodeMin+0x1) de #define // PROP_TAG (PT_LONG, 0x65ab)
ptagLISErrorOperation PROP_TAG (PT_LONG, pidLISErrorCodeMin+0x2) de #define // PROP_TAG (PT_LONG, 0x65ac)
ptagLISErrorItemUrl PROP_TAG (PT_UNICODE, pidLISErrorCodeMin+0x3) de #define // PROP_TAG (PT_UNICODE, 0x65ad)
ptagLISErrorSourceUrl PROP_TAG (PT_UNICODE, pidLISErrorCodeMin+0x4) de #define // PROP_TAG (PT_UNICODE, 0x65ae)
ptagLISModifiedPropertyList PROP_TAG (PT_UNICODE, pidLISErrorCodeMin+0x5) de #define // PROP_TAG (PT_UNICODE, 0x65af)
ptagLISExtendedErrorinfo PROP_TAG (PT_LONG, pidLISErrorCodeMin+0x6) de #define // PROP_TAG (PT_LONG, 0x65b0)

// pas dans la gamme d'appui vertical de msgfolder
ptagLISErrorLogUrl PROP_TAG (PT_UNICODE, pidLocalStoreInternalMin+0x70) de #define // PROP_TAG (PT_UNICODE, 0x6570)

// Ptags employé entre EXOLEDB et LSCache sur la machine de client pour passer 
// le long de la question réelle du client SQL d'EXOLEDB à LSCache dans le RES_COMMENT
rangée val d'appui vertical de // d'un SRestriction.  Ces ptags jamais sont envoyés réellement à travers
fil de // ou stocké comme propriétés sur des objets dans la cachette.
//
ptagSql de // = la propriété de identification pour la restriction de SQL.  
// la valeur sera la clause complète originale.
ptagSql PROP_TAG (PT_UNICODE, pidLISInterfacePropMin+0x0) de #define		
ptagSqlSelect PROP_TAG (PT_UNICODE, pidLISInterfacePropMin+0x1) de #define
ptagSqlFrom PROP_TAG (PT_UNICODE, pidLISInterfacePropMin+0x2) de #define
ptagSqlWhere PROP_TAG (PT_UNICODE, pidLISInterfacePropMin+0x3) de #define
ptagSqlOrder PROP_TAG (PT_UNICODE, pidLISInterfacePropMin+0x4) de #define
ptagSqlGroup PROP_TAG (PT_UNICODE, pidLISInterfacePropMin+0x5) de #define

Serveur correspondant RUID du #define PR_RULE_SERVER_RULE_ID PROP_TAG (PT_I8, pidLISMsgFolderPropMin+0x0) // pour le LIS

// ceci est une propriété de hackish à employer par code d'événement de synchro pour dire que des changements
le client du besoin de // régénèrent. La seule valeur valide est VRAIE. Voir le #168797 pour plus d'information
#define PR_FORCE_CLIENT_REFRESH PROP_TAG (PT_BOOLEAN, pidLISMsgFolderPropMin+0x1)

/*------------------------------------------------------------------------
 *
 * Appui d'intégration de produits d'antivirus
 *
 * Toutes les propriétés sont inaltérables.
 *-----------------------------------------------------------------------*

Nom de // et version de produit d'antivirus qui a exécuté le dernier balayage d'un article.
#define PR_ANTIVIRUS_VENDOR PROP_TAG (PT_STRING8, pidStoreNonTransMin+0x45) // 0x0E85001E
#define PR_ANTIVIRUS_VERSION PROP_TAG (PT_LONG, pidStoreNonTransMin+0x46) // 0x0E860003

// résulte ot le dernier balayage d'un article.
#define PR_ANTIVIRUS_SCAN_STATUS PROP_TAG (PT_LONG, pidStoreNonTransMin+0x47) // 0x0E870003

La liste de // de cordes d'identification de virus de tous les virus a trouvé par le dernier balayage, si le virus a été nettoyé
// ou détecté, séparé par des commans. Corde vide si aucun virus n'a été trouvé.
#define PR_ANTIVIRUS_SCAN_INFO PROP_TAG (PT_STRING8, pidStoreNonTransMin+0x48) // 0x0E88001F

/*
 * Valeurs possibles de PR_ANTIVIRUS_SCAN_STATUS
 *
Le produit d'antivirus de // a accompli le balayage d'un article, et n'a trouvé aucun virus.
#define ANTIVIRUS_SCAN_NO_VIRUS 0

Le produit d'antivirus de // a détecté un virus dans un article, ou assumé l'article peut contenir un virus
// a basé sur les propriétés de l'article, comme le nom de fichier ou le type content. 
#define ANTIVIRUS_SCAN_VIRUS_PRESENT 1

Le produit d'antivirus de // a détecté un virus dans un article, et les changements appliqués pour enlever le virus.
Il devrait être sûr employer // l'article après des modifications.
#define ANTIVIRUS_SCAN_VIRUS_CLEANED 2

// cette propriété N'EST PLUS EMPLOYÉ. Je l'ai laissée ici pour éviter la coupure possible de construction.
ptagLISNewMail PROP_TAG (PT_BOOLEAN, 0x65c5) de #define

#endif //EDKMDB_INCLUDED
class= > " clair " de
> de " codeSnippet " de class= de
class= " lineNumbers " de
class= de
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 :
44 :
45 :
46 :
47 :
48 :
49 :
50 :
51 :
52 :
53 :
54 :
55 :
56 :
57 :
58 :
59 :
60 :
61 :
62 :
63 :
64 :
65 :
66 :
67 :
68 :
69 :
70 :
71 :
72 :
73 :
74 :
75 :
76 :
77 :
78 :
79 :
80 :
81 :
82 :
83 :
84 :
85 :
86 :
87 :
88 :
89 :
90 :
91 :
92 :
93 :
94 :
95 :
96 :
97 :
98 :
99 :
100 :
101 :
102 :
103 :
104 :
105 :
106 :
107 :
108 :
109 :
110 :
111 :
112 :
113 :
114 :
115 :
116 :
117 :
118 :
119 :
120 :
121 :
122 :
123 :
124 :
125 :
126 :
127 :
128 :
129 :
130 :
131 :
132 :
133 :
134 :
135 :
136 :
137 :
138 :
139 :
140 :
141 :
142 :
143 :
144 :
145 :
146 :
147 :
148 :
149 :
150 :
151 :
152 :
153 :
154 :
155 :
156 :
157 :
158 :
159 :
160 :
161 :
162 :
163 :
164 :
165 :
166 :
167 :
168 :
169 :
170 :
171 :
172 :
173 :
174 :
175 :
176 :
177 :
178 :
179 :
180 :
181 :
182 :
183 :
184 :
185 :
186 :
187 :
188 :
189 :
190 :
191 :
192 :
193 :
194 :
195 :
196 :
197 :
198 :
199 :
200 :
201 :
202 :
203 :
204 :
205 :
206 :
207 :
208 :
209 :
210 :
211 :
212 :
213 :
214 :
215 :
216 :
217 :
218 :
219 :
220 :
221 :
222 :
223 :
224 :
225 :
226 :
227 :
228 :
229 :
230 :
231 :
232 :
233 :
234 :
235 :
236 :
237 :
238 :
239 :
240 :
241 :
des en-têtes après " de " codeSnippet667512 d'id= " de
//The de class= peuvent être exigés sinon déjà dans le projet :

#include 

/*******************************************************************************

  AddMailbox

  Cette fonction ajoutera une boîte aux lettres additionnelle d'échange à un MAPI existant
  profil. Il suppose que vous avez déjà initialisé MAPI.

  Paramètres :
    lpszProfile le nom du profil vous allez modifier.
    lpszMailboxDisplay la corde qui sera montrée dans le profil UI.
                        Les perspectives emploient le format « boîte aux lettres - daine de John »
    lpszMailboxDN le nom distingué de la boîte aux lettres à ajouter.
                        Ex. « /o=Microsoft/ou=Test/cn=Recipients/cn=JohnD »
    lpszServer le nom de DNS du serveur où l'additionnel
                        la boîte aux lettres réside.
    lpszServerDN le nom distingué du serveur où
                        la boîte aux lettres additionnelle réside.
                        Ex. « /o=Microsoft/ou=Test/cn=Configuration/cn=TestSrv »

  Rendement :
    Les hRes de HRESULT renvoie S_OK si accomplis avec succès, autrement
                        renvoie une erreur de MAPI.
*******************************************************************************/ 




HRESULT AddMailbox (LPSTR lpszProfile, 
					LPSTR lpszMailboxDisplay, 
					lpszMailboxDN de LPSTR,  
					lpszServer de LPSTR,  
					lpszServerDN de LPSTR)
{
    hRes de HRESULT = S_OK ;            Le code de résultat de // est retourné des appels de MAPI.
    lpProfAdmin = NULLE de LPPROFADMIN ;     Indicateur d'Admin de profil de //.
    lpSvcAdmin = NULLE de LPSERVICEADMIN ;      Indicateur d'Admin de service de message de //.
    lpProvAdmin = NULLE de LPPROVIDERADMIN ;     Indicateur d'Admin de fournisseur de //.
    LPMAPITABLE lpMsgSvcTable = NULLE ;   Indicateur de table de // MAPI.
    lpProfileSection = NULLE de LPPROFSECT ; /indicateur section de profil.
    lpSvcRows = NULLE de LPSRowSet ;       Indicateur réglé de rangée de //.
    SPropValue rgval [4] ;               Structure de valeurs d'une propriété de // pour tenir l'information de configuration.
    SPropValue NewVals ;                Structure de valeurs d'une propriété de // pour tenir l'information globale de profil.
    Sres de SRestriction ;                   Structure de restriction de // (utilisée dans HrQueryAllRows).
    SPropValue SvcProps ;               Structure de valeurs d'une propriété de // utilisée dans la restriction.
    lpGlobalVals = NULLE de LPSPropValue ;    Indicateur de struct de valeurs d'une propriété de // pour la section globale de profil.
    ulProps d'ULONG = 0 ;            Compte de // d'appui verticaux.
    cbNewBuffer d'ULONG = 0 ;        Compte de // de bytes pour le nouvel amortisseur.

    Énumération de // pour la convenance.
    enum {iDispName, iSvcName, iSvcUID, cptaSvc} ;

    // cette structure indique à HrQueryAllRows quelles colonnes nous voulons retourné.
    SizedSPropTagArray (cptaSvc, sptCols) = {cptaSvc, 
                                            PR_DISPLAY_NAME, 
                                            PR_SERVICE_NAME, 
                                            PR_SERVICE_UID} ;

    // cette structure indique à notre appel de GetProps quelles propriétés à obtenir de la section globale de profil.
    SizedSPropTagArray (1, sptGlobal) = {1, PR_STORE_PROVIDERS} ;

    // obtiennent une interface d'IProfAdmin.

    hRes = MAPIAdminProfiles (0, drapeaux de //
                             &lpProfAdmin) ; Indicateur de // à nouvel IProfAdmin
    si (ÉCHOUÉ (hRes)) error_handler goto ;
    printf (« a recherché l'interface d'IProfAdmin. \ n ») ;

    // descendent d'une interface d'IMsgServiceAdmin de l'interface d'IProfAdmin.

    hRes = lpProfAdmin->AdminServices (lpszProfile, profil de // que nous voulons modifier.
                                      "", mot de passe de // pour ce profil.
                                      NULLE, poignée de // pour parent la fenêtre.
                                      0, drapeaux de //.
                                      &lpSvcAdmin) ; Indicateur de // à nouvel IMsgServiceAdmin.
    si (ÉCHOUÉ (hRes)) error_handler goto ;
    printf (« a recherché l'interface d'IMsgServiceAdmin. \ n ») ;
        
    // que nous devons maintenant obtenir l'identification d'entrée pour le service d'échange.
    // d'abord, nous obtenons la table de service de message.

    hRes = lpSvcAdmin->GetMsgServiceTable (0, drapeaux de //
                                          &lpMsgSvcTable) ;  Indicateur de // à ajourner
    si (ÉCHOUÉ (hRes)) error_handler goto ;
    printf (« a recherché la table de service de message du profil. \ n ») ;

    Restriction d'installation de // pour questionner la table.

    sres.rt = RES_PROPERTY ;
    sres.res.resProperty.relop = RELOP_EQ ;
    sres.res.resProperty.ulPropTag = PR_SERVICE_NAME ;
    sres.res.resProperty.lpProp = &SvcProps ;

    SvcProps.ulPropTag = PR_SERVICE_NAME ;
    SvcProps.Value.lpszA = « MSEMS » ;

    Question de // la table pour obtenir l'entrée pour le service de message d'échange.

    hRes = HrQueryAllRows (lpMsgSvcTable,
                          &sptCols (de LPSPropTagArray),
                          &sres,
                          NULLE,
                          0,
                          &lpSvcRows) ;
    si (ÉCHOUÉ (hRes)) error_handler goto ;
    printf (« a questionné la table pour le service de message d'échange. \ n ») ;

    // obtiennent un indicateur d'admin de fournisseur.
    hRes = lpSvcAdmin->AdminProviders (lpSvcRows->aRow->lpProps (LPMAPIUID) [iSvcUID]. Value.bin.lpb,
                                      0,
                                      &lpProvAdmin) ;
    si (ÉCHOUÉ (hRes)) error_handler goto ;
    printf (« interface recherchée d'IProviderAdmin \ n ») ;

    // installent une rangée de SPropValue pour les propriétés que vous devez configurer.

    // d'abord, nom d'affichage.
    ZeroMemory (&rgval [0], sizeof (SPropValue)) ;
    rgval [0] .ulPropTag = PR_DISPLAY_NAME ;
    rgval [0]. Value.lpszA = lpszMailboxDisplay ;

    // après, le DN de la boîte aux lettres.
    ZeroMemory (&rgval [1], sizeof (SPropValue)) ;
    rgval [1] .ulPropTag = PR_PROFILE_MAILBOX ; 
    rgval [1]. Value.lpszA = lpszMailboxDN ;

    // après le nom du serveur la boîte aux lettres est allumé.
    ZeroMemory (&rgval [2], sizeof (SPropValue)) ;
    rgval [2] .ulPropTag = PR_PROFILE_SERVER ;
    rgval [2]. Value.lpszA = lpszServer ;

    // en conclusion, le DN du serveur la boîte aux lettres est allumé.
    ZeroMemory (&rgval [3], sizeof (SPropValue)) ;
    rgval [3] .ulPropTag = PR_PROFILE_SERVER_DN ;
    rgval [3]. Value.lpszA = lpszServerDN ;

    // créent le service de message avec les propriétés ci-dessus.
    hRes = lpProvAdmin->CreateProvider (« EMSDelegate »,
                                       4,
                                       rgval,
                                       0,
                                       0,
                                       lpSvcRows->aRow->lpProps (LPMAPIUID) [iSvcUID]. Value.bin.lpb) ;
    si (ÉCHOUÉ (hRes)) error_handler goto ;
    printf (« la nouvelle boîte aux lettres est ajoutée. \ n ») ;

    // nous laissent maintenant placer les appui verticaux que nous avons besoin de sorte que la boîte aux lettres additionnelle 
    // montrera dans l'UI.

    // ouvrent la section globale de profil.
    hRes = lpProvAdmin->OpenProfileSection (pbGlobalProfileSectionGuid (LPMAPIUID),
                                           NULLE,
                                           MAPI_MODIFY,
                                           &lpProfileSection) ;
    si (ÉCHOUÉ (hRes)) error_handler goto ;
    printf (« section globale ouverte de profil. \ n ») ;

    // obtiennent la liste de fournisseurs de magasin dans PR_STORE_PROVIDERS.
    hRes = lpProfileSection->GetProps ((LPSPropTagArray) &sptGlobal,
                                      0,
                                      &ulProps,
                                      &lpGlobalVals) ;
    si (ÉCHOUÉ (hRes)) error_handler goto ;
    printf (« a obtenu la liste de boîtes aux lettres étant ouvertes. \ n ») ;

    // maintenant nous installons une structure de SPropValue avec l'original
    liste de // + l'UID du nouveau service.

    Calcul de // le nouveau nombre d'octets
    cbNewBuffer = lpSvcRows->aRow->lpProps [iSvcUID]. Value.bin.cb + lpGlobalVals->Value.bin.cb ;

    // assignent l'espace pour la nouvelle liste d'UIDs.
    hRes = MAPIAllocateBuffer (cbNewBuffer,
                              (LPVOID *) &NewVals.Value.bin.lpb) ;
    si (ÉCHOUÉ (hRes)) error_handler goto ;
    printf (« amortisseur assigné pour tenir la nouvelle liste de boîtes aux lettres à ouvrir. \ n ») ;

    Copie de // le peu dans la liste.
    // d'abord, copient la liste existante.
    memcpy (NewVals.Value.bin.lpb,
           lpGlobalVals->Value.bin.lpb,
           lpGlobalVals->Value.bin.cb) ;

    // après, copient le nouvel UID sur la fin de la liste.
    memcpy (NewVals.Value.bin.lpb + lpGlobalVals->Value.bin.cb,
           lpSvcRows->aRow->lpProps [iSvcUID]. Value.bin.lpb,
           lpSvcRows->aRow->lpProps [iSvcUID]. Value.bin.cb) ;
    printf (« liste enchaînée des boîtes aux lettres et de la nouvelle boîte aux lettres. \ n ») ;

    // a placé le compte de bytes sur la variable de SPropValue.
    NewVals.Value.bin.cb = cbNewBuffer ;
    // initialisent le dwAlignPad.
    NewVals.dwAlignPad = 0 ;
    // a placé l'étiquette d'appui vertical.
    NewVals.ulPropTag = PR_STORE_PROVIDERS ;

    // a placé la propriété sur la section globale de profil.
    hRes = lpProfileSection->SetProps (ulProps,
                                      &NewVals,
                                      NULLE) ;
    si (ÉCHOUÉ (hRes)) error_handler goto ;
    printf (« placer la nouvelle liste sur la section globale de profil. \ n ») ;

    nettoyage goto ;
    
error_handler :
    printf (« ERREUR : hRes = %0x \ n », hRes) ;

nettoyage :
    // nettoient.
    si (NewVals.Value.bin.lpb) MAPIFreeBuffer (NewVals.Value.bin.lpb) ;
    si (lpGlobalVals) MAPIFreeBuffer (lpGlobalVals) ;
    si (lpSvcRows) FreeProws (lpSvcRows) ;
    si lpMsgSvcTable->Release (lpMsgSvcTable) () ;
    si lpSvcAdmin->Release (de lpSvcAdmin) () ;
    si lpProfAdmin->Release (de lpProfAdmin) () ;
    si lpProvAdmin->Release (de lpProvAdmin) () ;
    si lpProfileSection->Release (de lpProfileSection) () ;

    printf (« nettoyer fait. \ n ») ;

    hRes de retour ;
}


force vide (vide)
{
    hRes de HRESULT = S_OK ;

    MAPIInitialize (NULLE) ;
    hRes = AddMailbox (
        « Mon profil »,
        « M. Mailbox »,
        « /o=MyOrganization/ou=My-Site/cn=Recipients/cn=MMailbox »,
        « MyServer »,
        « /o=MyOrganization/ou=My-Site/cn=Configuration/cn=MyServer ») ;
    MAPIUninitialize () ;
}
class= de

Réponse : Exemple Microsoft de Mapi

Question fermante. ne semble pas être de toute façon faire ceci.
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us