winapi_ui_automation/um/
bits.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6use shared::basetsd::UINT64;
7use shared::guiddef::{GUID, REFGUID};
8use shared::minwindef::{BOOL, DWORD, FILETIME, ULONG};
9use um::unknwnbase::{IUnknown, IUnknownVtbl};
10use um::winnt::{HRESULT, LPCWSTR, LPWSTR, WCHAR};
11RIDL!{#[uuid(0x4991d34b, 0x80a1, 0x4291, 0x83, 0xb6, 0x33, 0x28, 0x36, 0x6b, 0x90, 0x97)]
12class BackgroundCopyManager;}
13pub const BG_SIZE_UNKNOWN: UINT64 = -1i64 as u64;
14STRUCT!{struct BG_FILE_PROGRESS {
15    BytesTotal: UINT64,
16    BytesTransferred: UINT64,
17    Completed: BOOL,
18}}
19RIDL!{#[uuid(0x01b7bd23, 0xfb88, 0x4a77, 0x84, 0x90, 0x58, 0x91, 0xd3, 0xe4, 0x65, 0x3a)]
20interface IBackgroundCopyFile(IBackgroundCopyFileVtbl): IUnknown(IUnknownVtbl) {
21    fn GetRemoteName(
22        pVal: *mut LPWSTR,
23    ) -> HRESULT,
24    fn GetLocalName(
25        pVal: *mut LPWSTR,
26    ) -> HRESULT,
27    fn GetProgress(
28        pVal: *mut BG_FILE_PROGRESS,
29    ) -> HRESULT,
30}}
31RIDL!{#[uuid(0xca51e165, 0xc365, 0x424c, 0x8d, 0x41, 0x24, 0xaa, 0xa4, 0xff, 0x3c, 0x40)]
32interface IEnumBackgroundCopyFiles(IEnumBackgroundCopyFilesVtbl): IUnknown(IUnknownVtbl) {
33    fn Next(
34        celt: ULONG,
35        rgelt: *mut *mut IBackgroundCopyFile,
36        pceltFetched: *mut ULONG,
37    ) -> HRESULT,
38    fn Skip(
39        celt: ULONG,
40    ) -> HRESULT,
41    fn Reset() -> HRESULT,
42    fn Clone(
43        ppenum: *mut *mut IEnumBackgroundCopyFiles,
44    ) -> HRESULT,
45    fn GetCount(
46        puCount: *mut ULONG,
47    ) -> HRESULT,
48}}
49ENUM!{enum BG_ERROR_CONTEXT {
50    BG_ERROR_CONTEXT_NONE = 0,
51    BG_ERROR_CONTEXT_UNKNOWN = 1,
52    BG_ERROR_CONTEXT_GENERAL_QUEUE_MANAGER = 2,
53    BG_ERROR_CONTEXT_QUEUE_MANAGER_NOTIFICATION = 3,
54    BG_ERROR_CONTEXT_LOCAL_FILE = 4,
55    BG_ERROR_CONTEXT_REMOTE_FILE = 5,
56    BG_ERROR_CONTEXT_GENERAL_TRANSPORT = 6,
57    BG_ERROR_CONTEXT_REMOTE_APPLICATION = 7,
58}}
59RIDL!{#[uuid(0x19c613a0, 0xfcb8, 0x4f28, 0x81, 0xae, 0x89, 0x7c, 0x3d, 0x07, 0x8f, 0x81)]
60interface IBackgroundCopyError(IBackgroundCopyErrorVtbl): IUnknown(IUnknownVtbl) {
61    fn GetError(
62        pContext: *mut BG_ERROR_CONTEXT,
63        pCode: *mut HRESULT,
64    ) -> HRESULT,
65    fn GetFile(
66        pVal: *mut *mut IBackgroundCopyFile,
67    ) -> HRESULT,
68    fn GetErrorDescription(
69        LanguageId: DWORD,
70        pErrorDescription: *mut LPWSTR,
71    ) -> HRESULT,
72    fn GetErrorContextDescription(
73        LanguageId: DWORD,
74        pContextDescription: *mut LPWSTR,
75    ) -> HRESULT,
76    fn GetProtocol(
77        pProtocol: *mut LPWSTR,
78    ) -> HRESULT,
79}}
80STRUCT!{struct BG_FILE_INFO {
81    RemoteName: LPWSTR,
82    LocalName: LPWSTR,
83}}
84STRUCT!{struct BG_JOB_PROGRESS {
85    BytesTotal: UINT64,
86    BytesTransferred: UINT64,
87    FilesTotal: ULONG,
88    FilesTransferred: ULONG,
89}}
90STRUCT!{struct BG_JOB_TIMES {
91    CreationTime: FILETIME,
92    ModificationTime: FILETIME,
93    TransferCompletionTime: FILETIME,
94}}
95ENUM!{enum BG_JOB_PRIORITY {
96    BG_JOB_PRIORITY_FOREGROUND = 0,
97    BG_JOB_PRIORITY_HIGH = BG_JOB_PRIORITY_FOREGROUND + 1,
98    BG_JOB_PRIORITY_NORMAL = BG_JOB_PRIORITY_HIGH + 1,
99    BG_JOB_PRIORITY_LOW = BG_JOB_PRIORITY_NORMAL + 1,
100}}
101ENUM!{enum BG_JOB_STATE {
102    BG_JOB_STATE_QUEUED = 0,
103    BG_JOB_STATE_CONNECTING = BG_JOB_STATE_QUEUED + 1,
104    BG_JOB_STATE_TRANSFERRING = BG_JOB_STATE_CONNECTING + 1,
105    BG_JOB_STATE_SUSPENDED = BG_JOB_STATE_TRANSFERRING + 1,
106    BG_JOB_STATE_ERROR = BG_JOB_STATE_SUSPENDED + 1,
107    BG_JOB_STATE_TRANSIENT_ERROR = BG_JOB_STATE_ERROR + 1,
108    BG_JOB_STATE_TRANSFERRED = BG_JOB_STATE_TRANSIENT_ERROR + 1,
109    BG_JOB_STATE_ACKNOWLEDGED = BG_JOB_STATE_TRANSFERRED + 1,
110    BG_JOB_STATE_CANCELLED = BG_JOB_STATE_ACKNOWLEDGED + 1,
111}}
112ENUM!{enum BG_JOB_TYPE {
113    BG_JOB_TYPE_DOWNLOAD = 0,
114    BG_JOB_TYPE_UPLOAD = BG_JOB_TYPE_DOWNLOAD + 1,
115    BG_JOB_TYPE_UPLOAD_REPLY = BG_JOB_TYPE_UPLOAD + 1,
116}}
117ENUM!{enum BG_JOB_PROXY_USAGE {
118    BG_JOB_PROXY_USAGE_PRECONFIG = 0,
119    BG_JOB_PROXY_USAGE_NO_PROXY = BG_JOB_PROXY_USAGE_PRECONFIG + 1,
120    BG_JOB_PROXY_USAGE_OVERRIDE = BG_JOB_PROXY_USAGE_NO_PROXY + 1,
121    BG_JOB_PROXY_USAGE_AUTODETECT = BG_JOB_PROXY_USAGE_OVERRIDE + 1,
122}}
123RIDL!{#[uuid(0x37668d37, 0x507e, 0x4160, 0x93, 0x16, 0x26, 0x30, 0x6d, 0x15, 0x0b, 0x12)]
124interface IBackgroundCopyJob(IBackgroundCopyJobVtbl): IUnknown(IUnknownVtbl) {
125    fn AddFileSet(
126        cFileCount: ULONG,
127        pFileSet: *mut BG_FILE_INFO,
128    ) -> HRESULT,
129    fn AddFile(
130        RemoteUrl: LPCWSTR,
131        LocalName: LPCWSTR,
132    ) -> HRESULT,
133    fn EnumFiles(
134        pErrorDescription: *mut *mut IEnumBackgroundCopyFiles,
135    ) -> HRESULT,
136    fn Suspend() -> HRESULT,
137    fn Resume() -> HRESULT,
138    fn Cancel() -> HRESULT,
139    fn Complete() -> HRESULT,
140    fn GetId(
141        pVal: *mut GUID,
142    ) -> HRESULT,
143    fn GetType(
144        pVal: *mut BG_JOB_TYPE,
145    ) -> HRESULT,
146    fn GetProgress(
147        pVal: *mut BG_JOB_PROGRESS,
148    ) -> HRESULT,
149    fn GetTimes(
150        pVal: *mut BG_JOB_TIMES,
151    ) -> HRESULT,
152    fn GetState(
153        pVal: *mut BG_JOB_STATE,
154    ) -> HRESULT,
155    fn GetError(
156        ppError: *mut *mut IBackgroundCopyError,
157    ) -> HRESULT,
158    fn GetOwner(
159        pVal: *mut LPWSTR,
160    ) -> HRESULT,
161    fn SetDisplayName(
162        Val: LPCWSTR,
163    ) -> HRESULT,
164    fn GetDisplayName(
165        pVal: *mut LPWSTR,
166    ) -> HRESULT,
167    fn SetDescription(
168        Val: LPCWSTR,
169    ) -> HRESULT,
170    fn GetDescription(
171        pVal: *mut LPWSTR,
172    ) -> HRESULT,
173    fn SetPriority(
174        Val: BG_JOB_PRIORITY,
175    ) -> HRESULT,
176    fn GetPriority(
177        pVal: *mut BG_JOB_PRIORITY,
178    ) -> HRESULT,
179    fn SetNotifyFlags(
180        Val: ULONG,
181    ) -> HRESULT,
182    fn GetNotifyFlags(
183        pVal: *mut ULONG,
184    ) -> HRESULT,
185    fn SetNotifyInterface(
186        Val: *mut IUnknown,
187    ) -> HRESULT,
188    fn GetNotifyInterface(
189        pVal: *mut *mut IUnknown,
190    ) -> HRESULT,
191    fn SetMinimumRetryDelay(
192        Seconds: ULONG,
193    ) -> HRESULT,
194    fn GetMinimumRetryDelay(
195        Seconds: *mut ULONG,
196    ) -> HRESULT,
197    fn SetNoProgressTimeout(
198        Seconds: ULONG,
199    ) -> HRESULT,
200    fn GetNoProgressTimeout(
201        Seconds: *mut ULONG,
202    ) -> HRESULT,
203    fn GetErrorCount(
204        Errors: *mut ULONG,
205    ) -> HRESULT,
206    fn SetProxySettings(
207        ProxyUsage: BG_JOB_PROXY_USAGE,
208        ProxyList: *const WCHAR,
209        ProxyBypassList: *const WCHAR,
210    ) -> HRESULT,
211    fn GetProxySettings(
212        pProxyUsage: *mut BG_JOB_PROXY_USAGE,
213        pProxyList: *mut LPWSTR,
214        pProxyBypassListpProxyList: *mut LPWSTR,
215    ) -> HRESULT,
216    fn TakeOwnership() -> HRESULT,
217}}
218RIDL!{#[uuid(0x1af4f612, 0x3b71, 0x466f, 0x8f, 0x58, 0x7b, 0x6f, 0x73, 0xac, 0x57, 0xad)]
219interface IEnumBackgroundCopyJobs(IEnumBackgroundCopyJobsVtbl): IUnknown(IUnknownVtbl) {
220    fn Next(
221        celt: ULONG,
222        rgelt: *mut *mut IBackgroundCopyJob,
223        pceltFetched: *mut ULONG,
224    ) -> HRESULT,
225    fn Skip(
226        celt: ULONG,
227    ) -> HRESULT,
228    fn Reset() -> HRESULT,
229    fn Clone(
230        ppenum: *mut *mut IEnumBackgroundCopyJobs,
231    ) -> HRESULT,
232    fn GetCount(
233        puCount: *mut ULONG,
234    ) -> HRESULT,
235}}
236pub const BG_NOTIFY_JOB_TRANSFERRED: DWORD = 0x0001;
237pub const BG_NOTIFY_JOB_ERROR: DWORD = 0x0002;
238pub const BG_NOTIFY_DISABLE: DWORD = 0x0004;
239pub const BG_NOTIFY_JOB_MODIFICATION: DWORD = 0x0008;
240pub const BG_NOTIFY_FILE_TRANSFERRED: DWORD = 0x0010;
241pub const BG_NOTIFY_FILE_RANGES_TRANSFERRED: DWORD = 0x0020;
242RIDL!{#[uuid(0x97ea99c7, 0x0186, 0x4ad4, 0x8d, 0xf9, 0xc5, 0xb4, 0xe0, 0xed, 0x6b, 0x22)]
243interface IBackgroundCopyCallback(IBackgroundCopyCallbackVtbl): IUnknown(IUnknownVtbl) {
244    fn JobTransferred(
245        pJob: *mut IBackgroundCopyJob,
246    ) -> HRESULT,
247    fn JobError(
248        pJob: *mut IBackgroundCopyJob,
249        pError: *mut IBackgroundCopyError,
250    ) -> HRESULT,
251    fn JobModification(
252        pJob: *mut IBackgroundCopyJob,
253        dwReserved: DWORD,
254    ) -> HRESULT,
255}}
256RIDL!{#[uuid(0xca29d251, 0xb4bb, 0x4679, 0xa3, 0xd9, 0xae, 0x80, 0x06, 0x11, 0x9d, 0x54)]
257interface AsyncIBackgroundCopyCallback(AsyncIBackgroundCopyCallbackVtbl): IUnknown(IUnknownVtbl) {
258    fn Begin_JobTransferred(
259        pJob: *mut IBackgroundCopyJob,
260    ) -> HRESULT,
261    fn Finish_JobTransferred() -> HRESULT,
262    fn Begin_JobError(
263        pJob: *mut IBackgroundCopyJob,
264        pError: *mut IBackgroundCopyError,
265    ) -> HRESULT,
266    fn Finish_JobError() -> HRESULT,
267    fn Begin_JobModification(
268        pJob: *mut IBackgroundCopyJob,
269        dwReserved: DWORD,
270    ) -> HRESULT,
271    fn Finish_JobModification() -> HRESULT,
272}}
273pub const BG_JOB_ENUM_ALL_USERS: DWORD = 0x0001;
274RIDL!{#[uuid(0x5ce34c0d, 0x0dc9, 0x4c1f, 0x89, 0x7c, 0xda, 0xa1, 0xb7, 0x8c, 0xee, 0x7c)]
275interface IBackgroundCopyManager(IBackgroundCopyManagerVtbl): IUnknown(IUnknownVtbl) {
276    fn CreateJob(
277        DisplayName: LPCWSTR,
278        Type: BG_JOB_TYPE,
279        pJobId: *mut GUID,
280        ppJob: *mut *mut IBackgroundCopyJob,
281    ) -> HRESULT,
282    fn GetJob(
283        jobID: REFGUID,
284        ppJob: *mut *mut IBackgroundCopyJob,
285    ) -> HRESULT,
286    fn EnumJobs(
287        dwFlags: DWORD,
288        ppEnum: *mut *mut IEnumBackgroundCopyJobs,
289    ) -> HRESULT,
290    fn GetErrorDescription(
291        hResult: HRESULT,
292        LanguageId: DWORD,
293        pErrorDescription: *mut LPWSTR,
294    ) -> HRESULT,
295}}