デバイスの制御
UPnP ベースのデバイスは、公開するサービスによって制御されます。 UPnP サービスは、UPnP アーキテクチャで最小の制御可能エンティティです。 デバイスは、実行するプライマリ関数ごとに 1 つのサービスを公開します。 複雑なデバイスは、通常、いくつかの単純なサービスとその他のデバイスで構成されます。
サービスは、一連の状態変数と、それらの状態変数に対して動作するアプリケーションが呼び出すことができる一連のアクションで構成されます。 UPnP テクノロジを使用したコントロール ポイント API では、サービスは IUPnPService インターフェイスを公開するサービス オブジェクトによって表されます。
サービスの種類は、特定のサービスでサポートされる状態変数とアクションを定義します。 たとえば、クロック サービスのサービスの種類は 、GetTime アクションと SetTime アクションを Time 状態変数と共に定義します。
サービス ID は、1 つのデバイス内で複数の一般的なサービスの種類を区別します。 たとえば、アラーム クロックには 2 つのクロック サービスがあり、1 つは通常のクロック用、もう 1 つはアラーム用です。 同じサービスの種類を持つ 2 つのサービスを区別する方法が必要です。 サービス ID は、サービスの種類のインスタンスを識別する一意の方法を提供します。 次に、サービスの種類が一意の識別子ではないので、このサービス ID は IUPnPServices コレクションから正しいサービスにアクセスするために使用されます。 IUPnPService インターフェイスを使用すると、アプリケーションでコールバック関数をサービス オブジェクトに登録することもできます。 サービスの状態変数の値が変更されると、サービス オブジェクトは登録済みのコールバックを呼び出して、変更をアプリケーションに通知します。 また、UPnP フレームワークは、このコールバックを呼び出して、サービス インスタンスが使用できなくなったときにアプリケーションに通知します。 サービスは、一時的なネットワーク障害など、さまざまな理由で利用できなくなる可能性があります。
詳細については、次のトピックを参照してください。