NodeCache CSP

NodeCache 構成サービス プロバイダーは、クライアント キャッシュの管理に使用されます。 この構成サービス プロバイダーは、エンタープライズ管理サーバーでのみ使用されます。 特定のバッキング ストアからノード リストの管理を切り離す抽象化レベルを提供します。 クライアント キャッシュをサーバー側キャッシュと同期します。 また、デバイス側のキャッシュの変更を監視するための API も提供します。

NodeCache では、実際のノード値ではなくハッシュ値の比較がサポートされています。

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

NodeCache は値をハッシュし、サーバーによって送信されたハッシュ値と比較します。 このプロセスでは、親ノードとその子の再帰的なチェックがサポートされています。

次の一覧は、NodeCache 構成サービス プロバイダー ノードを示しています。

Device/{ProviderID}

適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1511 [10.0.10586] 以降
./Device/Vendor/MSFT/NodeCache/{ProviderID}

DM サーバーごとのグループ設定。 設定の各グループは、サーバーのプロバイダー ID によって区別されます。 登録プロセス中に w7 APPLICATION 構成サービス プロバイダー XML を介して提供されたのと同じ DM サーバー PROVIDER-ID 値である必要があります。 Windows Phone 8 では、1 つのエンタープライズ管理サーバーのみがサポートされます。 つまり、NodeCache の下には ProviderID ノードが 1 つだけ必要です。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 node
アクセスの種類 追加、削除、取得
動的ノードの名前付け UniqueName: 登録プロセス中に w7 APPLICATION 構成サービス プロバイダー XML を介して提供されたのと同じ DM サーバー PROVIDER-ID 値である必要があります。

Device/{ProviderID}/CacheVersion

適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1511 [10.0.10586] 以降
./Device/Vendor/MSFT/NodeCache/{ProviderID}/CacheVersion

サーバーによって設定されたキャッシュ バージョンを表す文字列。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 chr (string)
アクセスの種類 追加、取得、置換

Device/{ProviderID}/ChangedNodes

適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1511 [10.0.10586] 以降
./Device/Vendor/MSFT/NodeCache/{ProviderID}/ChangedNodes

/NodeID/ExpectedValue で指定された値が予期される値と一致しないノードの一覧。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 chr (string)
アクセスの種類 [ゲームをゲット] を選びます

Device/{ProviderID}/ChangedNodesData

適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1703 [10.0.15063] 以降
./Device/Vendor/MSFT/NodeCache/{ProviderID}/ChangedNodesData

/NodeID/ExpectedValue で指定された値が予期される値と一致しないノードを含む XML。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 xml
アクセスの種類 [ゲームをゲット] を選びます

Device/{ProviderID}/Nodes

適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1511 [10.0.10586] 以降
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes

キャッシュされたノードのルート ノード。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 node
アクセスの種類 [ゲームをゲット] を選びます

Device/{ProviderID}/Nodes/{NodeID}

適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1511 [10.0.10586] 以降
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}

キャッシュされた各ノードに関する情報は、サーバーによって指定された NodeID の下に格納されます。 この値にはコンマを含めてはいけません。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 node
アクセスの種類 追加、削除、取得
動的ノードの名前付け ServerGeneratedUniqueIdentifier
Device/{ProviderID}/Nodes/{NodeID}/AutoSetExpectedValue
適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1703 [10.0.15063] 以降
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/AutoSetExpectedValue

これにより、ノードの実際の値と一致するようにデバイスの値が自動的に設定されます。 ノードは NodeURI で指定されます。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 null
アクセスの種類 追加、削除、取得
Device/{ProviderID}/Nodes/{NodeID}/ExpectedValue
適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1511 [10.0.10586] 以降
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/ExpectedValue

これは、サーバーがデバイス上にあると予想される値です。 構成サービス プロバイダーは、セッションを開始すると、想定される値をノードの実際の値と照合します。

サポートされる値は、文字列と x-nodemon-nonexistent です。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 chr (string)
アクセスの種類 追加、削除、取得

:

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
適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1511 [10.0.10586] 以降
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/NodeURI

このノードの値は、完全な OMA DM ノード URI です。 デバイス管理ツリーで内部ノードまたはリーフ ノードを指定できます。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 chr (string)
アクセスの種類 追加、削除、取得

User/{ProviderID}

適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1703 [10.0.15063] 以降
./User/Vendor/MSFT/NodeCache/{ProviderID}

DM サーバーごとのグループ設定。 設定の各グループは、サーバーのプロバイダー ID によって区別されます。 登録プロセス中に w7 APPLICATION 構成サービス プロバイダー XML を介して提供されたのと同じ DM サーバー PROVIDER-ID 値である必要があります。 Windows Phone 8 では、1 つのエンタープライズ管理サーバーのみがサポートされます。 つまり、NodeCache の下には ProviderID ノードが 1 つだけ必要です。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 node
アクセスの種類 追加、削除、取得
動的ノードの名前付け UniqueName: 登録プロセス中に w7 APPLICATION 構成サービス プロバイダー XML を介して提供されたのと同じ DM サーバー PROVIDER-ID 値である必要があります。

User/{ProviderID}/CacheVersion

適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1703 [10.0.15063] 以降
./User/Vendor/MSFT/NodeCache/{ProviderID}/CacheVersion

サーバーによって設定されたキャッシュ バージョンを表す文字列。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 chr (string)
アクセスの種類 追加、取得、置換

User/{ProviderID}/ChangedNodes

適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1703 [10.0.15063] 以降
./User/Vendor/MSFT/NodeCache/{ProviderID}/ChangedNodes

/NodeID/ExpectedValue で指定された値が予期される値と一致しないノードの一覧。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 chr (string)
アクセスの種類 [ゲームをゲット] を選びます

User/{ProviderID}/ChangedNodesData

適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1703 [10.0.15063] 以降
./User/Vendor/MSFT/NodeCache/{ProviderID}/ChangedNodesData

/NodeID/ExpectedValue で指定された値が予期される値と一致しないノードを含む XML。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 xml
アクセスの種類 [ゲームをゲット] を選びます

User/{ProviderID}/Nodes

適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1703 [10.0.15063] 以降
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes

キャッシュされたノードのルート ノード。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 node
アクセスの種類 [ゲームをゲット] を選びます

User/{ProviderID}/Nodes/{NodeID}

適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1703 [10.0.15063] 以降
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}

キャッシュされた各ノードに関する情報は、サーバーによって指定された NodeID の下に格納されます。 この値にはコンマを含めてはいけません。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 node
アクセスの種類 追加、削除、取得
動的ノードの名前付け ServerGeneratedUniqueIdentifier
User/{ProviderID}/Nodes/{NodeID}/AutoSetExpectedValue
適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1703 [10.0.15063] 以降
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/AutoSetExpectedValue

これにより、ノードの実際の値と一致するようにデバイスの値が自動的に設定されます。 ノードは NodeURI で指定されます。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 null
アクセスの種類 追加、削除、取得
User/{ProviderID}/Nodes/{NodeID}/ExpectedValue
適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1703 [10.0.15063] 以降
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/ExpectedValue

これは、サーバーがデバイス上にあると予想される値です。 構成サービス プロバイダーは、セッションを開始すると、想定される値をノードの実際の値と照合します。

サポートされる値は、文字列と x-nodemon-nonexistent です。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 chr (string)
アクセスの種類 追加、削除、取得

:

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
適用範囲 エディション 対象となる OS
✅ デバイス
✅ ユーザー
✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC
✅Windows 10バージョン 1703 [10.0.15063] 以降
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/NodeURI

このノードの値は、完全な OMA DM ノード URI です。 デバイス管理ツリーで内部ノードまたはリーフ ノードを指定できます。

説明フレームワークのプロパティ:

プロパティ名 プロパティ値
形式 chr (string)
アクセスの種類 追加、削除、取得

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. 応答は、変更されたノード ID の一覧です。 一覧の各 ID は、./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_version 値は new_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>

[プロバイダー ID 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>

ID は MDM サーバーによって追加されたノード ID で、Uri はノードが追跡するパスです。 Uri が設定されていない場合、ノード ID 10 のように、ノードは常に変更済みとして報告されます。

ノード タグ内の値は Uri によって返される実際の値です。つまり、ノード ID 20 の場合、DeviceName は以前に想定されていたものと一致せず、デバイス名は以前の値ではなくU09NRU5FV1ZBTFVFになりました。

構成サービス プロバイダーのリファレンス