デバイス エラー コード

InvokeAction メソッドと QueryStateVariable メソッドは、デバイス エラー (つまり、UPnP 認定デバイスから受信したエラー) を示す HRESULT 値を返します。 デバイスからエラーが発生した場合、メソッド (InvokeAction または QueryStateVariable) は、このトピックで説明するように、デバイスのエラー コードに基づく HRESULT 値を返します。 HRESULT 値を生成するための変換がデバイス エラー コードに適用されるため、HRESULT 値から直接デバイス エラー コードを読み取ることはできません。

デバイス エラー コードから HRESULT への変換

標準と非標準の両方のデバイス エラー コードがあります。 標準コードは、すべての UPnP 認定デバイスで同じ意味を持ち、600 未満の値を持ちます。 非標準コードはベンダー固有であり、600 ~ 899 の範囲の値を持ちます。

デバイス のエラー コードが標準かどうかによって、 HRESULT 値の生成方法が決まります。

  • 標準のデバイス エラー コードは、 HRESULT 値にマップされます。
  • 標準以外のデバイス エラー コードは、数式を適用することによって HRESULT 値に埋め込まれます。

これらの手順の両方を逆にして、特定の HRESULT 値からデバイス エラー コードを確認できます。

HRESULT 値からデバイス エラー コードを派生させる

HRESULT 値がUPNP_E_ACTION_SPECIFIC_BASE (0x80040300) 以上で、UPNP_E_ACTION_SPECIFIC_MAX以下 (0x8004042B) の場合、デバイス エラー コードは非標準です。次のセクションの数式を使用してエラー コードを確認します。 それ以外の場合、デバイス エラー コードは標準です。「標準デバイス エラー コードのマッピング」セクションの表を使用します。このセクションでは、 HRESULT 値からデバイス エラー コードへのマッピングが提供されます。

IUPnPService::InvokeAction の呼び出し後のエラーのテキスト説明については、pvarRetVal パラメーターを空の配列に設定します。 戻り時に、このパラメーターにはエラーの説明が含まれます (発生した場合)。

非標準デバイス エラー コードの数式

HRESULT≤UPNP_E_ACTION_SPECIFIC_MAX UPNP_E_ACTION_SPECIFIC_BASE≤場合は、次の数式を使用します。

デバイス エラー コード = (HRESULT - UPNP_E_ACTION_SPECIFIC_BASE) + FAULT_ACTION_SPECIFIC_BASE

実際の数値に置き換える数式は、デバイス エラー コード = (HRESULT - 0x80040300) + 0x0258

標準デバイス エラー コードのマッピング

HRESULT<がUPNP_E_ACTION_SPECIFIC_BASE場合は、次のマッピングを使用します。

HRESULT 値 デバイス エラー コード 実際の値
UPNP_E_INVALID_ACTION FAULT_INVALID_ACTION 401
UPNP_E_INVALID_ARGUMENTS FAULT_INVALID_ARG 402
UPNP_E_OUT_OF_SYNC FAULT_INVALID_SEQUENCE_NUMBER 403
UPNP_E_INVALID_VARIABLE FAULT_INVALID_VARIABLE 404
UPNP_E_ACTION_REQUEST_FAILED FAULT_DEVICE_INTERNAL_ERROR 501

 

詳細情報

デバイス エラー コードは、"UPnP デバイス アーキテクチャ バージョン 1.0" で指定されています。 このトピックで説明する定数は、Upnp.h ファイルと Upnp.idl ファイルで定義されています。