include: Change an unsized [out] string to be sized in IMultiLanguage2.
[wine] / include / mapi.h
1 /*
2  * Copyright (C) 2000 Francois Gouget
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 St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 #ifndef MAPI_H
20 #define MAPI_H
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 /* Some types */
27
28 #ifndef __LHANDLE
29 #define __LHANDLE
30 typedef ULONG_PTR               LHANDLE, *LPLHANDLE;
31 #endif
32 #define lhSessionNull           ((LHANDLE)0)
33
34 #ifndef WINE_FLAGS_DEFINED
35 #define WINE_FLAGS_DEFINED
36 typedef ULONG                   FLAGS;
37 #endif
38 typedef ULONG                  *LPULONG;
39
40 typedef struct
41 {
42     ULONG ulReserved;
43     ULONG flFlags;
44     ULONG nPosition;
45     LPSTR lpszPathName;
46     LPSTR lpszFileName;
47     LPVOID lpFileType;
48 } MapiFileDesc, *lpMapiFileDesc;
49
50 #ifndef MAPI_ORIG
51 #define MAPI_ORIG   0
52 #define MAPI_TO     1
53 #define MAPI_CC     2
54 #define MAPI_BCC    3
55 #endif
56
57 typedef struct
58 {
59     ULONG ulReserved;
60     ULONG ulRecipClass;
61     LPSTR lpszName;
62     LPSTR lpszAddress;
63     ULONG ulEIDSize;
64     LPVOID lpEntryID;
65 } MapiRecipDesc, *lpMapiRecipDesc;
66
67 typedef struct
68 {
69     ULONG ulReserved;
70     LPSTR lpszSubject;
71     LPSTR lpszNoteText;
72     LPSTR lpszMessageType;
73     LPSTR lpszDateReceived;
74     LPSTR lpszConversationID;
75     FLAGS flFlags;
76     lpMapiRecipDesc lpOriginator;
77     ULONG nRecipCount;
78     lpMapiRecipDesc lpRecips;
79     ULONG nFileCount;
80     lpMapiFileDesc lpFiles;
81 } MapiMessage, *lpMapiMessage;
82
83
84 /* Error codes */
85
86 #ifndef SUCCESS_SUCCESS
87 #define SUCCESS_SUCCESS                 0L
88 #endif
89
90 #define MAPI_USER_ABORT                 1
91 #define MAPI_E_USER_ABORT               MAPI_USER_ABORT
92 #define MAPI_E_FAILURE                  2
93 #define MAPI_E_LOGON_FAILURE            3
94 #define MAPI_E_LOGIN_FAILURE            MAPI_E_LOGON_FAILURE
95 #define MAPI_E_DISK_FULL                4
96 #define MAPI_E_INSUFFICIENT_MEMORY      5
97 #define MAPI_E_ACCESS_DENIED            6
98 #define MAPI_E_TOO_MANY_SESSIONS        8
99 #define MAPI_E_TOO_MANY_FILES           9
100 #define MAPI_E_TOO_MANY_RECIPIENTS      10
101 #define MAPI_E_ATTACHMENT_NOT_FOUND     11
102 #define MAPI_E_ATTACHMENT_OPEN_FAILURE  12
103 #define MAPI_E_ATTACHMENT_WRITE_FAILURE 13
104 #define MAPI_E_UNKNOWN_RECIPIENT        14
105 #define MAPI_E_BAD_RECIPTYPE            15
106 #define MAPI_E_NO_MESSAGES              16
107 #define MAPI_E_INVALID_MESSAGE          17
108 #define MAPI_E_TEXT_TOO_LARGE           18
109 #define MAPI_E_INVALID_SESSION          19
110 #define MAPI_E_TYPE_NOT_SUPPORTED       20
111 #define MAPI_E_AMBIGUOUS_RECIPIENT      21
112 #define MAPI_E_AMBIG_RECIP              MAPI_E_AMBIGUOUS_RECIPIENT
113 #define MAPI_E_MESSAGE_IN_USE           22
114 #define MAPI_E_NETWORK_FAILURE          23
115 #define MAPI_E_INVALID_EDITFIELDS       24
116 #define MAPI_E_INVALID_RECIPS           25
117 #define MAPI_E_NOT_SUPPORTED            26
118
119
120 /* MAPILogon */
121
122 #ifndef MAPI_LOGON_UI
123 #define MAPI_LOGON_UI           0x00000001
124 #endif
125 #ifndef MAPI_NEW_SESSION
126 #define MAPI_NEW_SESSION        0x00000002
127 #endif
128 #ifndef MAPI_EXTENDED
129 #define MAPI_EXTENDED           0x00000020
130 #endif
131 #ifndef MAPI_FORCE_DOWNLOAD
132 #define MAPI_FORCE_DOWNLOAD     0x00001000
133 #endif
134 #ifndef MAPI_PASSWORD_UI
135 #define MAPI_PASSWORD_UI        0x00020000
136 #endif
137
138
139 /* MAPISendMail */
140
141 #define MAPI_DIALOG             0x00000008
142
143
144 /* API typedefs and prototypes */
145
146 typedef ULONG (WINAPI MAPIADDRESS)(LHANDLE,ULONG_PTR,LPSTR,ULONG,LPSTR,ULONG,lpMapiRecipDesc,FLAGS,ULONG,LPULONG,lpMapiRecipDesc*);
147 typedef MAPIADDRESS *LPMAPIADDRESS;
148 MAPIADDRESS MAPIAddress;
149
150 typedef ULONG (WINAPI MAPIDELETEMAIL)(LHANDLE,ULONG_PTR,LPSTR,FLAGS,ULONG);
151 typedef MAPIDELETEMAIL *LPMAPIDELETEMAIL;
152 MAPIDELETEMAIL MAPIDeleteMail;
153
154 typedef ULONG (WINAPI MAPIDETAILS)(LHANDLE,ULONG_PTR,lpMapiRecipDesc,FLAGS,ULONG);
155 typedef MAPIDETAILS *LPMAPIDETAILS;
156 MAPIDETAILS MAPIDetails;
157
158 typedef ULONG (WINAPI MAPIFINDNEXT)(LHANDLE,ULONG_PTR,LPSTR,LPSTR,FLAGS,ULONG,LPSTR);
159 typedef MAPIFINDNEXT *LPMAPIFINDNEXT;
160 MAPIFINDNEXT MAPIFindNext;
161
162 #ifndef MAPIFREEBUFFER_DEFINED
163 #define MAPIFREEBUFFER_DEFINED
164 typedef ULONG (WINAPI MAPIFREEBUFFER)(LPVOID);
165 typedef MAPIFREEBUFFER *LPMAPIFREEBUFFER;
166 MAPIFREEBUFFER MAPIFreeBuffer;
167 #endif
168
169 typedef ULONG (WINAPI MAPILOGOFF)(LHANDLE,ULONG_PTR,FLAGS,ULONG);
170 typedef MAPILOGOFF *LPMAPILOGOFF;
171 MAPILOGOFF MAPILogoff;
172
173 typedef ULONG (WINAPI MAPILOGON)(ULONG_PTR,LPSTR,LPSTR,FLAGS,ULONG,LPLHANDLE);
174 typedef MAPILOGON *LPMAPILOGON;
175 MAPILOGON MAPILogon;
176
177 typedef ULONG (WINAPI MAPIREADMAIL)(LHANDLE,ULONG_PTR,LPSTR,FLAGS,ULONG,lpMapiMessage);
178 typedef MAPIREADMAIL *LPMAPIREADMAIL;
179 MAPIREADMAIL MAPIReadMail;
180
181 typedef ULONG (WINAPI MAPIRESOLVENAME)(LHANDLE,ULONG_PTR,LPSTR,FLAGS,ULONG,lpMapiRecipDesc*);
182 typedef MAPIRESOLVENAME *LPMAPIRESOLVENAME;
183 MAPIRESOLVENAME MAPIResolveName;
184
185 typedef ULONG (WINAPI MAPISAVEMAIL)(LHANDLE,ULONG_PTR,lpMapiMessage,FLAGS,ULONG,LPSTR);
186 typedef MAPISAVEMAIL *LPMAPISAVEMAIL;
187 MAPISAVEMAIL MAPISaveMail;
188
189 typedef ULONG (WINAPI MAPISENDDOCUMENTS)(ULONG_PTR,LPSTR,LPSTR,LPSTR,ULONG);
190 typedef MAPISENDDOCUMENTS *LPMAPISENDDOCUMENTS;
191 MAPISENDDOCUMENTS MAPISendDocuments;
192
193 typedef ULONG (WINAPI MAPISENDMAIL)(LHANDLE,ULONG_PTR,lpMapiMessage,FLAGS,ULONG);
194 typedef MAPISENDMAIL *LPMAPISENDMAIL;
195 MAPISENDMAIL MAPISendMail;
196
197 #ifdef __cplusplus
198 }
199 #endif
200
201 #endif /* MAPI_H */