TCP/IP のインデックス付きプロパティとデバイス インデックス
インデックス付きプロパティを使用すると、スキーマプロパティ名に数値インデックスを追加できるため、複数の関連プロパティが同じ名前を共有できるようになります。ただし、各プロパティには、個々のプロパティを識別する数値インデックスが付けられます。 インデックス値は正の整数である必要がありますが、そのサイズに上限はありません。 スキーマ クエリは、特定の要素に関連付ける必要があるインデックス値を決定します。 このメカニズムを使用すると、MIB テーブル内のデータにアクセスできます。
IndexedProperty コンストラクトは、インデックス付きプロパティを定義します。 このコンストラクトには、次の制限が適用されます。
IndexedProperty コンストラクトを Property コンストラクトの親にすることはできません。 NonIndexedProperty コンストラクトは、IndexedProperty コンストラクトの下にインデックスのないプロパティを定義するコンストラクトです。
IndexedProperty コンストラクトも NonIndexedProperty コンストラクトも、Installed コンストラクトの親にすることはできません。
クエリには、別のインデックス (デバイス インデックス) を含めることもできます。 SNMP をサポートするネットワーク デバイスは、プリンターを含むさまざまなサブデバイスのホストにすることができます。 ネットワーク プリンターの MIB テーブルには、デバイスの種類 (デバイス インデックス) に従ってインデックスが作成されたエントリがあります。 クエリが MIB テーブルからデータを取得するには、クエリに正しいデバイス インデックスを指定する必要があります。 標準のTCP/IPポートモニタでは、ポート設定 UI でデバイス インデックスを設定することができます。 deviceIndex が TRUE に設定されている bidi 拡張機能 (Value と Installed コンストラクトを参照) では、デバイスインデックスが元の OID に連結された OID が生成されます。 インデックス付きプロパティのインデックスは、デバイス インデックスの後の OID に連結されます (使用する場合)。
コード例
次のコード例では、 Display プロパティを Printer プロパティに追加することで、TCP/IP bidi 通信スキーマを拡張しています。 さらに、Display プロパティにはインデックス付きプロパティ Row があり、deviceIndex が TRUE に設定されています。 ここで示すスキーマは、プリンターの表示の特定の行からテキストを取得するクエリを生成します。
<Property name="Printer">
<Property name="Display">
<IndexedProperty name="Row">
<Value name="Text" type="BIDI_TEXT"
oid="1.3.6.1.2.1.43.16.5.1.2" deviceIndex="true"/>
</IndexedProperty>
</Property>
</Property>
先の例では、次のようなクエリーになる:
\Printer.Display.Row1:Text
この例で生成されるOIDは、先頭は Value プロパティの oid 属性と同じですが、2 つのインデックスが追加されています。 この例の追加されたインデックスは、deviceIndex 属性が TRUE に設定され、Row がインデックス付きプロパティであることに起因します。 ポート構成 UI がデバイス インデックスを 111 に定義し、プリンターのディスプレイの行 1 のテキストが対象であると仮定すると、生成される OID は 1.3.6.1.2.1.43.16.5.1.2.111.1 になります。 この OID は、デバイス インデックス (111) とプロパティ インデックス (1) の末尾を除き、元の OID と同じです。 deviceIndex が FALSE に設定されているか省略されていた場合、結果の OID は 1.3.6.1.2.1.43.16.5.1.2.1 になります。 表示の行 n からテキストを表示するには、n の プロパティ インデックスを使用します。