Revert the sync.
[reactos.git] / include / psdk / xcmc.h
1 /*
2 * Copyright (C) 2004 Chris Morgan
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19 #ifndef _XCMC_H
20 #define _XCMC_H
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 typedef char CMC_sint8;
27 typedef short CMC_sint16;
28 typedef long int CMC_sint32;
29 typedef unsigned short int CMC_uint16;
30 typedef unsigned long int CMC_uint32;
31 typedef void* CMC_buffer;
32 typedef char* CMC_string;
33
34 typedef CMC_uint16 CMC_boolean;
35 typedef CMC_sint32 CMC_enum;
36 typedef CMC_uint32 CMC_return_code;
37 typedef CMC_uint32 CMC_flags;
38 typedef CMC_string CMC_object_identifier;
39 typedef CMC_uint32 CMC_session_id;
40 typedef CMC_uint32 CMC_ui_id;
41
42 #define CMC_FALSE ((CMC_boolean)0)
43 #define CMC_TRUE ((CMC_boolean)1)
44
45 #define CMC_SUCCESS ((CMC_return_code) 0)
46
47 #define CMC_E_AMBIGUOUS_RECIPIENT ((CMC_return_code) 1)
48 #define CMC_E_ATTACHMENT_NOT_FOUND ((CMC_return_code) 2)
49 #define CMC_E_ATTACHMENT_OPEN_FAILURE ((CMC_return_code) 3)
50 #define CMC_E_ATTACHMENT_READ_FAILURE ((CMC_return_code) 4)
51 #define CMC_E_ATTACHMENT_WRITE_FAILURE ((CMC_return_code) 5)
52 #define CMC_E_COUNTED_STRING_UNSUPPORTED ((CMC_return_code) 6)
53 #define CMC_E_DISK_FULL ((CMC_return_code) 7)
54 #define CMC_E_FAILURE ((CMC_return_code) 8)
55 #define CMC_E_INSUFFICIENT_MEMORY ((CMC_return_code) 9)
56 #define CMC_E_INVALID_CONFIGURATION ((CMC_return_code) 10)
57 #define CMC_E_INVALID_ENUM ((CMC_return_code) 11)
58 #define CMC_E_INVALID_FLAG ((CMC_return_code) 12)
59 #define CMC_E_INVALID_MEMORY ((CMC_return_code) 13)
60 #define CMC_E_INVALID_MESSAGE_PARAMETER ((CMC_return_code) 14)
61 #define CMC_E_INVALID_MESSAGE_REFERENCE ((CMC_return_code) 15)
62 #define CMC_E_INVALID_PARAMETER ((CMC_return_code) 16)
63 #define CMC_E_INVALID_SESSION_ID ((CMC_return_code) 17)
64 #define CMC_E_INVALID_UI_ID ((CMC_return_code) 18)
65 #define CMC_E_LOGON_FAILURE ((CMC_return_code) 19)
66 #define CMC_E_MESSAGE_IN_USE ((CMC_return_code) 20)
67 #define CMC_E_NOT_SUPPORTED ((CMC_return_code) 21)
68 #define CMC_E_PASSWORD_REQUIRED ((CMC_return_code) 22)
69 #define CMC_E_RECIPIENT_NOT_FOUND ((CMC_return_code) 23)
70 #define CMC_E_SERVICE_UNAVAILABLE ((CMC_return_code) 24)
71 #define CMC_E_TEXT_TOO_LARGE ((CMC_return_code) 25)
72 #define CMC_E_TOO_MANY_FILES ((CMC_return_code) 26)
73 #define CMC_E_TOO_MANY_RECIPIENTS ((CMC_return_code) 27)
74 #define CMC_E_UNABLE_TO_NOT_MARK_AS_READ ((CMC_return_code) 28)
75 #define CMC_E_UNRECOGNIZED_MESSAGE_TYPE ((CMC_return_code) 29)
76 #define CMC_E_UNSUPPORTED_ACTION ((CMC_return_code) 30)
77 #define CMC_E_UNSUPPORTED_CHARACTER_SET ((CMC_return_code) 31)
78 #define CMC_E_UNSUPPORTED_DATA_EXT ((CMC_return_code) 32)
79 #define CMC_E_UNSUPPORTED_FLAG ((CMC_return_code) 33)
80 #define CMC_E_UNSUPPORTED_FUNCTION_EXT ((CMC_return_code) 34)
81 #define CMC_E_UNSUPPORTED_VERSION ((CMC_return_code) 35)
82 #define CMC_E_USER_CANCEL ((CMC_return_code) 36)
83 #define CMC_E_USER_NOT_LOGGED_ON ((CMC_return_code) 37)
84
85 #define CMC_ERROR_DISPLAYED ((CMC_return_code) 0x00008000)
86 #define CMC_ERROR_RSV_MASK ((CMC_return_code) 0x0000FFFF)
87 #define CMC_ERROR_IMPL_MASK ((CMC_return_code) 0xFFFF0000)
88
89 typedef struct {
90 CMC_uint32 length;
91 char string[1];
92 } CMC_counted_string;
93
94 typedef CMC_counted_string CMC_message_reference;
95
96 typedef struct {
97 CMC_sint8 second;
98 CMC_sint8 minute;
99 CMC_sint8 hour;
100 CMC_sint8 day;
101 CMC_sint8 month;
102 CMC_sint8 year;
103 CMC_sint8 isdst;
104 CMC_sint8 unused1;
105 CMC_sint16 tmzone;
106 CMC_sint16 unused2;
107 } CMC_time;
108
109 #define CMC_NO_TIMEZONE ((CMC_sint16) 0x8000)
110
111
112 typedef struct {
113 CMC_uint32 item_code;
114 CMC_uint32 item_data;
115 CMC_buffer item_reference;
116 CMC_flags extension_flags;
117 } CMC_extension;
118
119 #define CMC_EXT_REQUIRED ((CMC_flags) 0x00010000)
120 #define CMC_EXT_OUTPUT ((CMC_flags) 0x00020000)
121 #define CMC_EXT_LAST_ELEMENT ((CMC_flags) 0x80000000)
122 #define CMC_EXT_RSV_FLAG_MASK ((CMC_flags) 0xFFFF0000)
123 #define CMC_EXT_ITEM_FLAG_MASK ((CMC_flags) 0x0000FFFF)
124
125
126 typedef struct CMC_attachment_s {
127 CMC_string attach_title;
128 CMC_object_identifier attach_type;
129 CMC_string attach_filename;
130 CMC_flags attach_flags;
131 CMC_extension *attach_extensions;
132 } CMC_attachment;
133
134 #define CMC_ATT_APP_OWNS_FILE ((CMC_flags) 1)
135 #define CMC_ATT_LAST_ELEMENT ((CMC_flags) 0x80000000)
136
137 #define CMC_ATT_OID_BINARY "? ? ? ? ? ?"
138 #define CMC_ATT_OID_TEXT "? ? ? ? ? ?"
139
140
141 typedef struct {
142 CMC_string name;
143 CMC_enum name_type;
144 CMC_string address;
145 CMC_enum role;
146 CMC_flags recip_flags;
147 CMC_extension *recip_extensions;
148 } CMC_recipient;
149
150 #define CMC_TYPE_UNKNOWN ((CMC_enum) 0)
151 #define CMC_TYPE_INDIVIDUAL ((CMC_enum) 1)
152 #define CMC_TYPE_GROUP ((CMC_enum) 2)
153
154 #define CMC_ROLE_TO ((CMC_enum) 0)
155 #define CMC_ROLE_CC ((CMC_enum) 1)
156 #define CMC_ROLE_BCC ((CMC_enum) 2)
157 #define CMC_ROLE_ORIGINATOR ((CMC_enum) 3)
158 #define CMC_ROLE_AUTHORIZING_USER ((CMC_enum) 4)
159
160 #define CMC_RECIP_IGNORE ((CMC_flags) 1)
161 #define CMC_RECIP_LIST_TRUNCATED ((CMC_flags) 2)
162 #define CMC_RECIP_LAST_ELEMENT ((CMC_flags) 0x80000000)
163
164
165 typedef struct {
166 CMC_message_reference *message_reference;
167 CMC_string message_type;
168 CMC_string subject;
169 CMC_time time_sent;
170 CMC_string text_note;
171 CMC_recipient *recipients;
172 CMC_attachment *attachments;
173 CMC_flags message_flags;
174 CMC_extension *message_extensions;
175 } CMC_message;
176
177 #define CMC_MSG_READ ((CMC_flags) 1)
178 #define CMC_MSG_TEXT_NOTE_AS_FILE ((CMC_flags) 2)
179 #define CMC_MSG_UNSENT ((CMC_flags) 4)
180 #define CMC_MSG_LAST_ELEMENT ((CMC_flags) 0x80000000)
181
182
183 typedef struct {
184 CMC_message_reference *message_reference;
185 CMC_string message_type;
186 CMC_string subject;
187 CMC_time time_sent;
188 CMC_uint32 byte_length;
189 CMC_recipient *originator;
190 CMC_flags summary_flags;
191 CMC_extension *message_summary_extensions;
192 } CMC_message_summary;
193
194 #define CMC_SUM_READ ((CMC_flags) 1)
195 #define CMC_SUM_UNSENT ((CMC_flags) 2)
196 #define CMC_SUM_LAST_ELEMENT ((CMC_flags) 0x80000000)
197
198 #define CMC_ERROR_UI_ALLOWED ((CMC_flags) 0x01000000)
199 #define CMC_LOGON_UI_ALLOWED ((CMC_flags) 0x02000000)
200 #define CMC_COUNTED_STRING_TYPE ((CMC_flags) 0x04000000)
201
202 CMC_return_code WINAPI cmc_send(
203 CMC_session_id session,
204 CMC_message *message,
205 CMC_flags send_flags,
206 CMC_ui_id ui_id,
207 CMC_extension *send_extensions
208 );
209
210 #define CMC_SEND_UI_REQUESTED ((CMC_flags) 1)
211
212
213 CMC_return_code WINAPI cmc_send_documents(
214 CMC_string recipient_addresses,
215 CMC_string subject,
216 CMC_string text_note,
217 CMC_flags send_doc_flags,
218 CMC_string file_paths,
219 CMC_string file_names,
220 CMC_string delimiter,
221 CMC_ui_id ui_id
222 );
223
224 #define CMC_FIRST_ATTACH_AS_TEXT_NOTE ((CMC_flags) 2)
225
226
227 CMC_return_code WINAPI cmc_act_on(
228 CMC_session_id session,
229 CMC_message_reference *message_reference,
230 CMC_enum operation,
231 CMC_flags act_on_flags,
232 CMC_ui_id ui_id,
233 CMC_extension *act_on_extensions
234 );
235
236 #define CMC_ACT_ON_EXTENDED ((CMC_enum) 0)
237 #define CMC_ACT_ON_DELETE ((CMC_enum) 1)
238
239
240 CMC_return_code WINAPI cmc_list(
241 CMC_session_id session,
242 CMC_string message_type,
243 CMC_flags list_flags,
244 CMC_message_reference *seed,
245 CMC_uint32 *count,
246 CMC_ui_id ui_id,
247 CMC_message_summary **result,
248 CMC_extension *list_extensions
249 );
250
251 #define CMC_LIST_UNREAD_ONLY ((CMC_flags) 1)
252 #define CMC_LIST_MSG_REFS_ONLY ((CMC_flags) 2)
253 #define CMC_LIST_COUNT_ONLY ((CMC_flags) 4)
254
255 #define CMC_LENGTH_UNKNOWN 0xFFFFFFFF
256
257
258 CMC_return_code WINAPI cmc_read(
259 CMC_session_id session,
260 CMC_message_reference *message_reference,
261 CMC_flags read_flags,
262 CMC_message **message,
263 CMC_ui_id ui_id,
264 CMC_extension *read_extensions
265 );
266
267 #define CMC_DO_NOT_MARK_AS_READ ((CMC_flags) 1)
268 #define CMC_MSG_AND_ATT_HDRS_ONLY ((CMC_flags) 2)
269 #define CMC_READ_FIRST_UNREAD_MESSAGE ((CMC_flags) 4)
270
271
272 CMC_return_code WINAPI cmc_look_up(
273 CMC_session_id session,
274 CMC_recipient *recipient_in,
275 CMC_flags look_up_flags,
276 CMC_ui_id ui_id,
277 CMC_uint32 *count,
278 CMC_recipient **recipient_out,
279 CMC_extension *look_up_extensions
280 );
281
282 #define CMC_LOOKUP_RESOLVE_PREFIX_SEARCH ((CMC_flags) 1)
283 #define CMC_LOOKUP_RESOLVE_IDENTITY ((CMC_flags) 2)
284 #define CMC_LOOKUP_RESOLVE_UI ((CMC_flags) 4)
285 #define CMC_LOOKUP_DETAILS_UI ((CMC_flags) 8)
286 #define CMC_LOOKUP_ADDRESSING_UI ((CMC_flags) 16)
287
288
289 CMC_return_code WINAPI cmc_free( CMC_buffer memory );
290
291 CMC_return_code WINAPI cmc_logoff(
292 CMC_session_id session,
293 CMC_ui_id ui_id,
294 CMC_flags logoff_flags,
295 CMC_extension *logoff_extensions
296 );
297
298 CMC_return_code WINAPI cmc_logon(
299 CMC_string service,
300 CMC_string user,
301 CMC_string password,
302 CMC_object_identifier character_set,
303 CMC_ui_id ui_id,
304 CMC_uint16 caller_cmc_version,
305 CMC_flags logon_flags,
306 CMC_session_id *session,
307 CMC_extension *logon_extensions
308 );
309
310 #define CMC_VERSION ((CMC_uint16) 100)
311
312 CMC_return_code WINAPI cmc_query_configuration(
313 CMC_session_id session,
314 CMC_enum item,
315 CMC_buffer reference,
316 CMC_extension *config_extensions
317 );
318
319 #define CMC_CONFIG_CHARACTER_SET ((CMC_enum) 1)
320 #define CMC_CONFIG_LINE_TERM ((CMC_enum) 2)
321 #define CMC_CONFIG_DEFAULT_SERVICE ((CMC_enum) 3)
322 #define CMC_CONFIG_DEFAULT_USER ((CMC_enum) 4)
323 #define CMC_CONFIG_REQ_PASSWORD ((CMC_enum) 5)
324 #define CMC_CONFIG_REQ_SERVICE ((CMC_enum) 6)
325 #define CMC_CONFIG_REQ_USER ((CMC_enum) 7)
326 #define CMC_CONFIG_UI_AVAIL ((CMC_enum) 8)
327 #define CMC_CONFIG_SUP_NOMKMSGREAD ((CMC_enum) 9)
328 #define CMC_CONFIG_SUP_COUNTED_STR ((CMC_enum) 10)
329 #define CMC_CONFIG_VER_IMPLEM ((CMC_enum) 11)
330 #define CMC_CONFIG_VER_SPEC ((CMC_enum) 12)
331
332 #define CMC_LINE_TERM_CRLF ((CMC_enum) 0)
333 #define CMC_LINE_TERM_CR ((CMC_enum) 1)
334 #define CMC_LINE_TERM_LF ((CMC_enum) 2)
335
336 #define CMC_REQUIRED_NO ((CMC_enum) 0)
337 #define CMC_REQUIRED_YES ((CMC_enum) 1)
338 #define CMC_REQUIRED_OPT ((CMC_enum) 2)
339
340 #define CMC_CHAR_CP437 "1 2 840 113556 3 2 437"
341 #define CMC_CHAR_CP850 "1 2 840 113556 3 2 85"
342 #define CMC_CHAR_CP1252 "1 2 840 113556 3 2 1252"
343 #define CMC_CHAR_ISTRING "1 2 840 113556 3 2 0"
344 #define CMC_CHAR_UNICODE "1 2 840 113556 3 2 1"
345
346 #ifdef __cplusplus
347 }
348 #endif
349
350 #endif /* #ifndef _XCMC_H */