// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. use shared::basetsd::UINT64; use shared::minwindef::DWORD; use um::bits::{IBackgroundCopyFile, IBackgroundCopyFileVtbl}; use um::bits1_5::{IBackgroundCopyJob2, IBackgroundCopyJob2Vtbl}; use um::winnt::{HRESULT, LPCWSTR}; pub const BG_LENGTH_TO_EOF: UINT64 = -1i64 as u64; STRUCT!{struct BG_FILE_RANGE { InitialOffset: UINT64, Length: UINT64, }} pub const BG_COPY_FILE_OWNER: DWORD = 1; pub const BG_COPY_FILE_GROUP: DWORD = 2; pub const BG_COPY_FILE_DACL: DWORD = 4; pub const BG_COPY_FILE_SACL: DWORD = 8; pub const BG_COPY_FILE_ALL: DWORD = 15; RIDL!{#[uuid(0x443c8934, 0x90ff, 0x48ed, 0xbc, 0xde, 0x26, 0xf5, 0xc7, 0x45, 0x00, 0x42)] interface IBackgroundCopyJob3(IBackgroundCopyJob3Vtbl): IBackgroundCopyJob2(IBackgroundCopyJob2Vtbl) { fn ReplaceRemotePrefix( OldPrefix: LPCWSTR, NewPrefix: LPCWSTR, ) -> HRESULT, fn AddFileWithRanges( RemoteUrl: LPCWSTR, LocalName: LPCWSTR, RangeCount: DWORD, Ranges: *mut BG_FILE_RANGE, ) -> HRESULT, fn SetFileACLFlags( Flags: DWORD, ) -> HRESULT, fn GetFileACLFlags( Flags: *mut DWORD, ) -> HRESULT, }} RIDL!{#[uuid(0x83e81b93, 0x0873, 0x474d, 0x8a, 0x8c, 0xf2, 0x01, 0x8b, 0x1a, 0x93, 0x9c)] interface IBackgroundCopyFile2(IBackgroundCopyFile2Vtbl): IBackgroundCopyFile(IBackgroundCopyFileVtbl) { fn GetFileRanges( RangeCount: *mut DWORD, Ranges: *mut *mut BG_FILE_RANGE, ) -> HRESULT, fn SetRemoteName( Val: LPCWSTR, ) -> HRESULT, }}