1mapiconcepts(3) MAPIClientLibraries mapiconcepts(3)
2
3
4
6 mapiconcepts - .TH "mapiconcepts" 3 "Wed Feb 2 2011" "Version 0.9"
7 "MAPIClientLibraries"
8
10 mapiconcepts - .SS "MAPI objects"
11
12 Almost any MAPI data you access, read or edit is associated with an
13 object. No matter whether you intend to browse mailbox hierarchy, open
14 folders, create tables or access items (messages, appointments,
15 contacts, tasks, notes), you will have to initialize and use MAPI
16 objects: object understanding and manipulation is fundamental.
17
18 · When developing MAPI clients with Microsoft framework, instantiated
19 objects inherit from parent classes. As a matter of fact, developers
20 know which methods they can apply to objects and we suppose it makes
21 their life easier.
22
23 · In OpenChange, objects are opaque. They are generic data structures
24 which content is set and accessed through MAPI public functions.
25 Therefore, Linux MAPI developers must know what they are doing.
26
27 An example of MAPI object manipulation is shown below:
28
29 mapi_object obj_store;
30
31 [...]
32
33 mapi_object_init(&obj_store);
34 retval = OpenMsgStore(&obj_store);
35 if (retval != MAPI_E_SUCCESS) {
36 mapi_errstr('OpenMsgStore', GetLastError());
37 exit (1);
38 }
39 mapi_object_release(&obj_store);
40
41
42 MAPI Handles
43 Beyond memory management considerations, understanding MAPI handles
44 role in object manipulation provides a better understanding why
45 mapi_object_release() matters.
46
47 Handles are temporary identifiers returned by Exchange when you access
48 or create objects on the server. They are used to make reference to a
49 particular object all along its session lifetime. They are stored in
50 unsigned integers, are unique for each object but temporary along MAPI
51 session. Handles are the only links between objects accessed on the
52 client side and efficiently stored on the server side.
53
54 Although OpenChange MAPI makes handles manipulation transparent for
55 developers, mapi_object_release() frees both the allocated memory for
56 the object on client side, but also releases the object on the server.
57
58
59
60Version 0.9 Wed Feb 2 2011 mapiconcepts(3)