// 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::guiddef::{GUID, REFGUID}; use shared::minwindef::{BOOL, DWORD, FILETIME, ULONG}; use um::bits::{ IBackgroundCopyCallback, IBackgroundCopyCallbackVtbl, IBackgroundCopyFile, IBackgroundCopyJob, }; use um::bits2_0::{ BG_FILE_RANGE, IBackgroundCopyFile2, IBackgroundCopyFile2Vtbl, IBackgroundCopyJob3, IBackgroundCopyJob3Vtbl, }; use um::unknwnbase::{IUnknown, IUnknownVtbl}; use um::winnt::{HRESULT, LPCWSTR, LPWSTR}; RIDL!{#[uuid(0x659cdeaf, 0x489e, 0x11d9, 0xa9, 0xcd, 0x00, 0x0d, 0x56, 0x96, 0x52, 0x51)] interface IBitsPeerCacheRecord(IBitsPeerCacheRecordVtbl): IUnknown(IUnknownVtbl) { fn GetId( pVal: *mut GUID, ) -> HRESULT, fn GetOriginUrl( pVal: *mut LPWSTR, ) -> HRESULT, fn GetFileSize( pVal: *mut UINT64, ) -> HRESULT, fn GetFileModificationTime( pVal: *mut FILETIME, ) -> HRESULT, fn GetLastAccessTime( pVal: *mut FILETIME, ) -> HRESULT, fn IsFileValidated() -> HRESULT, fn GetFileRanges( pRangeCount: *mut DWORD, ppRanges: *mut *mut BG_FILE_RANGE, ) -> HRESULT, }} RIDL!{#[uuid(0x659cdea4, 0x489e, 0x11d9, 0xa9, 0xcd, 0x00, 0x0d, 0x56, 0x96, 0x52, 0x51)] interface IEnumBitsPeerCacheRecords(IEnumBitsPeerCacheRecordsVtbl): IUnknown(IUnknownVtbl) { fn Next( celt: ULONG, rgelt: *mut *mut IBitsPeerCacheRecord, pceltFetched: *mut ULONG, ) -> HRESULT, fn Skip( celt: ULONG, ) -> HRESULT, fn Reset() -> HRESULT, fn Clone( ppenum: *mut *mut IEnumBitsPeerCacheRecords, ) -> HRESULT, fn GetCount( puCount: *mut ULONG, ) -> HRESULT, }} RIDL!{#[uuid(0x659cdea2, 0x489e, 0x11d9, 0xa9, 0xcd, 0x00, 0x0d, 0x56, 0x96, 0x52, 0x51)] interface IBitsPeer(IBitsPeerVtbl): IUnknown(IUnknownVtbl) { fn GetPeerName( pName: *mut LPWSTR, ) -> HRESULT, fn IsAuthenticated( pAuth: *mut BOOL, ) -> HRESULT, fn IsAvailable( pOnline: *mut BOOL, ) -> HRESULT, }} RIDL!{#[uuid(0x659cdea5, 0x489e, 0x11d9, 0xa9, 0xcd, 0x00, 0x0d, 0x56, 0x96, 0x52, 0x51)] interface IEnumBitsPeers(IEnumBitsPeersVtbl): IUnknown(IUnknownVtbl) { fn Next( celt: ULONG, rgelt: *mut *mut IBitsPeer, pceltFetched: *mut ULONG, ) -> HRESULT, fn Skip( celt: ULONG, ) -> HRESULT, fn Reset() -> HRESULT, fn Clone( ppenum: *mut *mut IEnumBitsPeers, ) -> HRESULT, fn GetCount( puCount: *mut ULONG, ) -> HRESULT, }} pub const BG_ENABLE_PEERCACHING_CLIENT: DWORD = 0x0001; pub const BG_ENABLE_PEERCACHING_SERVER: DWORD = 0x0002; pub const BG_DISABLE_BRANCH_CACHE: DWORD = 0x0004; RIDL!{#[uuid(0x659cdead, 0x489e, 0x11d9, 0xa9, 0xcd, 0x00, 0x0d, 0x56, 0x96, 0x52, 0x51)] interface IBitsPeerCacheAdministration(IBitsPeerCacheAdministrationVtbl): IUnknown(IUnknownVtbl) { fn GetMaximumCacheSize( pBytes: *mut DWORD, ) -> HRESULT, fn SetMaximumCacheSize( Bytes: DWORD, ) -> HRESULT, fn GetMaximumContentAge( pSeconds: *mut ULONG, ) -> HRESULT, fn SetMaximumContentAge( Seconds: ULONG, ) -> HRESULT, fn GetConfigurationFlags( pFlags: *mut DWORD, ) -> HRESULT, fn SetConfigurationFlags( Flags: DWORD, ) -> HRESULT, fn EnumRecords( ppEnum: *mut *mut IEnumBitsPeerCacheRecords, ) -> HRESULT, fn GetRecord( ppRecord: *mut *mut IBitsPeerCacheRecord, ) -> HRESULT, fn ClearRecords() -> HRESULT, fn DeleteRecord( id: REFGUID, ) -> HRESULT, fn DeleteUrl( url: LPCWSTR, ) -> HRESULT, fn EnumPeers( ppEnum: *mut *mut IEnumBitsPeers, ) -> HRESULT, fn ClearPeers() -> HRESULT, fn DiscoverPeers() -> HRESULT, }} pub const BG_JOB_ENABLE_PEERCACHING_CLIENT: DWORD = 0x0001; pub const BG_JOB_ENABLE_PEERCACHING_SERVER: DWORD = 0x0002; pub const BG_JOB_DISABLE_BRANCH_CACHE: DWORD = 0x0004; RIDL!{#[uuid(0x659cdeae, 0x489e, 0x11d9, 0xa9, 0xcd, 0x00, 0x0d, 0x56, 0x96, 0x52, 0x51)] interface IBackgroundCopyJob4(IBackgroundCopyJob4Vtbl): IBackgroundCopyJob3(IBackgroundCopyJob3Vtbl) { fn SetPeerCachingFlags( Flags: DWORD, ) -> HRESULT, fn GetPeerCachingFlags( pFlags: *mut DWORD, ) -> HRESULT, fn GetOwnerIntegrityLevel( pLevel: *mut ULONG, ) -> HRESULT, fn GetOwnerElevationState( pElevated: *mut BOOL, ) -> HRESULT, fn SetMaximumDownloadTime( Timeout: ULONG, ) -> HRESULT, fn GetMaximumDownloadTime( pTimeout: *mut ULONG, ) -> HRESULT, }} RIDL!{#[uuid(0x659cdeaa, 0x489e, 0x11d9, 0xa9, 0xcd, 0x00, 0x0d, 0x56, 0x96, 0x52, 0x51)] interface IBackgroundCopyFile3(IBackgroundCopyFile3Vtbl): IBackgroundCopyFile2(IBackgroundCopyFile2Vtbl) { fn GetTemporaryName( pFilename: *mut LPWSTR, ) -> HRESULT, fn SetValidationState( state: BOOL, ) -> HRESULT, fn GetValidationState( pState: *mut BOOL, ) -> HRESULT, fn IsDownloadedFromPeer( pVal: *mut BOOL, ) -> HRESULT, }} RIDL!{#[uuid(0x659cdeac, 0x489e, 0x11d9, 0xa9, 0xcd, 0x00, 0x0d, 0x56, 0x96, 0x52, 0x51)] interface IBackgroundCopyCallback2(IBackgroundCopyCallback2Vtbl): IBackgroundCopyCallback(IBackgroundCopyCallbackVtbl) { fn FileTransferred( pJob: *mut IBackgroundCopyJob, pFile: *mut IBackgroundCopyFile, ) -> HRESULT, }}