デバイス エラー コード
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 ファイルで定義されています。