DeclaredConfiguration CSP
重要提示
此云解决方案提供商包含一些正在开发中的设置,仅适用于 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 配置服务提供程序节点:
- ./Device/Vendor/MSFT/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 带有目标范围 (
User
或Device
) 前缀。 -
{DocID}
是配置方案所需状态的唯一标识符。 每个文档都必须有一个 ID,该 ID 必须是 GUID。 - 请求可以是 Inventory 或 Complete 请求。
以下 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>