共用方式為


NodeCache CSP

NodeCache 設定服務提供者可用來管理用戶端快取。 此設定服務提供者僅供企業管理伺服器使用。 它提供抽象層級,將節點清單的管理與特定備份儲存區分離。 它會同步處理用戶端快取與伺服器端快取。 它也提供用來監視裝置端快取變更的 API。

NodeCache 支援哈希值的比較,而不是實際的節點值:

<Type xmlns="syncml:metinf">
application/x-nodemon-sha256
</type>

NodeCache 會哈希值,並與伺服器傳送的哈希值進行比較。 此程式支援以遞歸方式檢查父節點及其子系。

下列清單顯示 NodeCache 設定服務提供者節點:

Device/{ProviderID}

領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1511 [10.0.10586] 和更新版本
./Device/Vendor/MSFT/NodeCache/{ProviderID}

每個 DM 伺服器的群組設定。 每個設定群組都會以伺服器的提供者標識碼來辨別。 它應該是註冊程式期間透過 w7 APPLICATION 設定服務提供者 XML 提供的相同 DM 伺服器 PROVIDER-ID 值。 在 Windows Phone 8 中,僅支援一部企業管理伺服器。 也就是說,NodeCache 下應該只有一個 ProviderID 節點。

描述架構屬性:

屬性名稱 屬性值
格式 node
存取類型 新增、刪除、取得
動態節點命名 UniqueName:它應該是註冊程式期間透過 w7 APPLICATION 設定服務提供者 XML 提供的相同 DM 伺服器 PROVIDER-ID 值。

Device/{ProviderID}/CacheVersion

領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1511 [10.0.10586] 和更新版本
./Device/Vendor/MSFT/NodeCache/{ProviderID}/CacheVersion

字元字串,表示伺服器所設定的快取版本。

描述架構屬性:

屬性名稱 屬性值
格式 chr (字串)
存取類型 新增、取得、取代

Device/{ProviderID}/ChangedNodes

領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1511 [10.0.10586] 和更新版本
./Device/Vendor/MSFT/NodeCache/{ProviderID}/ChangedNodes

值不符合其預期值的節點清單,如 /NodeID/ExpectedValue 中所指定。

描述架構屬性:

屬性名稱 屬性值
格式 chr (字串)
存取類型 [取得]

Device/{ProviderID}/ChangedNodesData

領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1703 [10.0.15063] 和更新版本
./Device/Vendor/MSFT/NodeCache/{ProviderID}/ChangedNodesData

XML 包含值不符合其預期值的節點,如 /NodeID/ExpectedValue 中所指定。

描述架構屬性:

屬性名稱 屬性值
格式 xml
存取類型 [取得]

Device/{ProviderID}/Nodes

領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1511 [10.0.10586] 和更新版本
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes

快取節點的根節點。

描述架構屬性:

屬性名稱 屬性值
格式 node
存取類型 [取得]

Device/{ProviderID}/Nodes/{NodeID}

領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1511 [10.0.10586] 和更新版本
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}

每個快取節點的相關信息會儲存在伺服器所指定的 NodeID 下。 此值不得包含逗號。

描述架構屬性:

屬性名稱 屬性值
格式 node
存取類型 新增、刪除、取得
動態節點命名 ServerGeneratedUniqueIdentifier
Device/{ProviderID}/Nodes/{NodeID}/AutoSetExpectedValue
領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1703 [10.0.15063] 和更新版本
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/AutoSetExpectedValue

這會自動設定裝置上的值,以符合節點的實際值。 節點是在 NodeURI 中指定。

描述架構屬性:

屬性名稱 屬性值
格式 null
存取類型 新增、刪除、取得
Device/{ProviderID}/Nodes/{NodeID}/ExpectedValue
領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1511 [10.0.10586] 和更新版本
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/ExpectedValue

這是伺服器預期在裝置上的值。 當設定服務提供者起始會話時,它會根據節點的實際值檢查預期的值。

支援的值為字串和 x-nodemon 不存在。

描述架構屬性:

屬性名稱 屬性值
格式 chr (字串)
存取類型 新增、刪除、取得

範例

以下是將ExpectedValue設定為不存在的範例。

<Add>
   <CmdID>10</CmdID>
   <Item>
      <Target>
         <LocURI>./Device/Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0002/ExpectedValue</LocURI>
      </Target>
      <Meta>
         <Format xmlns="syncml:metinf">chr</Format>
         <Type xmlns="syncml:metinf">application/x-nodemon-nonexistent</Type>
      </Meta>
   </Item>
</Add>
Device/{ProviderID}/Nodes/{NodeID}/NodeURI
領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10 版本 1511 [10.0.10586] 和更新版本
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/NodeURI

此節點的值是完整的 OMA DM 節點 URI。 它可以在裝置管理樹狀結構中指定內部或分葉節點。

描述架構屬性:

屬性名稱 屬性值
格式 chr (字串)
存取類型 新增、刪除、取得

User/{ProviderID}

領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1703 [10.0.15063] 和更新版本
./User/Vendor/MSFT/NodeCache/{ProviderID}

每個 DM 伺服器的群組設定。 每個設定群組都會以伺服器的提供者標識碼來辨別。 它應該是註冊程式期間透過 w7 APPLICATION 設定服務提供者 XML 提供的相同 DM 伺服器 PROVIDER-ID 值。 在 Windows Phone 8 中,僅支援一部企業管理伺服器。 也就是說,NodeCache 下應該只有一個 ProviderID 節點。

描述架構屬性:

屬性名稱 屬性值
格式 node
存取類型 新增、刪除、取得
動態節點命名 UniqueName:它應該是註冊程式期間透過 w7 APPLICATION 設定服務提供者 XML 提供的相同 DM 伺服器 PROVIDER-ID 值。

User/{ProviderID}/CacheVersion

領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1703 [10.0.15063] 和更新版本
./User/Vendor/MSFT/NodeCache/{ProviderID}/CacheVersion

字元字串,表示伺服器所設定的快取版本。

描述架構屬性:

屬性名稱 屬性值
格式 chr (字串)
存取類型 新增、取得、取代

User/{ProviderID}/ChangedNodes

領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1703 [10.0.15063] 和更新版本
./User/Vendor/MSFT/NodeCache/{ProviderID}/ChangedNodes

值不符合其預期值的節點清單,如 /NodeID/ExpectedValue 中所指定。

描述架構屬性:

屬性名稱 屬性值
格式 chr (字串)
存取類型 [取得]

User/{ProviderID}/ChangedNodesData

領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1703 [10.0.15063] 和更新版本
./User/Vendor/MSFT/NodeCache/{ProviderID}/ChangedNodesData

XML 包含值不符合其預期值的節點,如 /NodeID/ExpectedValue 中所指定。

描述架構屬性:

屬性名稱 屬性值
格式 xml
存取類型 [取得]

User/{ProviderID}/Nodes

領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1703 [10.0.15063] 和更新版本
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes

快取節點的根節點。

描述架構屬性:

屬性名稱 屬性值
格式 node
存取類型 [取得]

User/{ProviderID}/Nodes/{NodeID}

領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1703 [10.0.15063] 和更新版本
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}

每個快取節點的相關信息會儲存在伺服器所指定的 NodeID 下。 此值不得包含逗號。

描述架構屬性:

屬性名稱 屬性值
格式 node
存取類型 新增、刪除、取得
動態節點命名 ServerGeneratedUniqueIdentifier
User/{ProviderID}/Nodes/{NodeID}/AutoSetExpectedValue
領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1703 [10.0.15063] 和更新版本
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/AutoSetExpectedValue

這會自動設定裝置上的值,以符合節點的實際值。 節點是在 NodeURI 中指定。

描述架構屬性:

屬性名稱 屬性值
格式 null
存取類型 新增、刪除、取得
User/{ProviderID}/Nodes/{NodeID}/ExpectedValue
領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1703 [10.0.15063] 和更新版本
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/ExpectedValue

這是伺服器預期在裝置上的值。 當設定服務提供者起始會話時,它會根據節點的實際值檢查預期的值。

支援的值為字串和 x-nodemon 不存在。

描述架構屬性:

屬性名稱 屬性值
格式 chr (字串)
存取類型 新增、刪除、取得

範例

以下是將ExpectedValue設定為不存在的範例。

<Add>
   <CmdID>10</CmdID>
   <Item>
      <Target>
         <LocURI>./User/Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0002/ExpectedValue</LocURI>
      </Target>
      <Meta>
         <Format xmlns="syncml:metinf">chr</Format>
         <Type xmlns="syncml:metinf">application/x-nodemon-nonexistent</Type>
      </Meta>
   </Item>
</Add>
User/{ProviderID}/Nodes/{NodeID}/NodeURI
領域 版本 適用的作業系統
✅ 裝置
✅ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1703 [10.0.15063] 和更新版本
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/NodeURI

此節點的值是完整的 OMA DM 節點 URI。 它可以在裝置管理樹狀結構中指定內部或分葉節點。

描述架構屬性:

屬性名稱 屬性值
格式 chr (字串)
存取類型 新增、刪除、取得

具有 NodeCache 設定服務提供者的一般 DM 工作階段

  1. 裝置會連線到 DM 伺服器。
  2. 伺服器會發出 ./Vendor/MSFT/NodeCache/ProviderID/CacheVersion LocURI 的 Get 作業來查詢 NodeCache 版本
  3. 如果裝置 CacheVersion 和伺服器端快取 (因為裝置當機或伺服器當機) 而有所不同,伺服器可以清除伺服器端快取並移至步驟 5。
  4. 伺服器會更新伺服器端快取:
    1. 傳送 ./Vendor/MSFT/NodeCache/ProviderID/ChangedNodes LocURI 的 Get 作業
    2. 回應是已變更節點標識碼的清單。 清單中的每個標識碼都會對應至 ./Vendor/MSFT/NodeCache/ProviderID/Nodes 根目錄下的節點
    3. 對於無效節點清單中的每個節點,伺服器會傳送 GET 命令來擷取節點的實際值。 例如, GET <NodeURI>,其中 NodeURI 是對應至無效快取節點的完整裝置 LocURI。
    4. 伺服器端快取中的節點會以從裝置收到的實際值進行更新。
    5. 針對每個更新的節點, REPLACE 系統會將命令傳送至裝置,以更新裝置端快取: REPLACE ./Vendor/MSFT/NodeCache/ProviderID/Nodes/NodeID/ExpectedValue => ActualValue
    6. 新的快取版本會建立並傳送至裝置:REPLACE ./Vendor/MSFT/NodeCache/ProviderID/CacheVersion => new_versionnew_version 是由伺服器儲存。
  5. 管理伺服器會從伺服器端快取擷取對應的值:
    1. 如果值已經存在於伺服器端快取中,請從伺服器端快取擷取值,而不是移至裝置。
    2. 如果值不存在於伺服器端快取中,請執行下列工作:
      1. 在伺服器端快取中建立具有唯一 NodeID 的新專案。
      2. 查詢裝置以擷取 URI 的實際值。
      3. 使用 NodeID 值在 ./Vendor/MSFT/NodeCache/ProviderID/Nodes 底下建立新的節點。
      4. 設定 ./Vendor/MSFT/NodeCache/ProviderID/Nodes/NodeID 節點的 NodeURIExpectedValue
      5. 更新 CachedNodes 版本。

OMA DM 範例

建立節點快取的設定:

<Add>
   <CmdID>2</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1</LocURI>
      </Target>
      <Meta>
         <Format xmlns="syncml:metinf">node</Format>
      </Meta>
   </Item>
</Add>
<Add>
   <CmdID>4</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0001</LocURI>
      </Target>
      <Meta>
         <Format xmlns="syncml:metinf">node</Format>
      </Meta>
   </Item>
</Add>
<Add>
   <CmdID>5</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0001/NodeURI</LocURI>
      </Target>
      <Data>./Vendor/MSFT/DeviceLock/Provider/MDMSRV1/DevicePasswordEnabled</Data>
   </Item>
</Add>
<Add>
   <CmdID>6</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0001/ExpectedValue</LocURI>
      </Target>
      <Data>0</Data>
   </Item>
</Add>
<Add>
   <CmdID>8</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0002</LocURI>
      </Target>
      <Meta>
         <Format xmlns="syncml:metinf">node</Format>
      </Meta>
   </Item>
</Add>
<Add>
   <CmdID>9</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0002/NodeURI</LocURI>
      </Target>
      <Data>
         ./Vendor/MSFT/DeviceLock/Provider/MDMSRV1/AlphanumericDevicePasswordRequired
      </Data>
   </Item>
</Add>
<Add>
   <CmdID>10</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0002/ExpectedValue</LocURI>
      </Target>
      <Data>0</Data>
   </Item>
</Add>

在 [提供者標識符] 下取得節點MDMSRV1、快取版本、已變更的節點、節點、預期值:

<Get>
   <CmdID>18</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1</LocURI>
      </Target>
   </Item>
</Get>
<Get>
   <CmdID>19</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/CacheVersion</LocURI>
      </Target>
   </Item>
</Get>
<Get>
   <CmdID>20</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/ChangedNodes</LocURI>
      </Target>
   </Item>
</Get>
<Get>
   <CmdID>21</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0001</LocURI>
      </Target>
   </Item>
</Get>
<Get>
   <CmdID>22</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0001/ExpectedValue</LocURI>
      </Target>
   </Item>
</Get>

取代快取版本、節點 URI 和預期值:

<Replace>
   <CmdID>2</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/CacheVersion</LocURI>
      </Target>
      <Data>SCCM0001@!Replace</Data>
   </Item>
</Replace>
<Replace>
   <CmdID>2</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0001/NodeURI</LocURI>
      </Target>
      <Data>./Vendor/MSFT/DeviceLock/DeviceValue/AllowSimpleDevicePassword</Data>
    </Item>
</Replace>
<Replace>
   <CmdID>2</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0001/ExpectedValue</LocURI>
      </Target>
      <Data>2</Data>
   </Item>
</Replace>

針對 AutoSetExpectedValue,以空白數據取代作業會查詢 ./DevDetail/Ext/Microsoft/DeviceName。

<Add>
    <CmdID>2001</CmdID>
    <Item>
        <Target>
            <LocURI>./Vendor/MSFT/NodeCache/MDM%20SyncML%20Server/Nodes/20</LocURI>
        </Target>
        <Meta>
            <Format xmlns="syncml:metinf">node</Format>
        </Meta>
    </Item>
</Add>
<Add>
    <CmdID>2002</CmdID>
    <Item>
        <Target>
            <LocURI>./Vendor/MSFT/NodeCache/MDM%20SyncML%20Server/Nodes/20/NodeURI</LocURI>
        </Target>
        <Data>./DevDetail/Ext/Microsoft/DeviceName</Data>
    </Item>
</Add>
<Replace>
    <CmdID>2003</CmdID>
    <Item>
        <Target>
            <LocURI>./Vendor/MSFT/NodeCache/MDM%20SyncML%20Server/Nodes/20/AutoSetExpectedValue</LocURI>
        </Target>
        <Data></Data>
    </Item>
</Replace>

上的 Get 作業會 ./Vendor/MSFT/NodeCache/MDM%20SyncML%20Server/Nodes/20/ExpectedValue 傳回呼叫 AutoSet 時的裝置名稱。

ChangedNodesData 上的 Get 作業會傳回編碼的 XML。 以下是範例:

<Nodes><Node Id="10" Uri=""></Node><Node Id="20" Uri="./DevDetail/Ext/Microsoft/DeviceName">U09NRU5FV1ZBTFVF</Node></Nodes>

它代表此範例:

<Nodes>
    <Node Id="10" Uri=""></Node>
    <Node Id="20" Uri="./DevDetail/Ext/Microsoft/DeviceName">U09NRU5FV1ZBTFVF</Node>
</Nodes>

標識元是 MDM 伺服器所新增的節點識別碼,而 Uri 是節點所追蹤的路徑。 如果未設定 Uri,一律會將節點回報為已變更,如節點標識碼 10 所示。

節點標籤的值是 Uri 傳回的實際值,這表示對於節點標識碼 20,DeviceName 不符合先前預期的值,且裝置名稱現在U09NRU5FV1ZBTFVF,而不是先前的名稱。

設定服務提供者參考