DeclaredConfiguration CSP

Windows 预览体验成员的徽标。

重要提示

此云解决方案提供商包含一些正在开发中的设置,仅适用于 Windows Insider Preview 版本。 这些设置可能会发生更改,并且可能依赖于预览版中的其他功能或服务。

主 MDM 模型是一种主 MDM 模型,其中 MDM 服务器只负责协调和持续维护配置方案的设备状态。 由于基于 OMA-DM Syncml 标准的同步配置模型,此行为会导致网络流量密集和高网络延迟。 鉴于服务器需要深入了解客户端,这也容易出错。

Windows 声明的配置 (WinDC) 设备管理模型要求服务器将方案配置的所有设置值传递到设备。 服务器通过 DeclaredConfiguration CSP 以异步方式批量发送它们。

  • 在客户端发起的 OMA-DM 会话期间,WinDC 服务器通过 DeclaredConfiguration CSP URI 向客户端发送配置或清单 WinDC 文档。 如果设备验证文档的语法是否正确,则客户端堆栈会将请求推送到其业务流程协调程序,以异步处理请求。 然后,客户端堆栈退出,并将控制权返回到 WinDC 服务。 此行为允许设备异步处理请求。

  • 在客户端上,如果有任何请求正在处理或已完成,它会向服务器发送 一般警报 。 此警报汇总了每个文档的状态、状态和进度。 向 WinDC OMA-DM 服务器发送的每个客户端 HTTPS 请求都包含此摘要。

  • WinDC 服务器使用通用警报来确定哪些请求已成功完成或出现错误。 然后,服务器可以通过 DeclaredConfiguration CSP URI 同步检索 WinDC 文档处理结果。

以下列表显示了 DeclaredConfiguration 配置服务提供程序节点:

Host

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host

主机内部节点指示配置请求或清单请求的目标是主机 OS。 此节点用于范围,以防 enclave 成为配置目标。

描述框架属性:

属性名 属性值
格式 node
访问类型 添加、删除、获取

Host/Complete

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete

此内部节点指示配置具有离散设置值,并且是自包含的完整设置和值对,这些值对不包含需要稍后使用其他数据解析的占位符。 请求已准备好按原样进行处理。

完成请求的服务器到客户端流与清单请求相同。

描述框架属性:

属性名 属性值
格式 node
访问类型 添加、删除、获取

Host/Complete/Documents

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents

“文档”节点指示配置采用文档的形式,文档是用于通过“声明的配置”堆栈配置方案的设置集合。

描述框架属性:

属性名 属性值
格式 node
访问类型 添加、删除、获取
Host/Complete/Documents/{DocID}
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID}

唯一标识配置文档。 其他文档不能有此 ID。ID 应为 GUID。

描述框架属性:

属性名 属性值
格式 node
访问类型 添加、删除、获取
动态节点命名 ServerGeneratedUniqueIdentifier
允许的值 正则表达式: [0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}
Host/Complete/Documents/{DocID}/Document
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID}/Document

“文档”节点的值是基于 XML 的文档,其中包含用于配置指定方案的设置和值的集合。 “声明的配置”堆栈验证文档的语法,该堆栈标记客户端要异步处理的文档。 然后,堆栈将控制返回到 OMA-DM 服务。 堆栈反过来会异步处理请求。 下面是使用声明的配置 URI ./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/27FEA311-68 的指定所需状态配置的示例。 B9-4320-9。 FC4-296。 F6FDFAFE2/文档。

描述框架属性:

属性名 属性值
格式 chr (字符串)
访问类型 添加、删除、获取、替换
Host/Complete/Documents/{DocID}/Properties
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID}/Properties

“属性”节点封装应用于 [DocID] 引用的指定文档的属性列表。

描述框架属性:

属性名 属性值
格式 node
访问类型 添加、删除、获取
Host/Complete/Documents/{DocID}/Properties/Abandoned
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID}/Properties/Abandoned

“已放弃”节点允许 OMA-DM 服务器指示不再管理文档。

描述框架属性:

属性名 属性值
格式 int
访问类型 添加、删除、获取、替换
默认值 0

允许的值:

说明
0(默认值) 不再管理文档。
1 文档是托管的。

Host/Complete/results

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results

“结果”节点指示这是 URI 路径的一部分,该路径将返回包含配置请求结果的 XML 文档。

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”
Host/Complete/results/{DocID}
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results/{DocID}

唯一标识将返回配置请求结果的配置文档。

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”
动态节点命名 ClientInventory
Host/Complete/results/{DocID}/Document
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results/{DocID}/Document

Document 节点的值是基于 XML 的文档,其中包含 [DocId] 指定的配置请求的设置结果的集合。

描述框架属性:

属性名 属性值
格式 chr (字符串)
访问类型 “获取”

主机/清单

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory

清单内部节点指示这是一个清单请求。 要检索的设置值通过文档叶节点在 XML 文档中指定。

清单请求的服务器到客户端流与 Complete 请求相同。

描述框架属性:

属性名 属性值
格式 node
访问类型 添加、删除、获取

Host/Inventory/Documents

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents

“文档”节点指示清单请求采用文档的形式,文档是用于检索其值的设置的集合。

描述框架属性:

属性名 属性值
格式 node
访问类型 添加、删除、获取
Host/Inventory/Documents/{DocID}
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents/{DocID}

唯一标识清单文档。 其他文档不能有此 ID。ID 应为 GUID。

描述框架属性:

属性名 属性值
格式 node
访问类型 添加、删除、获取
动态节点命名 ServerGeneratedUniqueIdentifier
允许的值 正则表达式: [0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}
Host/Inventory/Documents/{DocID}/Document
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents/{DocID}/Document

“文档”节点的值是基于 XML 的文档,其中包含将用于检索其值的设置集合。 “声明的配置”堆栈验证文档的语法,该堆栈标记客户端要异步处理的文档。 然后,堆栈将控制返回到 OMA-DM 服务。 堆栈反过来会异步处理请求。 下面是使用声明的配置 URI ./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents/27FEA311-68 的指定所需状态配置的示例。 B9-4320-9。 FC4-296。 F6FDFAFE2/文档。

描述框架属性:

属性名 属性值
格式 chr (字符串)
访问类型 添加、删除、获取、替换

Host/Inventory/Results

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Results

“结果”节点指示这是 URI 路径的一部分,该路径将返回包含清单请求结果的 XML 文档。

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”
Host/Inventory/Results/{DocID}
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Results/{DocID}

唯一标识清单文档。 其他文档不能有此 ID。ID 应为 GUID。

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”
动态节点命名 ClientInventory
Host/Inventory/Results/{DocID}/Document
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Results/{DocID}/Document

文档节点的值是基于 XML 的文档,其中包含 [DocId] 指定的清单请求的设置结果的集合。

描述框架属性:

属性名 属性值
格式 chr (字符串)
访问类型 “获取”

ManagementServiceConfiguration

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/ManagementServiceConfiguration

用于控制某些 Windows 声明配置行为的 ManagementServiceConfiguration 节点。

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”

ManagementServiceConfiguration/ConflictResolution

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows Insider Preview
./Device/Vendor/MSFT/DeclaredConfiguration/ManagementServiceConfiguration/ConflictResolution

此节点控制打开和关闭冲突解决。

描述框架属性:

属性名 属性值
格式 int
访问类型 添加、删除、获取、替换

允许的值:

描述
0 冲突解决方法为 OFF。
1 冲突解决方法为 ON。

DeclaredConfiguration OMA URI

WinDC 请求是使用类似于 的 OMA-URI 发送的 ./Device/Vendor/MSFT/DeclaredConfiguration/Host/[Complete|Inventory]/Documents/{DocID}/Document

  • URI 带有目标范围 (UserDevice) 前缀。
  • {DocID} 是配置方案所需状态的唯一标识符。 每个文档都必须有一个 ID,该 ID 必须是 GUID。
  • 请求可以是 InventoryComplete 请求。

以下 URI 是 Complete 请求的示例: ./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/27FEA311-68B9-4320-9FC4-296F6FDFAFE2/Document

WinDC 文档

<DeclaredConfiguration
    schema="1.0"
    context="Device"
    id="27FEA311-68B9-4320-9FC4-296F6FDFAFE2"
    checksum="99925209110918B67FE962460137AA3440AFF4DB6ABBE15C8F499682457B9999"
    osdefinedscenario="MSFTExtensibilityMIProviderConfig">
    ... {Configuration Data} ...
</DeclaredConfiguration>

<DeclaredConfiguration> XML 标记指定要处理的 WinDC 文档的详细信息。 文档可以是配置请求或清单请求的一部分。 DeclaredConfiguration CSP 有两个 URI,用于对 配置清单 请求进行规范。

此标记具有以下属性:

属性 描述
schema xml 的架构版本。 当前 1.0
context 说明文档是面向设备还是用户。
id 服务器设置的文档的唯一标识符。 此值应为 GUID。
checksum 此值是服务器提供的文档版本。
osdefinedscenario 客户端应使用给定的配置数据配置的命名方案。

DeclaredConfiguration CSP 同步验证元素描述 <DeclaredConfiguration> 的设置批,该批设置表示 WinDC 文档。 它基于 WinDC XML 架构检查语法是否正确。 如果出现语法错误,CSP 会将错误作为当前 OMA-DM 会话的一部分立即返回给服务器。 如果语法检查传递,则请求将传递到 Windows 服务。 Windows 服务异步尝试指定方案的所需状态配置。 此过程释放服务器来执行其他工作,从而降低 WinDC 协议的延迟。 Windows 客户端服务(业务流程协调程序)负责根据服务器提供的需求状态来驱动设备的配置。 服务在其整个生存期内也会保持此状态,直到服务器删除或修改它。

请求的实际处理围绕 osdefinedscenario 标记和文档中指定的配置数据透视。 有关详细信息,请参阅:

WinDC 通用警报

在每次客户端响应服务器请求时,客户端都会构造 WinDC 警报。 此警报汇总了 Windows 服务已处理的每个文档的状态。 以下 XML 是示例警报:

<Alert>
  <CmdID>1</CmdID>
  <Data>1224</Data>
  <Item>
    <Meta>
      <Type xmlns="syncml:metinf">com.microsoft.mdm.declaredconfigurationdocuments</Type>
    </Meta>
    <Data>
      <DeclaredConfigurations schema="1.0">
        <DeclaredConfiguration context="Device"
                               id="27FEA311-68B9-4320-9FC4-296F6FDFAFE2"
                               checksum="99925209110918B67FE962460137AA3440AFF4DB6ABBE15C8F499682457B9999"
                               result_checksum="EE4F1636201B0D39F71654427E420E625B9459EED17ACCEEE1AC9B358F4283FD"
                               state="60" />
      </DeclaredConfigurations>
    </Data>
  </Item>
</Alert>

在此示例中,警报摘要中列出了一个 WinDC 文档。 警报摘要列出了客户端堆栈正在处理的每个文档(配置或清单请求)。 它描述文档的上下文,该上下文指定如何应用文档的范围。 上下文值应为 Device

状态属性的 值为 60,指示已成功处理文档。

WinDC 状态

以下类定义状态值:

enum class DCCSPURIState :unsigned long
{
    NotDefined = 0, // transient
    ConfigRequest = 1, // transient
    ConfigInprogress = 2, // transient
    ConfigInProgressAsyncPending = 3, // transient: Async operation is performed but pending results
    DeleteRequest = 10,  // transient
    DeleteInprogress = 11,  // transient

    GetRequest = 20,  // transient
    GetInprogress = 21,  // transient

    ConstructURIStorageSuccess = 40, // transient

    ConfigCompletedSuccess = 60, // permanent
    ConfigCompletedError = 61, // permanent
    ConfigInfraError = 62, // permanent
    ConfigCompletedSuccessNoRefresh = 63, // permanent

    DeleteCompletedSuccess = 70, // permanent
    DeleteCompletedError = 71, // permanent
    DeleteInfraError = 72, // permanent

    GetCompletedSuccess = 80, // permanent
    GetCompletedError = 81, // permanent
    GetInfraError = 82 // permanent
};

SyncML 示例

放弃 WinDC 文档

当某些资源不再面向用户或组时,将放弃资源。 服务器可以选择放弃 WinDC 文档,而不是删除设备上的资源。 已放弃的资源会保留在设备上,但停止刷新处理偏移控制的 WinDC 文档。 此外, 资源所有权 将转移到 MDM,这意味着可以通过旧版 MDM 通道再次修改同一资源。

此示例演示如何通过将 Abandoned 属性设置为 1 来放弃 WinDC 文档。

<SyncML xmlns="SYNCML:SYNCML1.1">
  <SyncBody>
    <Replace>
    <CmdID>2</CmdID>
    <Item>
        <Meta>
            <Format>int</Format>
            <Type>text/plain</Type>
        </Meta>
        <Target>
            <LocURI>./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/27FEA311-68B9-4320-9FC4-296F6FDFAFE2/Properties/Abandoned</LocURI>
        </Target>
        <Data>1</Data>
    </Item>
    </Replace>
    <Final/>
  </SyncBody>
</SyncML>

Unabandon a WinDC 文档

不带文档会导致立即应用文档,将 资源所有权 转移回 WinDC 管理,并阻止旧版 MDM 通道再次管理通道。

此示例演示如何通过将 Abandoned 属性设置为 0 来取消 WinDC 文档。

<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.1">
  <SyncBody>
    <Replace>
      <CmdID>10</CmdID>
      <Item>
        <Target>
          <LocURI>./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/DCA000B5-397D-40A1-AABF-40B25078A7F9/Properties/Abandoned</LocURI>
        </Target>
        <Meta>
          <Format xmlns="syncml:metinf">int</Format>
        </Meta>
        <Data>0</Data>
      </Item>
    </Replace>
    <Final />
  </SyncBody>
</SyncML>

删除 WinDC 文档

文档的 SyncML 删除只会删除文档,但设备上的任何设置都保留。 此示例演示如何删除文档。

<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.1">
<SyncBody>
    <Delete>
        <CmdID>2</CmdID>
        <Item>
        <Target>
            <LocURI>./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/27FEA311-68B9-4320-9FC4-296F6FDFAFE2/Document</LocURI>
        </Target>
        </Item>
    </Delete>
    <Final/>
    </SyncBody>
</SyncML>

配置服务提供程序参考