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.
6 use shared::basetsd::UINT64;
7 use shared::guiddef::GUID;
8 use shared::minwindef::{BOOL, DWORD};
9 use um::bits1_5::BG_AUTH_TARGET;
10 use um::bits3_0::{IBackgroundCopyJob4, IBackgroundCopyJob4Vtbl};
11 use um::bits4_0::{IBackgroundCopyFile4, IBackgroundCopyFile4Vtbl};
12 use um::winnt::{HRESULT, LPWSTR};
13 pub const BITS_COST_STATE_UNRESTRICTED: DWORD = 0x1;
14 pub const BITS_COST_STATE_CAPPED_USAGE_UNKNOWN: DWORD = 0x2;
15 pub const BITS_COST_STATE_BELOW_CAP: DWORD = 0x4;
16 pub const BITS_COST_STATE_NEAR_CAP: DWORD = 0x8;
17 pub const BITS_COST_STATE_OVERCAP_CHARGED: DWORD = 0x10;
18 pub const BITS_COST_STATE_OVERCAP_THROTTLED: DWORD = 0x20;
19 pub const BITS_COST_STATE_USAGE_BASED: DWORD = 0x40;
20 pub const BITS_COST_STATE_ROAMING: DWORD = 0x80;
21 pub const BITS_COST_OPTION_IGNORE_CONGESTION: DWORD = 0x80000000;
22 pub const BITS_COST_STATE_RESERVED: DWORD = 0x40000000;
23 pub const BITS_COST_STATE_TRANSFER_NOT_ROAMING: DWORD = BITS_COST_OPTION_IGNORE_CONGESTION
24     | BITS_COST_STATE_USAGE_BASED | BITS_COST_STATE_OVERCAP_THROTTLED
25     | BITS_COST_STATE_OVERCAP_CHARGED | BITS_COST_STATE_NEAR_CAP | BITS_COST_STATE_BELOW_CAP
26     | BITS_COST_STATE_CAPPED_USAGE_UNKNOWN | BITS_COST_STATE_UNRESTRICTED;
27 pub const BITS_COST_STATE_TRANSFER_NO_SURCHARGE: DWORD = BITS_COST_OPTION_IGNORE_CONGESTION
28     | BITS_COST_STATE_USAGE_BASED | BITS_COST_STATE_OVERCAP_THROTTLED | BITS_COST_STATE_NEAR_CAP
29     | BITS_COST_STATE_BELOW_CAP | BITS_COST_STATE_CAPPED_USAGE_UNKNOWN
30     | BITS_COST_STATE_UNRESTRICTED;
31 pub const BITS_COST_STATE_TRANSFER_STANDARD: DWORD = BITS_COST_OPTION_IGNORE_CONGESTION
32     | BITS_COST_STATE_USAGE_BASED | BITS_COST_STATE_OVERCAP_THROTTLED | BITS_COST_STATE_BELOW_CAP
33     | BITS_COST_STATE_CAPPED_USAGE_UNKNOWN | BITS_COST_STATE_UNRESTRICTED;
34 pub const BITS_COST_STATE_TRANSFER_UNRESTRICTED: DWORD = BITS_COST_OPTION_IGNORE_CONGESTION
35     | BITS_COST_STATE_OVERCAP_THROTTLED | BITS_COST_STATE_UNRESTRICTED;
36 pub const BITS_COST_STATE_TRANSFER_ALWAYS: DWORD = BITS_COST_OPTION_IGNORE_CONGESTION
37     | BITS_COST_STATE_ROAMING | BITS_COST_STATE_USAGE_BASED | BITS_COST_STATE_OVERCAP_THROTTLED
38     | BITS_COST_STATE_OVERCAP_CHARGED | BITS_COST_STATE_NEAR_CAP | BITS_COST_STATE_BELOW_CAP
39     | BITS_COST_STATE_CAPPED_USAGE_UNKNOWN | BITS_COST_STATE_UNRESTRICTED;
40 ENUM!{enum BITS_JOB_TRANSFER_POLICY {
41     BITS_JOB_TRANSFER_POLICY_ALWAYS = 0x800000ff,
42     BITS_JOB_TRANSFER_POLICY_NOT_ROAMING = 0x8000007f,
43     BITS_JOB_TRANSFER_POLICY_NO_SURCHARGE = 0x8000006f,
44     BITS_JOB_TRANSFER_POLICY_STANDARD = 0x80000067,
45     BITS_JOB_TRANSFER_POLICY_UNRESTRICTED = 0x80000021,
46 }}
47 ENUM!{enum BITS_JOB_PROPERTY_ID {
48     BITS_JOB_PROPERTY_ID_COST_FLAGS = 1,
49     BITS_JOB_PROPERTY_NOTIFICATION_CLSID = 2,
50     BITS_JOB_PROPERTY_DYNAMIC_CONTENT = 3,
51     BITS_JOB_PROPERTY_HIGH_PERFORMANCE = 4,
52     BITS_JOB_PROPERTY_MAX_DOWNLOAD_SIZE = 5,
53     BITS_JOB_PROPERTY_USE_STORED_CREDENTIALS = 7,
54     BITS_JOB_PROPERTY_MINIMUM_NOTIFICATION_INTERVAL_MS = 9,
55     BITS_JOB_PROPERTY_ON_DEMAND_MODE = 10,
56 }}
57 UNION!{union BITS_JOB_PROPERTY_VALUE {
58     [u64; 2],
59     Dword Dword_mut: DWORD,
60     ClsID ClsID_mut: GUID,
61     Enable Enable_mut: BOOL,
62     Uint64 Uint64_mut: UINT64,
63     Target Target_mut: BG_AUTH_TARGET,
64 }}
65 ENUM!{enum BITS_FILE_PROPERTY_ID {
66     BITS_FILE_PROPERTY_ID_HTTP_RESPONSE_HEADERS = 1,
67 }}
68 UNION!{union BITS_FILE_PROPERTY_VALUE {
69     [usize; 1],
70     String String_mut: LPWSTR,
71 }}
72 RIDL!{#[uuid(0xe847030c, 0xbbba, 0x4657, 0xaf, 0x6d, 0x48, 0x4a, 0xa4, 0x2b, 0xf1, 0xfe)]
73 interface IBackgroundCopyJob5(IBackgroundCopyJob5Vtbl):
74     IBackgroundCopyJob4(IBackgroundCopyJob4Vtbl) {
75     fn SetProperty(
76         PropertyId: BITS_JOB_PROPERTY_ID,
77         PropertyValue: BITS_JOB_PROPERTY_VALUE,
78     ) -> HRESULT,
79     fn GetProperty(
80         PropertyId: BITS_JOB_PROPERTY_ID,
81         PropertyValue: *mut BITS_JOB_PROPERTY_VALUE,
82     ) -> HRESULT,
83 }}
84 RIDL!{#[uuid(0x85c1657f, 0xdafc, 0x40e8, 0x88, 0x34, 0xdf, 0x18, 0xea, 0x25, 0x71, 0x7e)]
85 interface IBackgroundCopyFile5(IBackgroundCopyFile5Vtbl):
86     IBackgroundCopyFile4(IBackgroundCopyFile4Vtbl) {
87     fn SetProperty(
88         PropertyId: BITS_JOB_PROPERTY_ID,
89         PropertyValue: BITS_JOB_PROPERTY_VALUE,
90     ) -> HRESULT,
91     fn GetProperty(
92         PropertyId: BITS_JOB_PROPERTY_ID,
93         PropertyValue: *mut BITS_JOB_PROPERTY_VALUE,
94     ) -> HRESULT,
95 }}
96