Вопрос : Пример Майкрософт Mapi

Мне нужна некоторая помощь составляя этот архив в визуально студии 2005. ОНА приходит от rel= " nofollow " " _blank " " target= " http://support.microsoft.com/?id=171636 href= om/http://support.microsoft.c? содержание id=171636

I получая ошибки при слежении пытаясь составить его как применение пульта и устанавливающ составляет как ошибка C2039 C.

Error 1: «AdminServices»: не член i \ exchangemapi \ ошибки C2039 «IProfAdmin» c:\development\exchangemap
Error 2 exchangemapi.c 74: «GetMsgServiceTable»: не член i \ exchangemapi \ ошибки C2039 «IMsgServiceAdmin» c:\development\exchangemap
Error 3 exchangemapi.c 85: «AdminProviders»: не член i \ exchangemapi \ ошибки C2039 «IMsgServiceAdmin» c:\development\exchangemap
Error 4 exchangemapi.c 112: «CreateProvider»: не член i \ exchangemapi \ ошибки C2039 «IProviderAdmin» c:\development\exchangemap
Error 5 exchangemapi.c 141: «OpenProfileSection»: не член i \ exchangemapi \ ошибки C2039 «IProviderAdmin» c:\development\exchangemap
Error 6 exchangemapi.c 154: «GetProps»: не член i \ exchangemapi \ ошибки C2039 «IProfSect» c:\development\exchangemap
Error 7 exchangemapi.c 162: «SetProps»: не член i \ exchangemapi \ ошибки C2039 «IProfSect» c:\development\exchangemap
Error 8 exchangemapi.c 201: «Отпуск»: не член i \ exchangemapi \ ошибки C2039 «IMAPITable» c:\development\exchangemap
Error 9 exchangemapi.c 217: «Отпуск»: не член i \ exchangemapi \ ошибки C2039 «IMsgServiceAdmin» c:\development\exchangemap
Error 10 exchangemapi.c 218: «Отпуск»: не член i \ exchangemapi \ ошибки C2039 «IProfAdmin» c:\development\exchangemap
Error 11 exchangemapi.c 219: «Отпуск»: не член i \ exchangemapi \ ошибки C2039 «IProviderAdmin» c:\development\exchangemap
Error 12 exchangemapi.c 220: «Отпуск»: не член i \ exchangemapi \
«IProfSect» c:\development\exchangemap exchangemapi.c 221 class= " ясное " >
> " codeSnippet " class=
class= " lineNumbers "
class=
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 " >/* id= " codeSnippet667511 "
 сразу в URL
// например, URL l "/~FlatUrlSpace/1-401 " сошлется к скоросшивателю с FID 1-401
// и URL l "/~FlatUrlSpace/1-401/2-8fb " сошлются к сообщению с СРЕДНИЙ 2-8fb
// в том скоросшивателе.
// но вспоминает что FID/MID должны быть долгосрочны, т.е. GUID-Globcnt, 
// replid используемое выше должно просто объяснить идею более просто.
#DEFINE WSZ_URL_FLAT_FOLDER_SPACE L " /-FlatUrlSpace-/ «
cwchUrlFlatFolderSpace 16 #define

Свойство // определяет ли скоросшиватель безопасен или не
#define PR_SECURE_IN_SITE PROP_TAG (PT_BOOLEAN, pidAdminMin+0xE)

// PR_LOCAL_COMMIT_TIME поддержано на скоросшивателях и сообщениях. Оно
// FileTime когда предмет был доработан на последнем месте на, котор дали MDB. Он обновлен
// каждый раз, когда предмет доработан (включая скопировано в изменении). Это 
// только вычисленное, non-передаваемый и non-copyable.
#define PR_LOCAL_COMMIT_TIME PROP_TAG (PT_SYSTIME, pidAdminMin+0x79)

// PR_LOCAL_COMMIT_TIME_MAX поддержано на скоросшивателях только. 
// будет >= PR_LOCAL_COMMIT_TIME всех сообщений в скоросшивателе. Оно обновлен
// каждый раз, когда любое сообщение в скоросшивателе доработано. Это только вычислено,
// non-передаваемый и non-copyable.
#define PR_LOCAL_COMMIT_TIME_MAX PROP_TAG (PT_SYSTIME, pidAdminMin+0x7a)

// PR_DELETED_COUNT_TOTAL поддержано на скоросшивателях только.
// будет общим количеством сообщений уничтоженных в этом скоросшивателе от начала
// времени (наилучшим образом, довольно от времени эта характеристика checked-in, скоросшиватели от
серверы // старые модернизированы начнут с 0). Если отсчет переполняет
// 4 байта, он будет начинать снова на 0. Это обновлено когда сообщение в
скоросшиватель // уничтожен. Это только вычислено, non-transmitabble и 
// non-copyable.
#define PR_DELETED_COUNT_TOTAL PROP_TAG (PT_LONG, pidAdminMin+0x7b)

// PR_AUTO_RESET поддержано на сообщениях только. Свое PT_MV_CLSID и уничтожено
// (магазином) всегда сообщение сохранено, если оно не 
// точно установило на сообщение между временем, котор оно было раскрыно и сохранено 
// (потребителем/app раскрыл и более поздно сохранил сообщение). 
// предназначено быть использованным веществами callback async.
#define PR_AUTO_RESET PROP_TAG (PT_MV_CLSID, pidAdminMin+0x7c)

/*------------------------------------------------------------------------
 *
 * Свойства предмета ТАБЛИЦЫ
 *
 * Ряд удостоверения личности: 0x662F-0x662F
 *
 *-----------------------------------------------------------------------*

свойство //This можно использовать в таблице содержания для того чтобы получить PR_ENTRYID после того как я возвращено
//as долгосрочное entryid вместо недолгосрочного entryid.
#define PR_LONG - _ENTRYID_FROM_TABLE PROP_TAG ТЕРМИНЕ (PT_BINARY, pidSpecialMin)

// это будет прочитанным только свойством использовано для таблиц содержания вклюают
входы subfolder //.
#define PR_SUBFOLDER PROP_TAG (PT_BOOLEAN, pidAdminMin+0x78)


/*------------------------------------------------------------------------
 *
 * Свойства ГАБАРИТА входного «MTE»
 *
 * Ряд удостоверения личности:  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

/*------------------------------------------------------------------------
 *
 * Форма свойств следа
 * 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 typedef {
    ДЛИННЕЕ lAction;                // действие трассы трассируя место
                                     // приняло. (1984 действия только)
    ftArrivalTime FILETIME;          // время на коммюнике
                                     // вошло трассируя место.
    ftDeferredTime FILETIME;         // время трассируя место
                                     // выпустило сообщение.
    rgchADMDName чарса [MAX_ADMD_NAME_SIZ+ADMN_PAD];			 	// ADMD
    rgchCountryName чарса [MAX_COUNTRY_NAME_SIZ+COUNTRY_PAD]; 	Страна //
    rgchPRMDId чарса [MAX_PRMD_NAME_SIZ+PRMD_PAD];              	// PRMD
    rgchAttADMDName чарса [MAX_ADMD_NAME_SIZ+ADMN_PAD];       	// попытало ADMD
    rgchAttCountryName чарса [MAX_COUNTRY_NAME_SIZ+COUNTRY_PAD];  // попытало страну
    rgchAttPRMDId чарса [MAX_PRMD_NAME_SIZ+PRMD_PAD_FOR_ACTIONS];	// попытало PRMD
    bAdditionalActions БАЙТА;									// 1998 дополнительных действий
} TRACEENTRY, ДАЛЕКО * LPTRACEENTRY;

struct typedef {
    cEntries ULONG;               Номер // входов следа
    TRACEENTRY rgtraceentry [MAPI_DIM]; блок // входов следа
} TRACEINFO, ДАЛЕКО * LPTRACEINFO;

struct typedef
{
	ДЛИННЕЕ lAction;				// действие 1984 трассы трассируя, котор домен принял.
	ftArrivalTime FILETIME;			// время на коммюнике вписало трассируя домен.
	ftDeferredTime FILETIME;			// время трассировать домен выпустил сообщение.
    rgchADMDName чарса [MAX_ADMD_NAME_SIZ+ADMN_PAD];				// ADMD
    rgchCountryName чарса [MAX_COUNTRY_NAME_SIZ+COUNTRY_PAD]; 		Страна //
    rgchPRMDId чарса [MAX_PRMD_NAME_SIZ+PRMD_PAD];             	// PRMD
    rgchAttADMDName чарса [MAX_ADMD_NAME_SIZ+ADMN_PAD];       		// попытало ADMD
    rgchAttCountryName чарса [MAX_COUNTRY_NAME_SIZ+COUNTRY_PAD];	// попытало страну
    rgchAttPRMDId чарса [MAX_PRMD_NAME_SIZ+PRMD_PAD];		        // попытало PRMD
    rgchMTAName чарса [MAX_MTA_NAME_SIZ+MTA_PAD]; 		            Имя MTA //
    rgchAttMTAName чарса [MAX_MTA_NAME_SIZ+MTA_PAD_FOR_ACTIONS];	// попытало имя MTA
    bAdditionalActions БАЙТА;										// 1988 дополнительных действий
} INTTRACEENTRY, *PINTTRACEENTRY;


struct typedef
{
	cEntries ULONG;					Номер // входов следа
	INTTRACEENTRY rgIntTraceEntry [MAPI_DIM];	блок // внутренне входов следа
} INTTRACEINFO, *PINTTRACEINFO;


/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeModifyTable»
 *
 * Использовано для получите/установите правила и контроль допуска на скоросшивателях.
 *
 *-----------------------------------------------------------------------*


ulRowFlags/* *
#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 struct typedef
{
	ulRowFlags ULONG;
	cValues ULONG;
	rgPropVals LPSPropValue;
} ROWENTRY, ДАЛЕКО * LPROWENTRY;

_ROWLIST struct typedef
{
	cEntries ULONG;
	aEntries ROWENTRY [MAPI_DIM];
} ROWLIST, ДАЛЕКО * LPROWLIST;

#DEFINE EXCHANGE_IEXCHANGEMODIFYTABLE_METHODS) (IPURE \
	MAPIMETHOD) (GetLastError \
		(, hResult THIS_ HRESULT \
				, ulFlags ULONG \
				LPMAPIERROR lppMAPIError) ДАЛЕКО * IPURE;		\
	MAPIMETHOD (GetTable) \
		(, ulFlags THIS_ ULONG \
				LPMAPITABLE ДАЛЕКО * lppTable) IPURE;			\
	MAPIMETHOD) (ModifyTable \
		(, ulFlags THIS_ ULONG \
				lpMods) LPROWLIST IPURE;

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeModifyTable #define
DECLARE_MAPI_INTERFACE_ (IExchangeModifyTable, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEMODIFYTABLE_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeModifyTable, LPEXCHANGEMODIFYTABLE);

Бит флага/* специальный для GetContentsTable, GetHierarchyTable и
	OpenEntry.
	Поддержано > серверы 5.x 
	Если комплект в GetContentsTable и GetHierarchyTable
	мы покажем только т.е. уничтоженными деталями будут уничтоженная нежность,
	потребителем но пока продуто от системы. Если комплект в OpenEntry
	мы раскроем этот деталь даже если будет уничтоженной нежностью *
Биты флага/* не должны вступить в противоречия существующий определениями в Mapi *
/****** MAPI_UNICODE ((ULONG) 0x80000000) выше *
/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) ниже *
/****** MAPI_ASSOCIATED ((ULONG) 0x00000040) ниже *
/****** CONVENIENT_DEPTH ((ULONG) 0x00000001) *
#define SHOW_SOFT_DELETES ((ULONG) 0x00000002)
#define SHOW_SUBFOLDERS ((ULONG) 0x00000004)

биты флага // сдержанные - не установите
#define MAPI_RESERVED1 ((ULONG) 0x00010000)

// не преграждает это OpenMessage (OpenEntry MAPI)
#define MDB_OPEN_MSG_NO_BLOCK ((ULONG) 0x00000020)

// открывает СРЕДНЕЕ на 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)	


Бит флага/* специальный для DeleteFolder
	Поддержано > серверы 5.x 
	Если установлено сервер крепко уничтожит скоросшиватель, то (т.е. он не будет
	сохранено для более последнего спасения) *
Биты флага/* не должны вступить в противоречия существующий определениями в Mapi *
/* DeleteFolder *
/#define DEL_MESSAGES ***** ((ULONG) 0x00000001) *
/#define FOLDER_DIALOG ***** ((ULONG) 0x00000002) *
/#define DEL_FOLDERS ***** ((ULONG) 0x00000004) *
/* EmptyFolder *
/#define DEL_ASSOCIATED ***** ((ULONG) 0x00000008) *

#define DELETE_HARD_DELETE ((ULONG) 0x00000010)

Специфические контроля допуска/* *

//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)

биты //Security
ПРАВА typedef DWORD;
#define frightsReadAny 0x0000001L
frightsCreate 0x0000002L #define
0x0000008L frightsEditOwned #define
0x0000010L frightsDeleteOwned #define
#define frightsEditAny 0x0000020L
#define frightsDeleteAny 0x0000040L
frightsCreateSubfolder 0x0000080L #define
frightsOwner 0x0000100L #define
ПРИМЕЧАНИЕ frightsContact 0x0000200L // #define: не часть rightsAll
#define frightsVisible 0x0000400L
rightsNone 0x00000000 #define
#define rightsReadOnly frightsReadAny
rightsReadWrite #define (frightsReadAny|frightsEditAny)
rightsAll 0x00005FBL #define


//
Права доступа почтового ящика // специфически.
//

//
Примечание // что права sdpermUser не существуют в любом дискрипторе обеспеченностью, они
// поддержано на предмете почтового ящика в магазине, и выступлено с иничиативой от
предмет потребителя // в DS.
//
DELETE fsdpermUserDeleteMailbox #define
fsdpermUserMailboxOwner 0x00000001 #define
fsdpermUserSendAs 0x00000002 #define
fsdpermUserPrimaryUser 0x00000004 #define


sdpermUserGenericRead #define (STANDARD_RIGHTS_READ)

// родовое исполняет
sdpermUserGenericExecute #define (STANDARD_RIGHTS_EXECUTE)
// родовое пишет
sdpermUserGenericWrite #define (STANDARD_RIGHTS_WRITE | fsdpermUserDeleteMailbox)

// родовое все
sdpermUserGenericAll #define (STANDARD_RIGHTS_ALL | fsdpermUserMailboxOwner | fsdpermUserSendAs | fsdpermUserPrimaryUser)

//
Права специфического сообщения //.
//
typedef DWORD SDRIGHTS;

#define fsdrightReadBody 0x00000001 // ** ТОЛЬКО НА СООБЩЕНИЯХ, ТАКИХ ЖЕ КАК FILE_READ_DATA
fsdrightListContents 0x00000001 ПРОИГНОРИРОВАННОЕ // #define ** ТОЛЬКО НА СКОРОСШИВАТЕЛЯХ, ТАКИЕ ЖЕ КАК FILE_LIST_DATA -
#define fsdrightWriteBody 0x00000002 // ** ТОЛЬКО НА СООБЩЕНИЯХ, ТАКИХ ЖЕ КАК FILE_WRITE_DATA
fsdrightCreateItem 0x00000002 // #define ** ТОЛЬКО НА скоросшивателях, ТАКИХ ЖЕ КАК FILE_ADD_FILE

fsdrightAppendMsg 0x00000004 // #define ** ТОЛЬКО НА СООБЩЕНИЯХ, ТАКИХ ЖЕ КАК FILE_WRITE_DATA. ПРИНУЖДЕНО IFS.
fsdrightCreateContainer 0x00000004 // #define ** ТОЛЬКО НА СКОРОСШИВАТЕЛЯХ, ТАКИХ ЖЕ КАК FILE_ADD_FILE

fsdrightReadProperty 0x00000008 // #define ** ТАКОЕ ЖЕ КАК FILE_READ_EA
fsdrightWriteProperty 0x00000010 // #define ** ТАКОЕ ЖЕ КАК FILE_WRITE_EA

fsdrightExecute 0x00000020 // #define такие же как FILE_EXECUTE/FILE_TRAVERSE.  ПРИНУЖДЕНО IFS
#define fsdrightReserved1 0x00000040 // такие же как FILE_DELETE_CHILD. В настоящее время неиспользованно
fsdrightReadAttributes 0x00000080 // #define такие же как FILE_READ_ATTRIBUTES. В настоящее время неиспользованно
fsdrightWriteAttributes 0x00000100 // #define такие же как FILE_WRITE_ATTRIBUTES. В настоящее время неиспользованно

fsdrightWriteOwnProperty 0x00000200 // #define ** ТОЛЬКО НА СООБЩЕНИЯХ
fsdrightDeleteOwnItem 0x00000400 // #define ** ТОЛЬКО НА СООБЩЕНИЯХ
fsdrightViewItem 0x00000800 #define
fsdrightOwner 0x00004000 // #define ** ТОЛЬКО НА СКОРОСШИВАТЕЛЯХ
fsdrightContact 0x00008000 // #define ** ТОЛЬКО НА СКОРОСШИВАТЕЛЯХ

//
Права NT // стандартные.
//
fsdrightWriteSD WRITE_DAC #define
DELETE fsdrightDelete #define
fsdrightWriteOwner WRITE_OWNER #define
fsdrightReadControl READ_CONTROL #define
#define fsdrightSynchronize СИНХРОНИЗИРУЕТ

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

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

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

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

//
// SDRights совместно составляет rightsOwner.
//
sdrightsFolderOwner #define (fsdrightWriteProperty | fsdrightOwner | fsdrightWriteSD | fsdrightDelete | \
							fsdrightWriteOwner | fsdrightWriteAttributes)

//
Права // действительно на скоросшивателях.
//
sdrightsFolders #define (fsdrightDelete | fsdrightReadProperty | fsdrightReadAttributes | \
							fsdrightWriteProperty | fsdrightWriteAttributes | fsdrightWriteOwner | \
							fsdrightReadControl | fsdrightWriteSD | fsdrightExecute | \
							fsdrightCreateContainer | fsdrightViewItem | fsdrightOwner | \
							fsdrightContact | fsdrightCreateItem | fsdrightSynchronize | fsdrightListContents | fsdrightReserved1)

//
Права // действительно на сообщениях.
//
//
N.B. //: fsdrightWriteOwnProperty/fsdrightDeleteOwnItem не находятся в этом списке.
//
sdrightsItems #define (fsdrightDelete | fsdrightReadBody | fsdrightReadAttributes | fsdrightReadProperty | \
							fsdrightWriteProperty | fsdrightWriteBody | fsdrightWriteAttributes | fsdrightReadControl | \
							fsdrightWriteOwner | fsdrightWriteSD | fsdrightViewItem | fsdrightWriteOwnProperty | \
							fsdrightDeleteOwnItem  | fsdrightSynchronize  | fsdrightExecute | fsdrightAppendMsg)

//
// эти права доступа проигнорировано в определении канонического ACL.  В виду того что магазин обменом игнорирует
// эти права, их присутсвие или отсутствие не делает ACL каноническим.
//

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

//
// определения прав ОН назад совместимые.
//
msgrightsGenericRead #define (sdrightsGenericRead & sdrightsItems)
msgrightsGenericWrite #define (sdrightsGenericWrite & sdrightsItems)
msgrightsGenericExecute #define (sdrightsGenericExecute & sdrightsItems)
msgrightsGenericAll #define (sdrightsGenericAll & sdrightsItems)

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

//
// если комплект в поле управлением RM NTSD, позволяет
// администратор точно для того чтобы установить SD на предмете.
//
#define EXCHANGE_RM_SET_EXPLICIT_SD 0x01

//
// восстановляет удостоверение личности свойства от guid

#define GUID_PROP_ID (pguid) ((pguid) - >Data1 & 0xffff)
#define GUID_SUB_PROP_ID (pguid) ((pguid) - >Data1 >> 16 & 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)

, #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 | , PROP_ID (ptag) \
							0x6585, 0x11d3, \
							{0xb6, 0x19, 0x00, 0xaa, 0x00, 0x4b, 0x9c, 0x30}} \


//
Вариант перехода // для PR_NT_SECURITY_DESCRIPTOR.
//
// восстановляя дискриптор обеспеченностью для предмета, возвращенный SD
// фактическ составленное следующий структуры:
//
// 2 БАЙТА прокладывая длину данных (включая вариант)
// вариант 2 БАЙТ
// данные по обеспеченностью 4 БАЙТ (для SetPrivateObjectSecurity)
// <0 или more>
// бирка свойства 2 БАЙТ
// 16 БАЙТ назвало Свойство GUID 
// 1 БАЙТ назвало свойство «вид»
// если (добросердечное == MNID_ID), то
// 4 БАЙТА назвало свойство УДОСТОВЕРЕНИЕ ЛИЧНОСТИ
// еще

Дискриптор обеспеченностью // фактический
//
// для того чтобы обусловить дискриптор обеспеченностью от PR_NT_SECURITY_DESCRIPTOR,
польза // макрос SECURITY_DESCRIPTOR_OF.
//
// для того чтобы обусловить вариант дискриптора обеспеченностью, использует макрос SECURITY_DESCRIPTOR_VERSION.
//
//
// угождает замечает что OLEDB/DAV резервирует ровные номера варианта перехода, поэтому должно ВСЕГДА быть сверхсчетным номером.
//
#define SECURITY_DESCRIPTOR_TRANSFER_VERSION 0x0003

#define SECURITY_DESCRIPTOR_OF (pb) (((БАЙТ *) (pb)) + * ((СЛОВО *) (pb)))
#define SECURITY_DESCRIPTOR_VERSION (pb) (* ((СЛОВО *) ((pb) + sizeof (СЛОВО))))
#define SECURITY_INFORMATION_OF (pb) (* ((DWORD *) ((pb) + sizeof (СЛОВО) + sizeof (СЛОВО))))
Pb) CbSecurityDescriptorHeader #define ((pb) (* ((СЛОВО *)))

//
//, котор нужно проверить для того чтобы увидеть если вариант дискриптора обеспеченностью сопрягает в настоящее время составленное
вариант //.
//
#define FCheckSecurityDescriptorVersion (pb) (== SECURITY_DESCRIPTOR_TRANSFER_VERSION SECURITY_DESCRIPTOR_VERSION (pb))

//
Объемы роли //
//
БАЙТ ROLESCOPE typedef;
Роли #define ROLESCOPE_OBJECT 0x00 // будут прочитаны от предмета самого (скоросшиватель или деталь)
Роли #define ROLESCOPE_FOLDER 0x01 // будут прочитаны от скоросшивателя самого, или содержа скоросшивателя если будет деталем
#DEFINE ROLESCOPE_MAX ROLESCOPE_FOLDER	

//
Авторитет обеспеченностью // используемый для sids роли
//
#define SECURITY_EXCHANGE_AUTHORITY {0.0.0.0.0.8}

//
Свойства роли применения //
//
#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)


/* управляет специфическими *

Типы свойства //
#define PT_SRESTRICTION ((ULONG) 0x00FD)
#define PT_ACTIONS ((ULONG) 0x00FE)

/*-----------------------------------------------------------------------
 * PT_FILE_HANDLE: реальные данные находятся в архиве определенном ручкой. 
 * упорка. Value.l имеет ручку архива
 * PT_FILE_EA:	реальные данные находятся в архиве определенном выдвинутым атрибутом
 * упорка. Value.bin имеет бинарные данные по EA
 * PT_VIRTUAL: реальными данными будут вычисленная дальше - - муха.
 * упорка. Value.bin имеет сырцовый бинарный фактически шарик свойства имеет
 * информация для того чтобы сделать преобразование. Это внутренне к магазину и
 * не поддерживает для звоноков снаружи.
 *-----------------------------------------------------------------------*

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

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

//Properties в таблице правила
#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)
// двинуло к ptag.h (scottno) - все еще необходимо для upgrader 2.27
#define PR_RULE_VERSION PROP_TAG // (PT_I2, pidSpecialMin+0x1D)

стоимости имущества //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

ограничение //Empty
#define NULL_RESTRICTION 0xff

// специальное RELOP для члена DL
#define RELOP_MEMBER_OF_DL 100

типы //Action
enum 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;

имя провайдера // для правил модератора
szProviderModeratorRule «MSFT #define: Г-Н»
wszProviderModeratorRule l " MSFT #define: Г-Н "

флейворы действия //

// для OP_REPLY
#define DO_NOT_SEND_TO_ORIGINATOR 1
#define STOCK_REPLY_TEMPLATE 2

// для OP_FORWARD
#define FWD_PRESERVE_SENDER 1
#define FWD_DO_NOT_MUNGE_MSG 2
#define FWD_AS_ATTACHMENT 4

значения //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

приставка типа //Message для шаблонов ответа и ответа OOF
szReplyTemplateMsgClassPrefix «IPM.Note.Rules.ReplyTemplate #define.»
szOofTemplateMsgClassPrefix «IPM.Note.Rules.OofTemplate #define.»

структура //Action
_action struct typedef
{
	Acttype ACTTYPE;

	// для того чтобы показать который флейвор действия.
	ulActionFlavor ULONG;

	Ограничение действия //
	// в настоящее время использовало и должно быть установлено для того чтобы АННУЛИРОВАТЬ
	lpRes LPSRestriction;

	// в настоящее время неиспользованное, необходимо установить до 0.
	LPSPropTagArray lpPropTagArray;

	Потребитель // - определенные флаги
	ulFlags ULONG;

	// прокладывая для того чтобы выровнять соединение на границе байта 8
	dwAlignPad ULONG;

	соединение
	{
		// использовало для действий OP_MOVE и OP_COPY
		struct
		{
			cbStoreEntryId ULONG;
			lpStoreEntryId LPENTRYID;
			cbFldEntryId ULONG;
			lpFldEntryId LPENTRYID;
		} actMoveCopy;

		// использовало для действий OP_REPLY и OP_OOF_REPLY
		struct
		{
			cbEntryId ULONG;
			lpEntryId LPENTRYID;
			guidReplyTemplate GUID;
		} actReply;

		// использовало для действия OP_DEFER_ACTION
		struct
		{
			cbData ULONG;
			*pbData БАЙТА;
		} actDeferAction;

		Кодий ошибки //, котор нужно установить для действия OP_BOUNCE
		scBounceCode SCODE;

		список // адреса для действия OP_FORWARD и OP_DELEGATE
		Lpadrlist LPADRLIST;

		значение упорки // для действия OP_TAG
		propTag SPropValue;
	};
} ДЕЙСТВИЕ, ДАЛЕКО * LPACTION;

Вариант правил //
#define EDK_RULES_VERSION 1

//Array действий
_actions struct typedef
{
	ulVersion ULONG;		польза // #define выше
	cActions UINT;
	lpAction LPACTION;
} ДЕЙСТВИЯ;

определения типа сообщения // для отсроченных действия и сообщений ошибки Deffered
szDamMsgClass «действие #define обменом 4.0.Deferred IPC.Microsoft»
szDemMsgClass «ошибка #define обменом 4.0.Deferred IPC.Microsoft»

/*
 * Кодие ошибки правила
 * Значения для PR_RULE_ERROR
 *
Ошибка catchall #define RULE_ERR_UNKNOWN 1 //general
#define RULE_ERR_LOAD 2 //unable для того чтобы нагрузить правила скоросшивателя
#define RULE_ERR_DELIVERY 3 //unable для того чтобы поставить сообщение временно
#define RULE_ERR_PARSING 4 //error пока parsing
#define RULE_ERR_CREATE_DAE 5 //error создавая сообщение DAE
Двинуть #define RULE_ERR_NO_FOLDER 6 //folder/экземпляр не существует
Двинуть прав #define RULE_ERR_NO_RIGHTS 7 //no/экземпляр в скоросшиватель
#define RULE_ERR_CREATE_DAM 8 //error создавая DAM
#define RULE_ERR_NO_SENDAS 9 //can не послать как другой потребитель
Шаблон #define RULE_ERR_NO_TEMPLATE 10 //reply пропавш
#define RULE_ERR_EXECUTION 11 //error в исполнении правила
Превышенный размер квоты #define RULE_ERR_QUOTA_EXCEEDED 12 //mailbox
#define RULE_ERR_TOO_MANY_RECIPS 13 //number recips exceded верхний предел

#DEFINE RULE_ERR_FIRST RULE_ERR_UNKNOWN
#DEFINE RULE_ERR_LAST RULE_ERR_TOO_MANY_RECIPS

/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeRuleAction»
 *
 * Использовано для получите действия от отсроченного сообщения действия.
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGERULEACTION_METHODS) (IPURE \
	MAPIMETHOD) (ActionCount \
		(lpcActions THIS_ ULONG ДАЛЕКО *) IPURE;			\
	MAPIMETHOD) (GetAction \
		(, ulActionNumber THIS_ ULONG \
				LARGE_INTEGER *, lpruleid \
				LPACTION lppAction) ДАЛЕКО * IPURE;

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeRuleAction #define
DECLARE_MAPI_INTERFACE_ (IExchangeRuleAction, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGERULEACTION_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeRuleAction, LPEXCHANGERULEACTION);

/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeManageStore»
 *
 * Использовано для функций управления магазина.
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEMANAGESTORE_METHODS) (IPURE \
	MAPIMETHOD) (CreateStoreEntryID \
		(, lpszMsgStoreDN THIS_ LPSTR \
				, lpszMailboxDN LPSTR \
				, ulFlags ULONG \
				ULONG, lpcbEntryID ДАЛЕКО * \
				LPENTRYID lppEntryID) ДАЛЕКО * IPURE;			\
	MAPIMETHOD) (EntryIDFromSourceKey \
		(THIS_ ULONG cFolderKeySize, \
				БАЙТА, lpFolderSourceKey ДАЛЕКО * \
				ULONG cMessageKeySize, \
				БАЙТА, lpMessageSourceKey ДАЛЕКО * \
				ULONG, lpcbEntryID ДАЛЕКО * \
				LPENTRYID lppEntryID) ДАЛЕКО * IPURE;			\
	MAPIMETHOD) (GetRights \
		(, cbUserEntryID THIS_ ULONG \
				, lpUserEntryID LPENTRYID \
				, cbEntryID ULONG \
				, lpEntryID LPENTRYID \
				ULONG lpulRights) ДАЛЕКО * IPURE;			\
	MAPIMETHOD) (GetMailboxTable \
		(, lpszServerName THIS_ LPSTR \
				LPMAPITABLE, ДАЛЕКО * lppTable \
				ulFlags) ULONG IPURE;				\
	MAPIMETHOD) (GetPublicFolderTable \
		(, lpszServerName THIS_ LPSTR \
				LPMAPITABLE, ДАЛЕКО * lppTable \
				ulFlags) ULONG IPURE;

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeManageStore #define
DECLARE_MAPI_INTERFACE_ (IExchangeManageStore, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEMANAGESTORE_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeManageStore, LPEXCHANGEMANAGESTORE);

/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeManageStore2»
 *
 * Использовано для функций управления магазина.
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEMANAGESTORE2_METHODS) (IPURE \
	MAPIMETHOD) (CreateNewsgroupNameEntryID \
		(, lpszNewsgroupName THIS_ LPSTR \
				ULONG, lpcbEntryID ДАЛЕКО * \
				LPENTRYID lppEntryID) ДАЛЕКО * IPURE;

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeManageStore2 #define
DECLARE_MAPI_INTERFACE_ (IExchangeManageStore2, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEMANAGESTORE_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEMANAGESTORE2_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeManageStore2, LPEXCHANGEMANAGESTORE2);


/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeManageStore3»
 *
 * Использовано для функций управления магазина.
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEMANAGESTORE3_METHODS) (IPURE \
	MAPIMETHOD) (GetMailboxTableOffset \
		(, lpszServerName THIS_ LPSTR \
				LPMAPITABLE, ДАЛЕКО * lppTable \
				, ulFlags ULONG \
				uOffset) UINT IPURE;

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeManageStore3 #define
DECLARE_MAPI_INTERFACE_ (IExchangeManageStore3, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEMANAGESTORE_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEMANAGESTORE2_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEMANAGESTORE3_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeManageStore3, LPEXCHANGEMANAGESTORE3);


/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeManageStore4»
 *
 * Использовано для функций управления магазина.
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEMANAGESTORE4_METHODS) (IPURE \
	MAPIMETHOD) (GetPublicFolderTableOffset \
		(, lpszServerName THIS_ LPSTR \
				LPMAPITABLE, ДАЛЕКО * lppTable \
				, ulFlags ULONG \
				uOffset) UINT IPURE;

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeManageStore4 #define
DECLARE_MAPI_INTERFACE_ (IExchangeManageStore4, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEMANAGESTORE_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEMANAGESTORE2_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEMANAGESTORE3_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEMANAGESTORE4_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeManageStore4, LPEXCHANGEMANAGESTORE4);


/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeNntpNewsfeed»
 *
 * Использовано для newsfeed тяги Nntp.
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGENNTPNEWSFEED_METHODS) (IPURE \
	MAPIMETHOD (установите) \
		(, lpszNewsfeedDN THIS_ LPSTR \
				, cValues ULONG \
				LPSPropValue lpIMailPropArray) IPURE;	\
	MAPIMETHOD) (CheckMsgIds \
		(, lpszMsgIds THIS_ LPSTR \
				ULONG, ДАЛЕКО * lpcfWanted \
				БАЙТ ДАЛЕКО ** lppfWanted) IPURE;			\
	MAPIMETHOD) (OpenArticleStream \
		(lppStream THIS_ LPSTREAM ДАЛЕКО *) IPURE;			\
				

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeNntpNewsfeed #define
DECLARE_MAPI_INTERFACE_ (IExchangeNntpNewsfeed, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGENNTPNEWSFEED_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeNntpNewsfeed, LPEXCHANGENNTPNEWSFEED);

Свойства // для GetMailboxTable
#define PR_NT_USER_NAME PROP_TAG (PT_TSTRING, pidAdminMin+0x10)
//
Определение // PR_LOCALE_ID было двинуто вниз и совмещено с другим
свойства // место-специфически.  Оно все еще возвращается через
таблица почтового ящика //.
//
#define PR_LOCALE_ID PROP_TAG // (PT_LONG, pidAdminMin+0x11)
#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)
свойство // на выводя из строя получении прочитанном сообщением (непрочитанный)
// повторно используя свойство таблицы скоросшивателей (pidAdminMin+0x15)

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

свойства // для квоты info почтового ящика - повторно использующ свойства от таблицы скоросшивателя -
pathname, предприниматель, и повторно использованные контакты скоросшивателя //.
#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)


Свойства // для 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)

/* ограничение совершенно размера общественного скоросшивателя * 
#define PR_PF_OVER_HARD_QUOTA_LIMIT PROP_TAG (PT_LONG, pidAdminMin+0x91)
/* предел размера сообщения в общественном скоросшивателе * 
#define PR_PF_MSG_SIZE_LIMIT PROP_TAG (PT_LONG, pidAdminMin+0x92)

// не наследует истечение срока установки от установок MDB широких и вместо не использует специфический скоросшивателя одни
// (если специфический скоросшивателя не установлено, то оно все же не получит от MDB и не останет без истечения срока на всех)
#define PR_PF_DISALLOW_MDB_WIDE_EXPIRY PROP_TAG (PT_BOOLEAN, pidAdminMin+0x93)

свойства // Место-специфически
#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)

Вариант // PT_I8 PR_MESSAGE_SIZE определенный в mapitags.h
#DEFINE PR_MESSAGE_SIZE_EXTENDED PROP_TAG (PT_I8, PROP_ID (PR_MESSAGE_SIZE))

Биты/* в PR_FOLDER_FLAGS *
#define MDB_FOLDER_IPM 0x1
#define MDB_FOLDER_SEARCH 0x2
#define MDB_FOLDER_NORMAL 0x4
#define MDB_FOLDER_RULES 0x8

Биты/* используемые в ulFlags в GetPublicFolderTable () *
#define MDB_NON_IPM 0x10
#define MDB_IPM 0x20

Биты/* в 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 определяют для «никаких данных по квоты» восстановляя данные по квоты *
#define MDB_QUOTA_NOQUOTA 0xFFFFFFFF

/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeFastTransfer»
 *
 * Использовано для быстрой поверхности стыка перехода используемой к
 * снабдите CopyTo, CopyProps, CopyFolder, и
 * CopyMessages.
 *
 *-----------------------------------------------------------------------*

Флаги переноса //
Польза MAPI_MOVE // для варианта движения

Методы перехода //
#define TRANSFER_COPYTO 1
#define TRANSFER_COPYPROPS 2
#define TRANSFER_COPYMESSAGES 3
#define TRANSFER_COPYFOLDER 4


#DEFINE EXCHANGE_IEXCHANGEFASTTRANSFER_METHODS) (IPURE \
	MAPIMETHOD) (Config \
		(, ulFlags THIS_ ULONG \
				ulTransferMethod) ULONG IPURE;	\
	MAPIMETHOD) (TransferBuffer \
		(, Cb THIS_ ULONG \
				, Lpb LPBYTE \
				IPURE *lpcbProcessed ULONG);		\
	STDMETHOD_ (BOOL,) IsInterfaceOk \
		(, ulTransferMethod THIS_ ULONG \
				, Refiid REFIID \
				, lpptagList LPSPropTagArray \
				ulFlags) ULONG IPURE;

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeFastTransfer #define
DECLARE_MAPI_INTERFACE_ (IExchangeFastTransfer, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEFASTTRANSFER_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeFastTransfer, LPEXCHANGEFASTTRANSFER);



/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeExportChanges»
 *
 * Использовано для дифференциальной синхронизации
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEEXPORTCHANGES_METHODS) (IPURE \
	MAPIMETHOD) (GetLastError \
		(, hResult THIS_ HRESULT \
		 	    , ulFlags ULONG \
		 	    LPMAPIERROR lppMAPIError) ДАЛЕКО * IPURE;	\
	MAPIMETHOD) (Config \
		(, lpStream THIS_ LPSTREAM \
				, ulFlags ULONG \
				, lpUnk LPUNKNOWN \
		 		, lpRestriction LPSRestriction \
		 	    , lpIncludeProps LPSPropTagArray \
		 	    , lpExcludeProps LPSPropTagArray \
		 		ULONG ulBufferSize) IPURE;	\
	MAPIMETHOD (синхронизируйте) \
		(, lpulSteps THIS_ ULONG ДАЛЕКО * \
				ULONG lpulProgress) ДАЛЕКО * IPURE;	\
	MAPIMETHOD) (UpdateState \
		(lpStream THIS_ LPSTREAM) IPURE;

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeExportChanges #define
DECLARE_MAPI_INTERFACE_ (IExchangeExportChanges, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEEXPORTCHANGES_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeExportChanges, LPEXCHANGEEXPORTCHANGES);

/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeExportChanges2»
 *
 * Использовано для дифференциальной синхронизации
 * Имеет метод Config2 для устанавливать для потоков преобразования формы интернета
 *
 *-----------------------------------------------------------------------*

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

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeExportChanges2 #define
DECLARE_MAPI_INTERFACE_ (IExchangeExportChanges2, IExchangeExportChanges)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEEXPORTCHANGES_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEEXPORTCHANGES2_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeExportChanges2, LPEXCHANGEEXPORTCHANGES2);

/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeExportChanges3»
 *
 * Использовано для дифференциальной синхронизации
 * Имеет метод Config3 для устанавливать для селективной загрузки сообщения
 *
 *-----------------------------------------------------------------------*

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

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeExportChanges3 #define
DECLARE_MAPI_INTERFACE_ (IExchangeExportChanges3, IExchangeExportChanges2)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEEXPORTCHANGES_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEEXPORTCHANGES2_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEEXPORTCHANGES3_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeExportChanges3, LPEXCHANGEEXPORTCHANGES3);

_ReadState struct typedef
{
	cbSourceKey ULONG;
	БАЙТ * pbSourceKey;
	ulFlags ULONG;
} READSTATE, *LPREADSTATE;

/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeImportContentsChanges»
 *
 * Я использованы для дифференциальной синхронизации содержания скоросшивателя (т.е. сообщения)
 *
 *-----------------------------------------------------------------------*


#DEFINE EXCHANGE_IEXCHANGEIMPORTCONTENTSCHANGES_METHODS) (IPURE \
	MAPIMETHOD) (GetLastError \
		(, hResult THIS_ HRESULT \
		 	    , ulFlags ULONG \
		 	    LPMAPIERROR lppMAPIError) ДАЛЕКО * IPURE;			\
	MAPIMETHOD) (Config \
		(, lpStream THIS_ LPSTREAM \
		 		ulFlags) ULONG IPURE;				\
	MAPIMETHOD) (UpdateState \
		(lpStream THIS_ LPSTREAM) IPURE;			\
	MAPIMETHOD) (ImportMessageChange \
		(, cpvalChanges THIS_ ULONG \
				, ppvalChanges LPSPropValue \
				, ulFlags ULONG \
				*LPPMESSAGE) LPMESSAGE IPURE;			\
	MAPIMETHOD) (ImportMessageDeletion \
		(, ulFlags THIS_ ULONG \
		 		lpSrcEntryList) LPENTRYLIST IPURE;		\
	MAPIMETHOD) (ImportPerUserReadStateChange \
		(, cElements THIS_ ULONG \
		 		lpReadState) LPREADSTATE IPURE;			\
	MAPIMETHOD) (ImportMessageMove \
		(, cbSourceKeySrcFolder THIS_ ULONG \
		 		БАЙТА, pbSourceKeySrcFolder ДАЛЕКО * \
		 		, cbSourceKeySrcMessage ULONG \
		 		БАЙТА, pbSourceKeySrcMessage ДАЛЕКО * \
		 		, cbPCLMessage ULONG \
		 		БАЙТА, pbPCLMessage ДАЛЕКО * \
		 		, cbSourceKeyDestMessage ULONG \
		 		БАЙТА, pbSourceKeyDestMessage ДАЛЕКО * \
		 		, cbChangeNumDestMessage ULONG \
		 		БАЙТА pbChangeNumDestMessage) ДАЛЕКО * IPURE;


ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeImportContentsChanges #define
DECLARE_MAPI_INTERFACE_ (IExchangeImportContentsChanges, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEIMPORTCONTENTSCHANGES_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeImportContentsChanges,
						   LPEXCHANGEIMPORTCONTENTSCHANGES);

/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeImportContentsChanges2»
 *
 * Я использованы для дифференциальной синхронизации содержания скоросшивателя (т.е. сообщения)
 * Эта поверхность стыка позволяет вас импортировать изменения сообщения как интернет
 * поток преобразования формы
 *
 *-----------------------------------------------------------------------*


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


ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeImportContentsChanges2 #define
DECLARE_MAPI_INTERFACE_ (IExchangeImportContentsChanges2, IExchangeImportContentsChanges)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEIMPORTCONTENTSCHANGES_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEIMPORTCONTENTSCHANGES2_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeImportContentsChanges2,
						   LPEXCHANGEIMPORTCONTENTSCHANGES2);

/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeImportHierarchyChanges»
 *
 * Использовано для дифференциальной синхронизации иерархии скоросшивателя
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEIMPORTHIERARCHYCHANGES_METHODS) (IPURE \
	MAPIMETHOD) (GetLastError \
		(, hResult THIS_ HRESULT \
				, ulFlags ULONG \
				LPMAPIERROR lppMAPIError) ДАЛЕКО * IPURE;			\
	MAPIMETHOD) (Config \
		(, lpStream THIS_ LPSTREAM \
		 		ulFlags) ULONG IPURE;				\
	MAPIMETHOD) (UpdateState \
		(lpStream THIS_ LPSTREAM) IPURE;			\
	MAPIMETHOD) (ImportFolderChange \
		(, cpvalChanges THIS_ ULONG \
				ppvalChanges) LPSPropValue IPURE;	\
	MAPIMETHOD) (ImportFolderDeletion \
		(, ulFlags THIS_ ULONG \
		 		lpSrcEntryList) LPENTRYLIST IPURE;

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeImportHierarchyChanges #define
DECLARE_MAPI_INTERFACE_ (IExchangeImportHierarchyChanges, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEIMPORTHIERARCHYCHANGES_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeImportHierarchyChanges,
						   LPEXCHANGEIMPORTHIERARCHYCHANGES);

ulHierChanged #define (0x01)

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

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeChangeAdviseSink #define
DECLARE_MAPI_INTERFACE_ (IExchangeChangeAdviseSink, IUnknown)
{
	BEGIN_INTERFACE
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGECHANGEADVISESINK_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeChangeAdviseSink,
						   LPEXCHANGECHANGEADVISESINK);

#DEFINE EXCHANGE_IEXCHANGECHANGEADVISOR_METHODS) (IPURE \
	MAPIMETHOD) (GetLastError \
		(, hResult THIS_ HRESULT \
				, ulFlags ULONG \
				LPMAPIERROR lppMAPIError) ДАЛЕКО * IPURE;			\
	MAPIMETHOD) (Config \
		(, lpStream THIS_ LPSTREAM \
		 		, lpGUID LPGUID \
				, lpAdviseSink LPEXCHANGECHANGEADVISESINK \
		 		ulFlags) ULONG IPURE;			\
	MAPIMETHOD) (UpdateState \
		(lpStream THIS_ LPSTREAM) IPURE;				\
	MAPIMETHOD) (AddKeys \
		(lpEntryList THIS_ LPENTRYLIST) IPURE;				\
	MAPIMETHOD) (RemoveKeys \
		(lpEntryList THIS_ LPENTRYLIST) IPURE;

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeChangeAdvisor #define
DECLARE_MAPI_INTERFACE_ (IExchangeChangeAdvisor, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGECHANGEADVISOR_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

DECLARE_MAPI_INTERFACE_PTR (IExchangeChangeAdvisor,
						   LPEXCHANGECHANGEADVISOR);

/*------------------------------------------------------------------------
 *
 * Ошибки возвратили поверхностью стыка синхронизации изменения обменом дифференциальной
 *
 *-----------------------------------------------------------------------*

#define MAKE_SYNC_E (заблуждайтесь) (MAKE_SCODE (SEVERITY_ERROR, FACILITY_ITF, заблуждаются))
#define MAKE_SYNC_W (предупредите) (MAKE_SCODE (SEVERITY_SUCCESS, FACILITY_ITF, предупреждают))

#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)

/*------------------------------------------------------------------------
 *
 * Флаги используемые поверхностью стыка синхронизации изменения обменом дифференциальной
 *
 *-----------------------------------------------------------------------*

#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 // только применимое к ImportMessageChange ()
#define SYNC_MSG_SELECTIVE 0x1000 // используемое внутренне.  Излучит если использовано клиентами.

#ifdef НИКОГДА
#define SYNC_IMAIL_MIME_FORMAT 0x400
#define SYNC_IMAIL_UUENCODE_FORMAT 0x800
#define SYNC_ONLY_HEADERS 0x1000
#endif

/*------------------------------------------------------------------------
 *
 * Флаги используемые ImportMessageDeletion и методами ImportFolderDeletion
 *
 *-----------------------------------------------------------------------*

#define SYNC_SOFT_DELETE 0x01
#define SYNC_EXPIRY 0x02

/*------------------------------------------------------------------------
 *
 * Флаги используемые методом ImportPerUserReadStateChange
 *
 *-----------------------------------------------------------------------*

#define SYNC_READ 0x01

/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeFavorites»
 *
 * Использовано для добавлять или извлекать любимейшие скоросшиватели от общественного магазина.
 * Эта поверхность стыка получена путем вызывать QueryInterface на скоросшивателе
 * EntryID определено PR_IPM_FAVORITES_ENTRYID на публике
 * магазин.
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEFAVORITES_METHODS) (IPURE \
	MAPIMETHOD) (GetLastError \
		(, hResult THIS_ HRESULT \
				, ulFlags ULONG \
				LPMAPIERROR lppMAPIError) ДАЛЕКО * IPURE;		\
	MAPIMETHOD) (AddFavorites \
		(lpEntryList THIS_ LPENTRYLIST) IPURE;			\
	MAPIMETHOD) (DelFavorites \
		(lpEntryList THIS_ LPENTRYLIST) IPURE;			\

ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeFavorites #define
DECLARE_MAPI_INTERFACE_ (IExchangeFavorites, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEFAVORITES_METHODS (ЧИСТО)
};

DECLARE_MAPI_INTERFACE_PTR (IExchangeFavorites, LPEXCHANGEFAVORITES);


/*------------------------------------------------------------------------
 *
 * Свойства используемые скоросшивателями API фаворитов
 *
 *-----------------------------------------------------------------------*

#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)
/*------------------------------------------------------------------------
 *
 * Свойства используемые автономными скоросшивателями API
 *
 *-----------------------------------------------------------------------*

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


/*------------------------------------------------------------------------
 *
 * Флаги используемые автономными скоросшивателями API
 *
 *-----------------------------------------------------------------------*

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

#define SF_DISABLE_STARTUP_SYNC ((ULONG) 0x00000001)

/*------------------------------------------------------------------------
 *
 * объявление поверхности стыка «IExchangeMessageConversion»
 *
 * Использовано для того чтобы установить потоки преобразования сообщения
 *
 *-----------------------------------------------------------------------*

#DEFINE EXCHANGE_IEXCHANGEMESSAGECONVERSION_METHODS) (IPURE \
	MAPIMETHOD) (OpenStream \
		(, cValues THIS_ ULONG \
				, LPSPropValue lpPropArray \
				LPSTREAM lppStream) ДАЛЕКО * IPURE;
ПОВЕРХНОСТЬ СТЫКА #undef
ПОВЕРХНОСТЬ СТЫКА IExchangeMessageConversion #define
DECLARE_MAPI_INTERFACE_ (IExchangeMessageConversion, IUnknown)
{
	MAPI_IUNKNOWN_METHODS (ЧИСТО)
	EXCHANGE_IEXCHANGEMESSAGECONVERSION_METHODS (ЧИСТО)
};
#undef СНАБЖАЕТ
#define СНАБЖАЕТ

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 будет свойством содержания скоросшивателя будет любые PR_ABSTRACT
 * или первые 255 характеров PR_BODY.
 * PR_PREVIEW_UNREAD будет свойством содержания скоросшивателя будет любые PR_PREVIEW
 * если сообщение не прочитано, или NULL, то если прочитано.
 *
 *---------------------------------------------------------------------------------*
#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)

//
// сообщает IMAIL что полная точность воспроизведения должна быть сброшена для этого сообщения.
//
#define PR_DISABLE_FULL_FIDELITY PROP_TAG (PT_BOOLEAN, pidRenMsgFldMin+0x72)

атрибуты архива // для сообщений/скоросшивателей
потребность // быть в ряде свойства REN скопировать
#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)

Флаг // показывая ли был прочитан msg или не (упорка только для чтения для теперь - скопировано).
#define PR_READ PROP_TAG (PT_BOOLEAN, pidStoreNonTransMin+0x29)

Дискриптор управленческой обеспеченностью // для скоросшивателя, если настоящий момент.
//
#define PR_ADMIN_SECURITY_DESCRIPTOR PROP_TAG (PT_BINARY, 0x3d21)
//
Представление // Win32 совместимое дискриптора обеспеченностью скоросшивателя/сообщения
//
#define PR_WIN32_SECURITY_DESCRIPTOR PROP_TAG (PT_BINARY, 0x3d22)
//
// ПОИСТИНЕ если PR_NT_SECURITY_DESCRIPTOR описывает non семантику Win32 ACL.
// если это установлено, то, компоненты которые используют PR_WIN32_SECURITY_DESCRIPTOR не может
// позволяет изменение PR_NT_SECURITY_DESCRIPTOR (или PR_DEFAULT_MESSAGE_SD).
//
#define PR_NON_WIN32_ACL PROP_TAG (PT_BOOLEAN, 0x3d23)

//
// ПОИСТИНЕ если любые детали в скоросшивателе содержат деталь ровное ACLs
//
#define PR_ITEM_LEVEL_ACL PROP_TAG (PT_BOOLEAN, 0x3d24)

#define PR_DAV_TRANSFER_SECURITY_DESCRIPTOR PROP_TAG (PT_BINARY, 0x0E84)
//
// XML форматировало варианты свойств ДИСКРИПТОРА ОБЕСПЕЧЕННОСТЬЮ 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)


/*------------------------------------------------------------------------------------
*
* Свойство OWA Info
*
*------------------------------------------------------------------------------------*
#define PR_OWA_URL PROP_TAG (PT_STRING8, pidRenMsgFldMin+0x71)


// $, котор значение этого удостоверения личности свойства изменит в будущем.  Не положитесь дальше
// $ своя текущая стоимость.  Положитесь на определять только.
#define PR_STORE_SLOWLINK PROP_TAG (PT_BOOLEAN, 0x7c0a)


/*
 * Положения регистратуры установок
 *
&& (WIN32) определенное #if! я определен (MAC)
#define SZ_HPC_V2 «\ средства программирования \ Майкрософт \ \ обслуживания CE Windows»
#define SZ_HPC_V2_MAJOR «MajorVersion» // = 2
#define SZ_HPC_V2_MINOR «MinorVersion» // = 0 или 1

#define SZ_HPC_V1 «средство программирования \ \ \ Майкрософт \ Пегас»
#define SZ_HPC_V1_MAJOR «MajorVersion» // = 1 главный и небольшой номер не появилось
Не выпустить #define SZ_HPC_V1_MINOR «MinorVersion» // = 1 до после v1.0
#define SZ_HPC_V1_0 «InstalledDir» // присытствыющее для v1.0

#define SZ_OUTL_OST_OPTIONS «\ средства программирования \ Майкрософт \ \ \ офиса \ 8.0 \ \ \ внешнего вида \ OST»
#define SZ_NO_OST «NoOST»
#define NO_OST_FLAG_ALLOWED 0 // OST позволено на машине
#define NO_OST_FLAG_CACHE_ONLY 1 // OST можно только использовать как тайник
#define NO_OST_FLAG_NOT_ALLOWED 2 // OST не позволено на машине
#define NO_OST_FLAG_NO_CACHE 3 // OST не позволено как тайник
#DEFINE NO_OST_DEFAULT NO_OST_FLAG_ALLOWED
#endif

/*
 * Специальное свойство GUID для подавлять случаи sync для скоросшивателей. Если
 * это свойство установлено на скоросшиватель (любое значение) GIUD, случаи sync будет
 * подавите для того скоросшивателя. Звонящий по телефону может после этого селективно позволить
 * случаи sync для того скоросшивателя путем определять соответствуя GUID внутри
 * предмет NEWLOGON.
 *
#define PR_SYNCEVENT_SUPPRESS_GUID PROP_TAG (PT_BINARY, 0x3880)

/*
 * Следующий будут известный GUIDS для по-разному специальных скоросшивателей.
 * невыполнением обязательства, случаи sync подавлены для этих скоросшивателей. Вы можете ввести 
 * GUIDs в ваш предмет NEWLOGON селективно для того чтобы включить случаи sync для
 * каждый скоросшиватель.
 *
// {B2DC5B57-AF2D-4915-BAE3-90E5BDFB0070}
guidOutboxSyncEvents const GUID //static = 
// { 
// 0xb2dc5b57, 0xaf2d, 0x4915, 
// { 
// 0xba, 0xe3, 0x90, 0xe5, 0xbd, 0xfb, 0x0, 0x70 
//} 
//};
//
// {2185EE91-28CD-4d9b-BFB4-BC49BB1DD8C0}
guidMTSInSyncEvents const GUID //static = 
// { 
// 0x2185ee91, 0x28cd, 0x4d9b, 
// {
// 0xbf, 0xb4, 0xbc, 0x49, 0xbb, 0x1d, 0xd8, 0xc0 
//} 
//};
//
// {1BDBAFD3-1384-449b-A200-DE4745B07839}
guidMTSOutSyncEvents const GUID //static = 
// {
// 0x1bdbafd3, 0x1384, 0x449b, 
// { 
// 0xa2, 0x0, 0xde, 0x47, 0x45, 0xb0, 0x78, 0x39 
//} 
//};
//
// {221ED74D-0B5C-4c0e-8807-23AFDD8AC2FF}
guidTransportTempFolderSyncEvents const GUID //static = 
// {
// 0x221ed74d, 0xb5c, 0x4c0e, 
// { 
// 0x88, 0x7, 0x23, 0xaf, 0xdd, 0x8a, 0xc2, 0xff 
//} 
//};


/*
 * Зафиксируйте свойства
 *
 //REVIEW:: некоторые из этих определений появляются оба в MAPITAGS.H и EDKMDB.H
 //one установило определений следует извлечь
#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)

/*
 * Зафиксируйте флаги
 *
#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 
// этот бит сдержанный и не должно быть установлено!
#define LOCK_RESERVED 0x80000000 

/*
 * Откройте флаги
 *
#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

/*
 * Флаги Versioning для скоросшивателя
 *
wNonVersionedFolder #define ((СЛОВО) 0x0000)
wVersionedFolderSimple #define ((СЛОВО) 0x0001)
wVersionedFolderAuto #define ((СЛОВО) 0x0002) //When вы автоматический вариант оно просто versioned также.

/*
 * Кодие деятельности Versioning для варианта гребут в ptagVersionedOperation
 *
fVersionedDelete #define ((ULONG) 0x01)
fVersionedUnDelete #define ((ULONG) 0x02)
fVersionedPin #define ((ULONG) 0x04)
fVersionedUnPin #define ((ULONG) 0x08)
fVersionedMoveIn #define ((ULONG) 0x10)
fVersionedMoveOut #define ((ULONG) 0x20)

/*------------------------------------------------------------------------
 *
 * Свойства LocalStore специфически внутренне
 *
 * Эти будут свойства будут использованы внутренне местным магазином.
 * Свойства зарегистрированно здесь использованы в компонентах за исключением местного магазина
 *-----------------------------------------------------------------------*
pidLISMsgFolderPropMin pidLocalStoreInternalMin+0xa0 // 0x65a0 #define
pidLISMsgFolderPropMax pidLocalStoreInternalMin+0xc0 // 0x65c0 #define

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

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

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

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

// не в ряде упорки msgfolder
ptagLISErrorLogUrl PROP_TAG #define (PT_UNICODE, pidLocalStoreInternalMin+0x70) // PROP_TAG (PT_UNICODE, 0x6570)

// Ptags используемое между EXOLEDB и LSCache на машине клиента для того чтобы пройти 
// вдоль фактического вопроса SQL клиента от EXOLEDB к LSCache в RES_COMMENT
блок упорки // val SRestriction.  Эти ptags никогда фактическ посланы через
провод // или сохранили как свойства на предметах в тайнике.
//
ptagSql // = определяя свойство для ограничения SQL.  
// значение будет первоначально вполне клаузулой.
ptagSql PROP_TAG #define (PT_UNICODE, pidLISInterfacePropMin+0x0)		
ptagSqlSelect PROP_TAG #define (PT_UNICODE, pidLISInterfacePropMin+0x1)
ptagSqlFrom PROP_TAG #define (PT_UNICODE, pidLISInterfacePropMin+0x2)
ptagSqlWhere PROP_TAG #define (PT_UNICODE, pidLISInterfacePropMin+0x3)
ptagSqlOrder PROP_TAG #define (PT_UNICODE, pidLISInterfacePropMin+0x4)
ptagSqlGroup PROP_TAG #define (PT_UNICODE, pidLISInterfacePropMin+0x5)

Сервер RUID #define PR_RULE_SERVER_RULE_ID PROP_TAG (PT_I8, pidLISMsgFolderPropMin+0x0) // соответствуя для LIS

// это будет свойством hackish, котор будет использовать Кодий случая sync для того чтобы сказать что изменения
клиент потребности // освежает. Единственное действительное значение ПОИСТИНЕ. См. #168797 для больше info
#define PR_FORCE_CLIENT_REFRESH PROP_TAG (PT_BOOLEAN, pidLISMsgFolderPropMin+0x1)

/*------------------------------------------------------------------------
 *
 * Поддержка внедрения продуктов антивирус
 *
 * Все свойства только для чтения.
 *-----------------------------------------------------------------------*

Имя // и вариант продукта антивирус выполнил последнюю развертку деталя.
#define PR_ANTIVIRUS_VENDOR PROP_TAG (PT_STRING8, pidStoreNonTransMin+0x45) // 0x0E85001E
#define PR_ANTIVIRUS_VERSION PROP_TAG (PT_LONG, pidStoreNonTransMin+0x46) // 0x0E860003

// приводит к ot последняя развертка деталя.
#define PR_ANTIVIRUS_SCAN_STATUS PROP_TAG (PT_LONG, pidStoreNonTransMin+0x47) // 0x0E870003

Список // шнуров идентификации вируса всех вирусов нашел последней разверткой, если очищал вирус
// или обнаружено, отделено commans. Пустой шнур если не находил никакой вирус.
#define PR_ANTIVIRUS_SCAN_INFO PROP_TAG (PT_STRING8, pidStoreNonTransMin+0x48) // 0x0E88001F

/*
 * По возможности значения PR_ANTIVIRUS_SCAN_STATUS
 *
Продукт антивирус // выполнял скеннирование деталя, и не находил никакой вирус.
#define ANTIVIRUS_SCAN_NO_VIRUS 0

Продукт антивирус // обнаруживал вирус в детале, или принято деталю смогите содержать вирус
// основало на свойствах деталя, как filename или содержимый тип. 
#define ANTIVIRUS_SCAN_VIRUS_PRESENT 1

Продукт антивирус // обнаруживал вирус в детале, и прикладные изменения для того чтобы извлечь вирус.
// деталь должно быть безопасно для использования после изменений.
#define ANTIVIRUS_SCAN_VIRUS_CLEANED 2

ИСПОЛЬЗУЕМОЕ // это свойство НЕ ДЛИННИМИ. Я выходил оно здесь для избежания по возможности пролома строения.
ptagLISNewMail PROP_TAG #define (PT_BOOLEAN, 0x65c5)

#endif //EDKMDB_INCLUDED
class= " ясное " >
> " codeSnippet " class=
class= " lineNumbers "
class=
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:
коллекторы >//The " class= " " codeSnippet667512 id=

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

  AddMailbox

  Эта функция добавит дополнительный почтовый ящик обменом к существующий MAPI
  профиль. Он предполагает вы уже выступали MAPI с иничиативой.

  Параметры:
    lpszProfile имя профиля вы идете доработать.
    lpszMailboxDisplay шнур будет показан в профиле UI.
                        Внешний вид использует форму «почтовый ящик - лань Джон»
    lpszMailboxDN выдающийся имя почтового ящика, котор нужно добавить.
                        Ex. «/o=Microsoft/ou=Test/cn=Recipients/cn=JohnD»
    lpszServer имя DNS сервера где дополнительное
                        почтовый ящик пребывает.
    lpszServerDN выдающийся имя сервера где
                        дополнительный почтовый ящик пребывает.
                        Ex. «/o=Microsoft/ou=Test/cn=Configuration/cn=TestSrv»

  Выход:
    hRes HRESULT возвращают S_OK если завершено успешно, в противном случае
                        возвращает ошибку MAPI.
*******************************************************************************/ 




HRESULT AddMailbox (LPSTR lpszProfile, 
					LPSTR lpszMailboxDisplay, 
					lpszMailboxDN LPSTR,  
					lpszServer LPSTR,  
					lpszServerDN LPSTR)
{
    hRes HRESULT = S_OK;            Кодий результата // возвратило от звоноков MAPI.
    lpProfAdmin = NULL LPPROFADMIN;     Указатель Admin профиля //.
    lpSvcAdmin = NULL LPSERVICEADMIN;      Указатель Admin обслуживания через сообщения //.
    lpProvAdmin = NULL LPPROVIDERADMIN;     Указатель Admin провайдера //.
    LPMAPITABLE lpMsgSvcTable = NULL;   Указатель таблицы // MAPI.
    lpProfileSection = NULL LPPROFSECT; /указатель раздела профиля.
    lpSvcRows = NULL LPSRowSet;       Указатель рядка // установленный.
    SPropValue rgval [4];               Структура стоимости имущества // для того чтобы держать конфигурацию info.
    SPropValue NewVals;                Структура стоимости имущества // для того чтобы держать глобальный профиль info.
    Sres SRestriction;                   Структура ограничения // (используемая в HrQueryAllRows).
    SPropValue SvcProps;               Структура стоимости имущества // используемая в ограничении.
    lpGlobalVals = NULL LPSPropValue;    Указатель struct стоимости имущества // для глобального раздела профиля.
    ulProps ULONG = 0;            Отсчет // упорок.
    cbNewBuffer ULONG = 0;        Отсчет // байт для нового буфера.

    Обозначение // для удобства.
    enum {iDispName, iSvcName, iSvcUID, cptaSvc};

    // эта структура говорит HrQueryAllRows что колонки мы хотим после того как мы возвращены.
    SizedSPropTagArray (cptaSvc, sptCols) = {cptaSvc, 
                                            PR_DISPLAY_NAME, 
                                            PR_SERVICE_NAME, 
                                            PR_SERVICE_UID};

    // эта структура говорит нашему звоноку GetProps что свойства, котор нужно получить от глобального раздела профиля.
    SizedSPropTagArray (1, sptGlobal) = {1, PR_STORE_PROVIDERS};

    // получает поверхность стыка IProfAdmin.

    hRes = MAPIAdminProfiles (0, флаги //
                             &lpProfAdmin); Указатель // к новому IProfAdmin
    если (после того как я Ы, то (hRes)) переход error_handler;
    printf («восстановил поверхность стыка IProfAdmin. \ n»);

    // получает поверхность стыка IMsgServiceAdmin поверхности стыка IProfAdmin.

    hRes = lpProfAdmin->AdminServices (lpszProfile, профиль // который мы хотим доработать.
                                      "", пароль // для того профиля.
                                      NULL, ручка // для того чтобы parent окно.
                                      0, флаги //.
                                      &lpSvcAdmin); Указатель // к новому IMsgServiceAdmin.
    если (после того как я Ы, то (hRes)) переход error_handler;
    printf («восстановил поверхность стыка IMsgServiceAdmin. \ n»);
        
    //, котор нам теперь нужно получить удостоверение личности входа для обслуживания обменом.
    // во-первых, мы получаем таблицу обслуживания через сообщения.

    hRes = lpSvcAdmin->GetMsgServiceTable (0, флаги //
                                          &lpMsgSvcTable);  Указатель //, котор нужно поставить на обсуждение
    если (после того как я Ы НА ОБСУЖДЕНИЕ, то (hRes)) переход error_handler;
    printf («восстановил таблицу обслуживания через сообщения от профиля. \ n»);

    Ограничение установки // для того чтобы запросить таблицу.

    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»;

    Вопрос // таблица для того чтобы получить вход для обслуживания через сообщения обменом.

    hRes = HrQueryAllRows (lpMsgSvcTable,
                          &sptCols (LPSPropTagArray),
                          &sres,
                          NULL,
                          0,
                          &lpSvcRows);
    если (после того как я Ы, то (hRes)) переход error_handler;
    printf («запросил таблицу для обслуживания через сообщения обменом. \ n»);

    // получает указатель admin провайдера.
    hRes = lpSvcAdmin->AdminProviders (lpSvcRows->aRow->lpProps (LPMAPIUID) [iSvcUID]. Value.bin.lpb,
                                      0,
                                      &lpProvAdmin);
    если (после того как я Ы, то (hRes)) переход error_handler;
    printf («восстановленная поверхность стыка IProviderAdmin \ n»);

    // setup блок SPropValue для свойств, котор вам нужно установить.

    // имя индикации во-первых.
    ZeroMemory (&rgval [0], sizeof (SPropValue));
    rgval [0] .ulPropTag = PR_DISPLAY_NAME;
    rgval [0]. Value.lpszA = lpszMailboxDisplay;

    // затем, DN почтового ящика.
    ZeroMemory (&rgval [1], sizeof (SPropValue));
    rgval [1] .ulPropTag = PR_PROFILE_MAILBOX; 
    rgval [1]. Value.lpszA = lpszMailboxDN;

    // затем имя сервера почтовый ящик дальше.
    ZeroMemory (&rgval [2], sizeof (SPropValue));
    rgval [2] .ulPropTag = PR_PROFILE_SERVER;
    rgval [2]. Value.lpszA = lpszServer;

    // окончательно, DN сервера почтовый ящик дальше.
    ZeroMemory (&rgval [3], sizeof (SPropValue));
    rgval [3] .ulPropTag = PR_PROFILE_SERVER_DN;
    rgval [3]. Value.lpszA = lpszServerDN;

    // создает обслуживание через сообщения с вышеуказанными свойствами.
    hRes = lpProvAdmin->CreateProvider («EMSDelegate»,
                                       4,
                                       rgval,
                                       0,
                                       0,
                                       lpSvcRows->aRow->lpProps (LPMAPIUID) [iSvcUID]. Value.bin.lpb);
    если (после того как я Ы, то (hRes)) переход error_handler;
    printf («новый почтовый ящик добавлен. \ n»);

    // теперь препятствует нам установить упорки, котор нам так, что дополнительный почтовый ящик 
    // покажет в UI.

    // раскрывает глобальный раздел профиля.
    hRes = lpProvAdmin->OpenProfileSection (pbGlobalProfileSectionGuid (LPMAPIUID),
                                           NULL,
                                           MAPI_MODIFY,
                                           &lpProfileSection);
    если (после того как я Ы, то (hRes)) переход error_handler;
    printf («раскрынный глобальный раздел профиля. \ n»);

    // получает список провайдеров магазина в PR_STORE_PROVIDERS.
    hRes = lpProfileSection->GetProps ((LPSPropTagArray) &sptGlobal,
                                      0,
                                      &ulProps,
                                      &lpGlobalVals);
    если (после того как я Ы, то (hRes)) переход error_handler;
    printf («получил список будучи раскрыванным почтовых ящиков. \ n»);

    // теперь мы setup структура SPropValue с оригиналом
    список // + UID нового обслуживания.

    Compute // новый отсчет байта
    cbNewBuffer = lpSvcRows->aRow->lpProps [iSvcUID]. Value.bin.cb + lpGlobalVals->Value.bin.cb;

    // размещает космос для нового списка UIDs.
    hRes = MAPIAllocateBuffer (cbNewBuffer,
                              (LPVOID *) &NewVals.Value.bin.lpb);
    если (О, то (hRes)) переход error_handler;
    printf («размещанный буфер для того чтобы держать новый список почтовых ящиков, котор нужно раскрыть. \ n»);

    Экземпляр // биты в список.
    // экземпляр во-первых, существующий список.
    memcpy (NewVals.Value.bin.lpb,
           lpGlobalVals->Value.bin.lpb,
           lpGlobalVals->Value.bin.cb);

    // затем, копирует новое UID на конец списка.
    memcpy (NewVals.Value.bin.lpb + lpGlobalVals->Value.bin.cb,
           lpSvcRows->aRow->lpProps [iSvcUID]. Value.bin.lpb,
           lpSvcRows->aRow->lpProps [iSvcUID]. Value.bin.cb);
    printf («конкатенированный список почтовых ящиков и нового почтового ящика. \ n»);

    // установило отсчет байт на перемеююом SPropValue.
    NewVals.Value.bin.cb = cbNewBuffer;
    // выступает dwAlignPad с иничиативой.
    NewVals.dwAlignPad = 0;
    // установило бирку упорки.
    NewVals.ulPropTag = PR_STORE_PROVIDERS;

    // установило свойство на глобальном разделе профиля.
    hRes = lpProfileSection->SetProps (ulProps,
                                      &NewVals,
                                      NULL);
    если (после того как я Ы, то (hRes)) переход error_handler;
    printf («установите новый список на глобальном разделе профиля. \ n»);

    переход ыборка;
    
error_handler:
    printf («ОШИБКА: hRes = %0x \ n», hRes);

ыборка:
    // очищает вверх.
    если (NewVals.Value.bin.lpb) MAPIFreeBuffer, то (NewVals.Value.bin.lpb);
    если (lpGlobalVals) MAPIFreeBuffer, то (lpGlobalVals);
    если (lpSvcRows) FreeProws, то (lpSvcRows);
    если (lpMsgSvcTable) lpMsgSvcTable->Release, то ();
    если lpSvcAdmin->Release, то (lpSvcAdmin) ();
    если lpProfAdmin->Release, то (lpProfAdmin) ();
    если lpProvAdmin->Release, то (lpProvAdmin) ();
    если lpProfileSection->Release, то (lpProfileSection) ();

    printf («сделанный очищать вверх. \ n»);

    возвращенные hRes;
}


пустая основа (свободное пространство)
{
    hRes HRESULT = S_OK;

    MAPIInitialize (NULL);
    hRes = AddMailbox (
        «Мой профиль»,
        «Г-н Почтовый ящик»,
        «/o=MyOrganization/ou=My-Site/cn=Recipients/cn=MMailbox»,
        «MyServer»,
        «/o=MyOrganization/ou=My-Site/cn=Configuration/cn=MyServer»);
    MAPIUninitialize ();
}
class=

Ответ : Пример Майкрософт Mapi

Заключительный вопрос. так или иначе не кажется, что будет сделать это.
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us