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