Configuration Manager 中的 ICcmAlternateDownloadProvider::D ownloadContent 方法指示提供程序下载内容。
语法
HRESULT DownloadContent(
LPCWSTR szContentId,
LPCWSTR szContentVersion,
LPCWSTR szRemotePath,
LPCWSTR szLocalPath,
LPCWSTR szNotifyEndpoint,
LPCWSTR szNotifyData,
CCM_DTS_PRIORITY Priority,
DWORD dwTimeoutSeconds,
DWORD dwChunkSize,
DWORD dwFlags,
LPCWSTR szLocationOptions,
LPCWSTR szFileManifest,
LPCWSTR szOwnerSID,
BOOL bDeleteJobOnError,
LPCWSTR szProviderData,
LPCWSTR szPackageData,
GUID *pJobID
);
参数
szContentId
数据类型LPCWSTR
限定符:[in]
要下载的内容/包 ID。
szContentVersion
数据类型LPCWSTR
限定符:[in]
要下载的内容/包版本。
szRemotePath
数据类型LPCWSTR
限定符:[in]
有关下载内容的提示。 提供程序可以随意忽略此情况,并使用自己的机制进行下载。
szLocalPath
数据类型LPCWSTR
限定符:[in]
应将内容下载到的目录。 此调用中应已存在此目录,提供程序不应出于任何原因更改目录本身上的任何 ACL。 当 szManifest 为 null
时,应忽略此参数。
szNotifyEndpoint
数据类型LPCWSTR
限定符:[in]
用于通知内容传输管理器的终结点。 这应逐字传递到对 SendNotify*ToCTM 的调用中。
szNotifyData
数据类型LPCWSTR
限定符:[in]
内容传输管理器指定的通知数据 应逐字传递到对 SendNotify*ToCTM 的调用中
Priority
数据类型CCM_DTS_PRIORITY
限定符:[in]
作业的优先级。 请参阅有关CCM_DTS_PRIORITY的说明。
dwTimeoutSeconds
数据类型DWORD
限定符:[in]
作业的超时。 如果达到超时,作业应通过 SendNotifyErrorToCTM 报告错误。
dwChunkSize
数据类型DWORD
限定符:[in]
用于通知的区块大小。 如果已请求进度通知,则应每隔一个 dwChunkSize 字节通知内容传输管理器。
dwFlags
数据类型DWORD
限定符:[in]
作业的标志。 这对应于CCM_DTS_FLAG值的 OR。
szLocationOptions
数据类型LPCWSTR
限定符:[in]
保留。 备用提供程序应忽略这一点。
szFileManifest
数据类型LPCWSTR
限定符:[in, unique]
null
表示要从目标下载的文件字节范围的 或 XML 数据。 请参阅下面的 “备注 ”。
szOwnerSID
数据类型LPCWSTR
限定符:[in]
应在其中执行下载的用户上下文。
bDeleteJobOnError
数据类型BOOL
限定符:[in]
指示作业是否应因暂时性错误条件而立即失败。 如果为 false,则暂时性错误应仅导致提供程序在内部重试,除非作业超时或内容传输管理器另有指示。
szProviderData
数据类型LPCWSTR
限定符:[in]
CCM_DownloadProvider策略中指定的提供程序特定数据。 如果未指定数据,则为空字符串。
szPackageData
数据类型LPCWSTR
限定符:[in]
包特定的数据在服务器端指定,包装在 Data> XML 元素中<。 如果未指定数据,则此字符串将为空字符串。
*pJobID
数据类型GUID
限定符:[out]
应在后续调用中用于引用的作业 ID。
返回值
代码 HRESULT
。 可能的值包括但不限于以下内容:
S_OK
成功意味着已成功触发发现。 所有其他返回值都表示失败。
备注
从版本 1702 开始,Configuration Manager与支持增量下载的 Microsoft 365 即点即用集成。 应更新备用内容提供程序,以实现字节范围下载功能。 字节范围信息是在 szFileManifest 参数中指定的 XML 清单中指定的。
清单 XML 使用以下架构:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="DTSManifest">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="200" minOccurs="1" name="File">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="500" minOccurs="0" name="Chunk">
<xs:complexType>
<xs:attribute name="Length" type="xs:unsignedInt" use="required" />
<xs:attribute name="Offset" type="xs:unsignedInt" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Destination" type="xs:string" use="required" />
<xs:attribute name="Source" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Version" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>
以下示例演示下载三个文件的清单:
<?xml version="1.0"?>
<DTSManifest Version="1">
<File Destination="C:\Prod\stream.dat" Source="Office/Data/6366.2036/stream.dat">
<Chunk Length="43491" Offset="59247735"/>
<Chunk Length="267118" Offset="69247735"/>
</File>
<File Destination="C:\Prod\s320.cab" Source="Office/Data/6366.2036/320.cab">
<Chunk Length="512" Offset="50"/>
</File>
<File Destination="C:\Prod\s640.cab" Source="Office/Data/16.0.6366.2036/s640.cab"/>
</DTSManifest>
处理清单时,请记住:
- 将有一个或多个
<file
> 元素。 - 如果元素
<file>
包含<chunk>
元素,则每个元素指定<chunk>
增量下载的长度和字节偏移量。 - 如果未
<chunk>
指定任何元素,则应下载整个文件。
如果备用内容提供程序无法支持增量下载,Configuration Manager自动使用分发点下载Microsoft 365 内容。 但是,对于其他下载方案,备用内容提供程序的工作方式不会造成其他影响。
注意
如果提供程序出于任何原因无法处理请求,则应返回错误。
要求
运行时要求
有关详细信息,请参阅 Configuration Manager客户端运行时要求。
开发要求
有关详细信息,请参阅 Configuration Manager客户端开发要求。