d3drm/tests: Fix compilation on systems that don't support nameless unions.
[wine] / include / bits.idl
1 /*
2  * Background Intelligent Transfer Service (BITS) interface
3  *
4  * Copyright 2007 Google (Roy Shea)
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  *
20  */
21
22 #ifndef DO_NO_IMPORTS
23 import "unknwn.idl";
24 #endif
25
26 cpp_quote("#include \"bitsmsg.h\"")
27 cpp_quote("#define BG_SIZE_UNKNOWN (UINT64)(-1)")
28 cpp_quote("#define BG_NOTIFY_JOB_TRANSFERRED 0x0001")
29 cpp_quote("#define BG_NOTIFY_JOB_ERROR 0x0002")
30 cpp_quote("#define BG_NOTIFY_DISABLE 0x0004")
31 cpp_quote("#define BG_NOTIFY_JOB_MODIFICATION 0x0008")
32
33 cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
34 cpp_quote("#undef EnumJobs")
35 cpp_quote("#undef GetJob")
36 cpp_quote("#endif")
37
38 #define BG_ENUM_SIZEIS(maxcount) maxcount
39 #define BG_ENUM_LENGTHIS(maxcount,lengthptr) lengthptr ? *lengthptr : maxcount
40
41 [
42     uuid(01b7bd23-fb88-4a77-8490-5891d3e4653a),
43     odl
44 ]
45 interface IBackgroundCopyFile : IUnknown
46 {
47     typedef struct _BG_FILE_PROGRESS {
48         UINT64 BytesTotal;
49         UINT64 BytesTransferred;
50         BOOL Completed;
51     } BG_FILE_PROGRESS;
52
53     HRESULT GetRemoteName(
54             [out] LPWSTR *pVal
55     );
56
57     HRESULT GetLocalName(
58             [out] LPWSTR *pVal
59     );
60
61     HRESULT GetProgress(
62             [out] BG_FILE_PROGRESS *pVal
63     );
64 }
65
66
67 [
68     uuid(ca51e165-c365-424c-8d41-24aaa4ff3c40),
69     odl
70 ]
71 interface IEnumBackgroundCopyFiles: IUnknown
72 {
73     HRESULT Next(
74             [in] ULONG celt,
75             [out,size_is(BG_ENUM_SIZEIS(celt)),length_is(BG_ENUM_LENGTHIS(celt,pceltFetched))] IBackgroundCopyFile **rgelt,
76             [in,out,unique] ULONG *pceltFetched
77     );
78
79     HRESULT Skip(
80             [in] ULONG celt
81     );
82
83     HRESULT Reset();
84
85     HRESULT Clone(
86             [out] IEnumBackgroundCopyFiles **ppenum
87     );
88
89     HRESULT GetCount(
90             [out] ULONG *puCount
91     );
92 }
93
94
95 [
96     uuid(19c613a0-fcb8-4f28-81ae-897c3d078f81),
97     odl
98 ]
99 interface IBackgroundCopyError : IUnknown
100 {
101     typedef enum {
102         BG_ERROR_CONTEXT_NONE = 0,
103         BG_ERROR_CONTEXT_UNKNOWN = 1,
104         BG_ERROR_CONTEXT_GENERAL_QUEUE_MANAGER = 2,
105         BG_ERROR_CONTEXT_QUEUE_MANAGER_NOTIFICATION =3,
106         BG_ERROR_CONTEXT_LOCAL_FILE = 4,
107         BG_ERROR_CONTEXT_REMOTE_FILE = 5,
108         BG_ERROR_CONTEXT_GENERAL_TRANSPORT = 6,
109         BG_ERROR_CONTEXT_REMOTE_APPLICATION =7,
110     } BG_ERROR_CONTEXT;
111
112     HRESULT GetError(
113             [out,ref] BG_ERROR_CONTEXT *pContext,
114             [out,ref] HRESULT *pCode
115     );
116
117     HRESULT GetFile(
118             [out] IBackgroundCopyFile **pVal
119     );
120
121     HRESULT GetErrorDescription(
122             [in] DWORD LanguageId,
123             [out,ref] LPWSTR *pErrorDescription
124     );
125
126     HRESULT GetErrorContextDescription(
127             [in] DWORD LanguageId,
128             [out,ref] LPWSTR *pContextDescription
129     );
130
131     HRESULT GetProtocol(
132             [out,ref] LPWSTR *pProtocol
133     );
134 }
135
136
137
138 [
139     uuid(37668d37-507e-4160-9316-26306d150b12),
140     odl
141 ]
142 interface IBackgroundCopyJob : IUnknown
143 {
144     typedef struct _BG_FILE_INFO {
145         LPWSTR RemoteName;
146         LPWSTR LocalName;
147     } BG_FILE_INFO;
148
149     typedef struct _BG_JOB_PROGRESS {
150         UINT64 BytesTotal;
151         UINT64 BytesTransferred;
152         ULONG FilesTotal;
153         ULONG FilesTransferred;
154     } BG_JOB_PROGRESS;
155
156     typedef struct _BG_JOB_TIMES {
157         FILETIME CreationTime;
158         FILETIME ModificationTime;
159         FILETIME TransferCompletionTime;
160     } BG_JOB_TIMES;
161
162     typedef enum {
163         BG_JOB_PRIORITY_FOREGROUND = 0,
164         BG_JOB_PRIORITY_HIGH = 1,
165         BG_JOB_PRIORITY_NORMAL = 2,
166         BG_JOB_PRIORITY_LOW = 3
167     } BG_JOB_PRIORITY;
168
169     typedef enum {
170         BG_JOB_STATE_QUEUED = 0,
171         BG_JOB_STATE_CONNECTING = 1,
172         BG_JOB_STATE_TRANSFERRING = 2,
173         BG_JOB_STATE_SUSPENDED = 3,
174         BG_JOB_STATE_ERROR = 4,
175         BG_JOB_STATE_TRANSIENT_ERROR = 5,
176         BG_JOB_STATE_TRANSFERRED = 6,
177         BG_JOB_STATE_ACKNOWLEDGED = 7,
178         BG_JOB_STATE_CANCELLED = 8
179     } BG_JOB_STATE;
180
181     typedef enum {
182        BG_JOB_TYPE_DOWNLOAD = 0,
183        BG_JOB_TYPE_UPLOAD = 1,
184        BG_JOB_TYPE_UPLOAD_REPLY = 2
185     } BG_JOB_TYPE;
186
187     typedef enum {
188         BG_JOB_PROXY_USAGE_PRECONFIG,
189         BG_JOB_PROXY_USAGE_NO_PROXY,
190         BG_JOB_PROXY_USAGE_OVERRIDE,
191         BG_JOB_PROXY_USAGE_AUTODETECT
192     } BG_JOB_PROXY_USAGE;
193
194
195     HRESULT AddFileSet(
196             [in] ULONG cFileCount,
197             [in,size_is(cFileCount)] BG_FILE_INFO *pFileSet
198     );
199
200     HRESULT AddFile(
201             [in] LPCWSTR RemoteUrl,
202             [in] LPCWSTR LocalName
203     );
204
205     HRESULT EnumFiles(
206             [out] IEnumBackgroundCopyFiles **pEnum
207     );
208
209     HRESULT Suspend();
210
211     HRESULT Resume();
212
213     HRESULT Cancel();
214
215     HRESULT Complete();
216
217     HRESULT GetId(
218             [out] GUID *pVal
219     );
220
221     HRESULT GetType(
222             [out] BG_JOB_TYPE *pVal
223     );
224
225     HRESULT GetProgress(
226             [out] BG_JOB_PROGRESS *pVal
227     );
228
229     HRESULT GetTimes(
230             [out] BG_JOB_TIMES *pVal
231     );
232
233     HRESULT GetState(
234             [out] BG_JOB_STATE *pVal
235     );
236
237     HRESULT GetError(
238             [out] IBackgroundCopyError **ppError
239     );
240
241     HRESULT GetOwner(
242             [out] LPWSTR *pVal
243     );
244
245     HRESULT SetDisplayName(
246             [in] LPCWSTR Val
247     );
248
249     HRESULT GetDisplayName(
250             [out] LPWSTR *pVal
251     );
252
253     HRESULT SetDescription(
254             [in] LPCWSTR Val
255     );
256
257     HRESULT GetDescription(
258             [out] LPWSTR *pVal
259     );
260
261     HRESULT SetPriority(
262             [in] BG_JOB_PRIORITY Val
263     );
264
265     HRESULT GetPriority(
266             [out] BG_JOB_PRIORITY *pVal
267     );
268
269     HRESULT SetNotifyFlags(
270             [in] ULONG Val
271     );
272
273     HRESULT GetNotifyFlags(
274             [out] ULONG *pVal
275     );
276
277     HRESULT SetNotifyInterface(
278             [in] IUnknown *Val
279     );
280
281     HRESULT GetNotifyInterface(
282             [out] IUnknown ** pVal
283     );
284
285     HRESULT SetMinimumRetryDelay(
286             [in] ULONG Seconds
287     );
288
289     HRESULT GetMinimumRetryDelay(
290             [out] ULONG *Seconds
291     );
292
293     HRESULT SetNoProgressTimeout(
294             [in] ULONG Seconds
295     );
296
297     HRESULT GetNoProgressTimeout(
298             [out] ULONG *Seconds
299     );
300
301     HRESULT GetErrorCount(
302             [out] ULONG *Errors
303     );
304
305     HRESULT SetProxySettings(
306             [in] BG_JOB_PROXY_USAGE ProxyUsage,
307             [in,string,unique] const WCHAR *ProxyList,
308             [in,string,unique] const WCHAR *ProxyBypassList
309     );
310
311     HRESULT GetProxySettings(
312             [out] BG_JOB_PROXY_USAGE *pProxyUsage,
313             [out] LPWSTR *pProxyList,
314             [out] LPWSTR *pProxyBypassList
315     );
316
317     HRESULT TakeOwnership();
318 }
319
320 [
321     uuid(1af4f612-3b71-466f-8f58-7b6f73ac57ad),
322     odl
323 ]
324 interface IEnumBackgroundCopyJobs : IUnknown
325 {
326     HRESULT Next(
327             [in] ULONG celt,
328             [out,size_is(BG_ENUM_SIZEIS(celt)),length_is(BG_ENUM_LENGTHIS(celt,pceltFetched))] IBackgroundCopyJob **rgelt,
329             [in,out,unique] ULONG *pceltFetched
330     );
331
332     HRESULT Skip(
333             [in] ULONG celt
334     );
335
336     HRESULT Reset();
337
338     HRESULT Clone(
339             [out] IEnumBackgroundCopyJobs **ppenum
340     );
341
342     HRESULT GetCount(
343             [out] ULONG *puCount
344     );
345 }
346
347
348 [
349     uuid(97ea99c7-0186-4ad4-8df9-c5b4e0ed6b22),
350     odl
351 ]
352 interface IBackgroundCopyCallback : IUnknown
353 {
354     HRESULT JobTransferred(
355             [in] IBackgroundCopyJob *pJob
356     );
357
358     HRESULT JobError(
359             [in] IBackgroundCopyJob *pJob,
360             [in] IBackgroundCopyError *pError
361     );
362
363     HRESULT JobModification(
364             [in] IBackgroundCopyJob *pJob,
365             [in] DWORD dwReserved
366     );
367 }
368
369 [
370     uuid(5ce34c0d-0dc9-4c1f-897c-daa1b78cee7c),
371     odl
372 ]
373 interface IBackgroundCopyManager : IUnknown
374 {
375     cpp_quote("#define BG_JOB_ENUM_ALL_USERS 0x0001")
376
377     HRESULT CreateJob(
378             [in] LPCWSTR DisplayName,
379             [in] BG_JOB_TYPE Type,
380             [out] GUID *pJobId,
381             [out] IBackgroundCopyJob **ppJob
382     );
383
384     HRESULT GetJob(
385             [in] REFGUID jobID,
386             [out] IBackgroundCopyJob **ppJob
387     );
388
389     HRESULT EnumJobs(
390             [in] DWORD dwFlags,
391             [out] IEnumBackgroundCopyJobs **ppEnum
392     );
393     HRESULT GetErrorDescription(
394             [in] HRESULT hResult,
395             [in] DWORD LanguageId,
396             [out] LPWSTR *pErrorDescription);
397 }
398
399
400 [
401     uuid(1deeb74f-7915-4560-b558-918c83f176a6),
402     version(1.0)
403 ]
404 library BackgroundCopyManager
405 {
406     [
407         uuid(4991d34b-80a1-4291-83b6-3328366b9097),
408     ]
409     coclass BackgroundCopyManager
410     {
411         [default] interface IBackgroundCopyManager;
412     };
413
414     interface IBackgroundCopyCallback;
415 }