OMA DM 预配文件的结构

OMA DM 命令在消息中的服务器和客户端设备之间传输。 消息可以包含一个或多个命令。 有关支持的命令列表,请参阅 OMA DM 协议支持中的表。

DM 消息是 XML 文档。 文档的结构和内容在 OMA 网站提供的 OMA DM 表示协议 (OMA-SyncML-DevInfo-DTD-V1_1_2-20030505-D.dtd) 中定义。

每条消息由 SyncHdr 元素指定的标头和由 SyncBody 元素指定的消息正文组成。

下表显示了支持的 OMA DM 版本。

版本 格式
OMA DM 版本 1.1.2 <SyncML xmlns='SYNCML:SYNCML1.1'></SyncML>
OMA DM 版本 1.2 <SyncML xmlns='SYNCML:SYNCML1.2'></SyncML>

文件格式

以下示例显示服务器使用 OMA DM 版本 1.2.1 发送的 XML 文档的常规结构,仅用于演示目的。 在客户端和服务器之间交换的初始 XML 包可能包含更多 XML 标记。 有关这些包的详细说明和示例,请参阅 OMA 设备管理 协议 1.2.1 规范。

XML
<SyncML xmlns='SYNCML:SYNCML1.2'>
   <SyncHdr>
      <VerDTD>1.2</VerDTD>
      <VerProto>DM/1.2</VerProto>
      <SessionID>1</SessionID>
      <MsgID>1</MsgID>
      <Target>
         <LocURI>{unique device ID}</LocURI>
      </Target>
      <Source>
         <LocURI>https://www.contoso.com/mgmt-server</LocURI>
      </Source>
   </SyncHdr>
   <SyncBody>
      <!-- query a device OS system version -->
      <Get>
         <CmdID>2</CmdID>
         <Item>
            <Target>
               <LocURI>./DevDetail/SwV</LocURI>
            </Target>
         </Item>
      </Get>
      <!-- Update device policy -->

      <Final />
   </SyncBody>
</SyncML>

SyncHdr 元素

SyncHdr 包括以下信息:

  • 文档类型定义 (DTD) 和协议版本号

  • 会话和消息标识符。 同一 DM 会话中的每个消息必须具有不同的 MsgID。

  • 消息源和目标统一资源标识符 (URI)

  • 用于身份验证的凭据

客户端设备使用此信息来正确管理 DM 会话。

代码示例

以下示例显示了 DM 消息的标头组件。 在这种情况下,OMA DM 版本 1.2 仅用作示例。

备注

<LocURI>设备生成的 DM 包的 SyncHdr 中 元素的节点值<Source>应与 ./DevInfo/DevID 的值相同。 有关 DevID 的详细信息,请参阅 DevInfo 配置服务提供程序

XML
<SyncHdr>
   <VerDTD>1.2</VerDTD>
   <VerProto>DM/1.2</VerProto>
   <SessionID>1</SessionID>
   <MsgID>1</MsgID>
   <Target>
      <LocURI>{unique device ID}</LocURI>
   </Target>
   <Source>
      <LocURI>https://www.contoso.com/mgmt-server</LocURI>
   </Source>
</SyncHdr>

SyncBody 元素

SyncBody 包含一个或多个 DM 命令。 SyncBody 可以包含多个 DM 命令;每个命令必须具有不同的 CmdID 值。

代码示例

以下示例显示了 DM 消息的正文组件。 在此示例中,SyncBody 仅包含一个命令 Get。 此命令由 <Final /> 紧接在 Get 命令的终止标记之后出现的标记指示。

XML
<SyncBody>
   <!-- query device OS software version -->
   <Get>
      <CmdID>2</CmdID>
      <Item>
         <Target>
            <LocURI>./DevDetail/SwV</LocURI>
         </Target>
      </Item>
   </Get>
   <Final />
</SyncBody>

使用 SyncML for OMA DM 预配时,SyncBody 中的 LocURI 只能将“.”作为第一个段中的有效段名称。 但是,“.”不是其他段的有效段名称。 例如,以下 LocURI 无效,因为第七段的段名称是“.”。

XML
<LocURI>./Vendor/MSFT/Registry/HKLM/Security/./Test</LocURI>

更新设备设置示例

Replace 命令用于更新设备设置。

以下示例演示如何使用 Replace 命令更新设备设置。

XML
<SyncHdr>
   <VerDTD>1.2</VerDTD>
   <VerProto>DM/1.2</VerProto>
   <SessionID>1</SessionID>
   <MsgID>1</MsgID>
   <Target>
      <LocURI>{unique device ID}</LocURI>
   </Target>
   <Source>
      <LocURI>https://www.contoso.com/mgmt-server</LocURI>
   </Source>
</SyncHdr>
<SyncBody>
   <!-- update device setting -->
   <Replace>
      <CmdID>2</CmdID>
      <Item>
         <Target>
            <LocURI>./Vendor/MSFT/PolicyManager/My/DeviceLock/MinDevicePasswordLength</LocURI>
         </Target>
         <Meta>
            <Type xmlns="syncml:metinf">text/plain</Type>
            <Format xmlns="syncml:metinf">int</Format>
         </Meta>
         <Data>6</Data>
      </Item>
   </Replace>
   <Final />
</SyncBody>