将单个文件添加到作业。
Syntax
HRESULT AddFile(
[in] LPCWSTR RemoteUrl,
[in] LPCWSTR LocalName
);
参数
[in] RemoteUrl
包含服务器上文件名称的以 Null 结尾的字符串。 有关指定远程名称的信息,请参阅BG_FILE_INFO结构的 RemoteName 成员和备注部分。
[in] LocalName
包含客户端上文件名称的以 Null 结尾的字符串。 有关指定本地名称的信息,请参阅BG_FILE_INFO结构的 LocalName 成员和备注部分。
返回值
此方法返回以下 HRESULT 值以及其他值。
| 返回代码 | Description |
|---|---|
|
文件已成功添加到作业。 |
|
上传作业只能包含一个文件;不能将另一个文件添加到作业。 |
|
MaxFilesPerJob 组策略设置确定作业可以包含的文件数。 将文件添加到作业超出了 MaxFilesPerJob 限制。 |
|
由于以下原因之一,可收到此错误:
|
|
用户无权写入客户端上的指定目录。 |
注解
若要一次向作业添加多个文件,请调用 IBackgroundCopyJob::AddFileSet 方法。 将多个文件添加到作业时调用 AddFileSet 方法比在循环中调用 AddFile 方法更有效。 有关详细信息,请参阅 将文件添加到作业。
若要将文件添加到从该文件下载数据范围的作业,请调用 IBackgroundCopyJob3::AddFileWithRanges 方法。
上传作业只能包含一个文件。 如果添加第二个文件,该方法将返回BG_E_TOO_MANY_FILES。
对于下载,BITS 保证文件版本(基于文件大小和日期,而不是内容)将保持一致;但是,它不能保证一组文件将一致。 例如,如果在服务器上更新文件时,BITS 正在下载作业中两个文件中的第二个文件,则 BITS 将重启第二个文件的下载;但是,不会再次下载第一个文件。
请注意,如果拥有从服务器下载的文件,则应为每个新版本的文件创建新的 URL。 如果对文件的新版本使用相同的 URL,某些代理服务器可能会从其缓存中提供过时数据,因为它们在文件过期时不会与原始服务器进行验证。
对于上传,如果本地文件在传输文件时发生更改,则 BITS 将生成错误。 错误代码BG_E_FILE_CHANGED,上下文BG_ERROR_CONTEXT_LOCAL_FILE。
BITS 按顺序传输作业中的文件。 如果在传输文件时发生错误,则作业将移动到错误状态,在解决错误之前不会处理作业中的更多文件。
默认情况下,用户可以向作业添加最多 200 个文件。 此限制不适用于管理员或服务帐户。 若要更改默认值,请设置 MaxFilesPerJob 组策略。
在 Windows Vista 之前: 用户可以添加到作业的文件数没有限制。
有关可伸缩性问题,请参阅 使用 BITS 时的最佳做法。
例子
有关向作业添加单个文件的示例,请参阅 向作业添加文件。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows XP |
| 支持的最低服务器 | Windows Server 2003 |
| 目标平台 | Windows操作系统 |
| Header | bits.h |
| Library | Bits.lib |
| DLL | QmgrPrxy.dll |
另请参阅
IBackgroundCopyJob3::AddFileWithRanges