123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447 |
- {******************************************************************************}
- { }
- { Background Intelligent Transfer Service API interface Unit for Object Pascal }
- { }
- { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
- { Corporation. All Rights Reserved. }
- { }
- { The original file is: bits.h, released August 2001. The original Pascal }
- { code is: Bits.pas, released October 2001. The initial developer of the }
- { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
- { }
- { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
- { Marcel van Brakel. All Rights Reserved. }
- { }
- { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
- { }
- { You may retrieve the latest version of this file at the Project JEDI }
- { APILIB home page, located at http://jedi-apilib.sourceforge.net }
- { }
- { The contents of this file are used with permission, subject to the Mozilla }
- { Public License Version 1.1 (the "License"); you may not use this file except }
- { in compliance with the License. You may obtain a copy of the License at }
- { http://www.mozilla.org/MPL/MPL-1.1.html }
- { }
- { Software distributed under the License is distributed on an "AS IS" basis, }
- { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
- { the specific language governing rights and limitations under the License. }
- { }
- { Alternatively, the contents of this file may be used under the terms of the }
- { GNU Lesser General Public License (the "LGPL License"), in which case the }
- { provisions of the LGPL License are applicable instead of those above. }
- { If you wish to allow use of your version of this file only under the terms }
- { of the LGPL License and not to allow others to use your version of this file }
- { under the MPL, indicate your decision by deleting the provisions above and }
- { replace them with the notice and other provisions required by the LGPL }
- { License. If you do not delete the provisions above, a recipient may use }
- { your version of this file under either the MPL or the LGPL License. }
- { }
- { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
- { }
- {******************************************************************************}
- // $Id: JwaBits.pas,v 1.7 2005/09/03 14:27:47 marquardt Exp $
- unit JwaBits;
- {$WEAKPACKAGEUNIT}
- {$HPPEMIT ''}
- {$HPPEMIT '#include "bits.h"'}
- {$HPPEMIT ''}
- {$I jediapilib.inc}
- interface
- uses
- JwaWindows, JwaBitsMsg;
- const
- BG_SIZE_UNKNOWN = Int64(-1);
- {$EXTERNALSYM BG_SIZE_UNKNOWN}
- //
- // =============================
- // Marshalled interfaces
- // =============================
- type
- _BG_FILE_PROGRESS = record
- BytesTotal: UINT64;
- BytesTransferred: UINT64;
- Completed: BOOL;
- end;
- {$EXTERNALSYM _BG_FILE_PROGRESS}
- BG_FILE_PROGRESS = _BG_FILE_PROGRESS;
- {$EXTERNALSYM BG_FILE_PROGRESS}
- TBgFileProgress = BG_FILE_PROGRESS;
- PBgFileProgress = ^BG_FILE_PROGRESS;
- const
- IID_IBackgroundCopyFile: TGUID = '{01B7BD23-FB88-4A77-8490-5891D3E4653A}';
- {$EXTERNALSYM IID_IBackgroundCopyFile}
- type
- IBackgroundCopyFile = interface(IUnknown)
- ['{01b7bd23-fb88-4a77-8490-5891d3e4653a}']
- function GetRemoteName(out pVal: LPWSTR): HRESULT; stdcall;
- function GetLocalName(out pVal: LPWSTR): HRESULT; stdcall;
- function GetProgress(out pVal: BG_FILE_PROGRESS): HRESULT; stdcall;
- end;
- {$EXTERNALSYM IBackgroundCopyFile}
- //--------------------------------------------------------------------
- //
- const
- IID_IEnumBackgroundCopyFiles: TGUID = '{CA51E165-C365-424C-8D41-24AAA4FF3C40}';
- {$EXTERNALSYM IID_IEnumBackgroundCopyFiles}
- type
- IEnumBackgroundCopyFiles = interface(IUnknown)
- ['{ca51e165-c365-424c-8d41-24aaa4ff3c40}']
- function Next(celt: ULONG; out rgelt: IBackgroundCopyFile; pceltFetched: PULONG): HRESULT; stdcall;
- function Skip(celt: ULONG): HRESULT; stdcall;
- function Reset: HRESULT; stdcall;
- function Clone(out ppenum: IEnumBackgroundCopyFiles): HRESULT; stdcall;
- function GetCount(out puCount: ULONG): HRESULT; stdcall;
- end;
- {$EXTERNALSYM IEnumBackgroundCopyFiles}
- //--------------------------------------------------------------------
- //
- type
- BG_ERROR_CONTEXT = (
- BG_ERROR_CONTEXT_NONE,
- BG_ERROR_CONTEXT_UNKNOWN,
- BG_ERROR_CONTEXT_GENERAL_QUEUE_MANAGER,
- BG_ERROR_CONTEXT_QUEUE_MANAGER_NOTIFICATION,
- BG_ERROR_CONTEXT_LOCAL_FILE,
- BG_ERROR_CONTEXT_REMOTE_FILE,
- BG_ERROR_CONTEXT_GENERAL_TRANSPORT,
- BG_ERROR_CONTEXT_REMOTE_APPLICATION);
- {$EXTERNALSYM BG_ERROR_CONTEXT}
- TBgErrorContext = BG_ERROR_CONTEXT;
- const
- IID_IBackgroundCopyError: TGUID = '{19C613A0-FCB8-4F28-81AE-897C3D078F81}';
- {$EXTERNALSYM IID_IBackgroundCopyError}
- type
- IBackgroundCopyError = interface(IUnknown)
- ['{19c613a0-fcb8-4f28-81ae-897c3d078f81}']
- function GetError(out pContext: BG_ERROR_CONTEXT; out pCode: HRESULT): HRESULT; stdcall;
- // Returns BG_E_FILE_NOT_AVAILABLE if no file is available
- function GetFile(out ppVal: IBackgroundCopyFile): HRESULT; stdcall;
- // Return a human readable description of the error.
- // Use CoTaskMemFree to free the description.
- function GetErrorDescription(LanguageId: DWORD; out pErrorDescription: LPWSTR): HRESULT; stdcall;
- // Return a human readable description of the error context.
- // Use CoTaskMemFree to free the description.
- function GetErrorContextDescription(LanguageId: DWORD; out pContextDescription: LPWSTR): HRESULT; stdcall;
- // Returns BG_E_PROTOCOL_NOT_AVAILABLE if no protocol is available
- function GetProtocol(out pProtocol: LPWSTR): HRESULT; stdcall;
- end;
- {$EXTERNALSYM IBackgroundCopyError}
- // ==============================================
- // Job Interface
- type
- _BG_FILE_INFO = record
- RemoteName: LPWSTR;
- LocalName: LPWSTR;
- end;
- {$EXTERNALSYM _BG_FILE_INFO}
- BG_FILE_INFO = _BG_FILE_INFO;
- {$EXTERNALSYM BG_FILE_INFO}
- TBgFileInfo = BG_FILE_INFO;
- PBgFileInfo = ^BG_FILE_INFO;
- _BG_JOB_PROGRESS = record
- BytesTotal: UINT64;
- BytesTransferred: UINT64;
- FilesTotal: ULONG;
- FilesTransferred: ULONG;
- end;
- {$EXTERNALSYM _BG_JOB_PROGRESS}
- BG_JOB_PROGRESS = _BG_JOB_PROGRESS;
- {$EXTERNALSYM BG_JOB_PROGRESS}
- TBgJobProgress = BG_JOB_PROGRESS;
- PBgJobProgress = ^BG_JOB_PROGRESS;
- _BG_JOB_TIMES = record
- CreationTime: FILETIME;
- ModificationTime: FILETIME;
- TransferCompletionTime: FILETIME;
- end;
- {$EXTERNALSYM _BG_JOB_TIMES}
- BG_JOB_TIMES = _BG_JOB_TIMES;
- {$EXTERNALSYM BG_JOB_TIMES}
- TBgJobTimes = BG_JOB_TIMES;
- PBgJobTimes = ^BG_JOB_TIMES;
- BG_JOB_PRIORITY = (
- BG_JOB_PRIORITY_FOREGROUND,
- BG_JOB_PRIORITY_HIGH,
- BG_JOB_PRIORITY_NORMAL,
- BG_JOB_PRIORITY_LOW);
- {$EXTERNALSYM BG_JOB_PRIORITY}
- TBgJobPriority = BG_JOB_PRIORITY;
- PBgJobPriority = ^BG_JOB_PRIORITY;
- BG_JOB_STATE = (
- BG_JOB_STATE_QUEUED,
- BG_JOB_STATE_CONNECTING,
- BG_JOB_STATE_TRANSFERRING,
- BG_JOB_STATE_SUSPENDED,
- BG_JOB_STATE_ERROR,
- BG_JOB_STATE_TRANSIENT_ERROR,
- BG_JOB_STATE_TRANSFERRED,
- BG_JOB_STATE_ACKNOWLEDGED,
- BG_JOB_STATE_CANCELLED);
- {$EXTERNALSYM BG_JOB_STATE}
- TBgJobState = BG_JOB_STATE;
- PBgJobState = ^BG_JOB_STATE;
- BG_JOB_TYPE = (
- BG_JOB_TYPE_DOWNLOAD,
- BG_JOB_TYPE_UPLOAD,
- BG_JOB_TYPE_UPLOAD_REPLY);
- {$EXTERNALSYM BG_JOB_TYPE}
- TBgJobType = BG_JOB_TYPE;
- BG_JOB_PROXY_USAGE = (
- BG_JOB_PROXY_USAGE_PRECONFIG,
- BG_JOB_PROXY_USAGE_NO_PROXY,
- BG_JOB_PROXY_USAGE_OVERRIDE);
- {$EXTERNALSYM BG_JOB_PROXY_USAGE}
- TBgJobProxyUsage = BG_JOB_PROXY_USAGE;
- PBgJobProxyUsage = ^BG_JOB_PROXY_USAGE;
- const
- IID_IBackgroundCopyJob: TGUID = '{37668D37-507E-4160-9316-26306D150B12}';
- {$EXTERNALSYM IID_IBackgroundCopyJob}
- type
- IBackgroundCopyJob = interface(IUnknown)
- ['{37668d37-507e-4160-9316-26306d150b12}']
- //--------------------------------------------------------------------
- //
- // Returns E_INVALIDARG if one of the filesets has
- // - local name is blank
- // - local name contains invalid characters
- // - remote name is blank
- // - remote name has invalid format
- //
- // Returns CO_E_NOT_SUPPORTED if
- // - remote URL contains unsupported protocol
- //
- function AddFileSet(cFileCount: ULONG; pFileSet: PBgFileInfo): HRESULT; stdcall;
- function AddFile(RemoteUrl, LocalName: LPCWSTR): HRESULT; stdcall;
- //
- // Gets an enumerator object for all files in the job.
- //
- function EnumFiles(out pEnum: IEnumBackgroundCopyFiles): HRESULT; stdcall;
- //
- // Pause all activity on the job. The service will take no action until one of
- // Resume(), Cancel(), Complete() is called.
- //
- // if already suspended, just returns S_OK.
- //
- function Suspend: HRESULT; stdcall;
- //
- // Enable downloading for this job. Job properties cannot be modified
- // after Resume() until the app calls Suspend().
- //
- // if already running, just returns S_OK.
- //
- function Resume: HRESULT; stdcall;
- //
- // Permanently stop the job. The service will delete the job metadata and downloaded files.
- //
- // If already cancelled or resumed, returns ???
- //
- function Cancel: HRESULT; stdcall;
- //
- // Acknowledges receipt of the job-complete notification. The service will delete
- // the job metadata and leave the downloaded files.
- //
- function Complete: HRESULT; stdcall;
- //--------------------------------------------------------------------
- function GetId(out pVal: GUID): HRESULT; stdcall;
- function GetType(out pVal: BG_JOB_TYPE): HRESULT; stdcall;
- function GetProgress(out pVal: BG_JOB_PROGRESS): HRESULT; stdcall;
- function GetTimes(out pVal: BG_JOB_TIMES): HRESULT; stdcall;
- function GetState(out pVal: BG_JOB_STATE): HRESULT; stdcall;
- function GetError(out ppError: IBackgroundCopyError): HRESULT; stdcall;
- //
- // The owner of the job, represented as a string.
- // Only the owner and admins are allowed to see or change the job.
- //
- function GetOwner(out pVal: LPWSTR): HRESULT; stdcall;
- //
- // name of the job, suitable for display in UI
- //
- function SetDisplayName(Val: LPCWSTR): HRESULT; stdcall;
- function GetDisplayName(out pVal: LPWSTR): HRESULT; stdcall;
- //
- // a field for use by the app
- //
- function SetDescription(Val: LPCWSTR): HRESULT; stdcall;
- function GetDescription(out pVal: LPWSTR): HRESULT; stdcall;
- //
- // the priority of the job in the queue.
- // default = PRIORITY_NORMAL
- // values not in BG_JOB_PRIORITY return E_NOTIMPL.
- //
- function SetPriority(Val: BG_JOB_PRIORITY): HRESULT; stdcall;
- function GetPriority(out pVal: BG_JOB_PRIORITY): HRESULT; stdcall;
- //
- // ignores extra flags?
- //
- function SetNotifyFlags(Val: ULONG): HRESULT; stdcall;
- function GetNotifyFlags(out pVal: ULONG): HRESULT; stdcall;
- // interface pointer that implements the IBackgroundCallback interface for notifications.
- // If the pointer becomes invalid, the service will try to create a new notification object
- // with the notify CLSID.
- function SetNotifyInterface(Val: IUnknown): HRESULT; stdcall;
- function GetNotifyInterface(out pVal: IUnknown): HRESULT; stdcall;
- function SetMinimumRetryDelay(Seconds: ULONG): HRESULT; stdcall;
- function GetMinimumRetryDelay(out Seconds: ULONG): HRESULT; stdcall;
- function SetNoProgressTimeout(Seconds: ULONG): HRESULT; stdcall;
- function GetNoProgressTimeout(out Seconds: ULONG): HRESULT; stdcall;
- function GetErrorCount(out Errors: ULONG): HRESULT; stdcall;
- function SetProxySettings(ProxyUsage: BG_JOB_PROXY_USAGE; ProxyList, ProxyBypassList: PWCHAR): HRESULT; stdcall;
- function GetProxySettings(pProxyUsage: BG_JOB_PROXY_USAGE; pProxyList, pProxyBypassList: LPWSTR): HRESULT; stdcall;
- function TakeOwnership(): HRESULT; stdcall;
- end;
- {$EXTERNALSYM IBackgroundCopyJob}
- // ==============================================
- // IEnumJobs Interface
- // This interface allows enumerating the jobs under a Job
- const
- IID_IEnumBackgroundCopyJobs: TGUID = '{1AF4F612-3B71-466F-8F58-7B6F73AC57AD}';
- {$EXTERNALSYM IID_IEnumBackgroundCopyJobs}
- type
- IEnumBackgroundCopyJobs = interface(IUnknown)
- ['{1af4f612-3b71-466f-8f58-7b6f73ac57ad}']
- function Next(celt: ULONG; out rgelt: IBackgroundCopyJob; pceltFetched: PULONG): HRESULT; stdcall;
- function Skip(celt: ULONG): HRESULT; stdcall;
- function Reset: HRESULT; stdcall;
- function Clone(out ppenum: IEnumBackgroundCopyJobs): HRESULT; stdcall;
- function GetCount(out puCount: ULONG): HRESULT; stdcall;
- end;
- {$EXTERNALSYM IEnumBackgroundCopyJobs}
- const
- BG_NOTIFY_JOB_TRANSFERRED = $0001;
- {$EXTERNALSYM BG_NOTIFY_JOB_TRANSFERRED}
- BG_NOTIFY_JOB_ERROR = $0002;
- {$EXTERNALSYM BG_NOTIFY_JOB_ERROR}
- BG_NOTIFY_DISABLE = $0004;
- {$EXTERNALSYM BG_NOTIFY_DISABLE}
- BG_NOTIFY_JOB_MODIFICATION = $0008;
- {$EXTERNALSYM BG_NOTIFY_JOB_MODIFICATION}
- // ==============================================
- // IBackgroundCallback Interface
- // This interface is implemented by the client and is used by the queue manager
- // to supply progress information to the client.
- const
- IID_IBackgroundCopyCallback: TGUID = '{97EA99C7-0186-4AD4-8DF9-C5B4E0ED6B22}';
- {$EXTERNALSYM IID_IBackgroundCopyCallback}
- type
- IBackgroundCopyCallback = interface(IUnknown)
- ['{97ea99c7-0186-4ad4-8df9-c5b4e0ed6b22}']
- //
- // A job has transferred successfully.
- //
- function JobTransferred(pJob: IBackgroundCopyJob): HRESULT; stdcall;
- //
- // An error occurred, and the service has suspended the job.
- // Fix the error and resume the job.
- // Get error details by calling (*pFailingJob)->GetStatus().
- //
- function JobError(pJob: IBackgroundCopyJob; pError: IBackgroundCopyError): HRESULT; stdcall;
- //
- // The job has been modified. Intendended for user interfaces.
- //
- function JobModification(pJob: IBackgroundCopyJob; dwReserved: DWORD): HRESULT; stdcall;
- end;
- {$EXTERNALSYM IBackgroundCopyCallback}
- //
- // IBackgroundCopyManager is the "root" interface to the background file copy component.
- //
- const
- BG_JOB_ENUM_ALL_USERS = $0001;
- {$EXTERNALSYM BG_JOB_ENUM_ALL_USERS}
- IID_IBackgroundCopyManager: TGUID = '{5CE34C0D-0DC9-4C1F-897C-DAA1B78CEE7C}';
- {$EXTERNALSYM IID_IBackgroundCopyManager}
- type
- IBackgroundCopyManager = interface(IUnknown)
- ['{5ce34c0d-0dc9-4c1f-897c-daa1b78cee7c}']
- function CreateJob(DisplayName: LPCWSTR; Type_: BG_JOB_TYPE; out pJobId: GUID; out ppJob: IBackgroundCopyJob): HRESULT; stdcall;
- function GetJob(const jobID: GUID; out ppJob: IBackgroundCopyJob): HRESULT; stdcall;
- //
- // Without this flag, jobs not owned by the caller are excluded from the enumeration.
- // With this flag, those jobs are included. Only works if the caller is an administrator.
- //
- function EnumJobs(dwFlags: DWORD; out ppEnum: IEnumBackgroundCopyJobs): HRESULT; stdcall;
- function GetErrorDescription(hResult: HRESULT; LanguageId: DWORD; out pErrorDescription: LPWSTR): HRESULT; stdcall;
- end;
- {$EXTERNALSYM IBackgroundCopyManager}
- //---------------------------------------------------------------------------
- const
- LIBID_BackgroundCopyManager: GUID = '{4991d34b-80a1-4291-83b6-3328366b9097}';
- {$EXTERNALSYM LIBID_BackgroundCopyManager}
- CLSID_BackgroundCopyManager: GUID = '{4991d34b-80a1-4291-83b6-3328366b9097}';
- {$EXTERNALSYM CLSID_BackgroundCopyManager}
- implementation
- end.
|