次の方法で共有


IUPnPService::InvokeAction メソッド (upnp.h)

InvokeAction メソッドは、デバイスでメソッドを呼び出します。

構文

HRESULT InvokeAction(
  [in]      BSTR    bstrActionName,
  [in]      VARIANT vInActionArgs,
  [in, out] VARIANT *pvOutActionArgs,
  [in, out] VARIANT *pvRetVal
);

パラメーター

[in] bstrActionName

呼び出すメソッドを指定します。

[in] vInActionArgs

メソッドへの入力引数の配列を指定します。 アクションに入力引数がない場合、このパラメーターには空の配列を含める必要があります。

この配列の内容はサービス固有です。

[in, out] pvOutActionArgs

入力時に、 には空の配列への参照が含まれます。 出力時に、 は出力引数の配列への参照を受け取ります。 アクションに出力引数がない場合、このパラメーターには空の配列が含まれます。

このパラメーターの内容はサービス固有です。

VariantClear を使用してこのパラメーターを解放します。

[in, out] pvRetVal

入力時に、 には空の配列への参照が含まれます。 出力時に、このアクションの戻り値を含む VARIANT への参照を受け取ります。

アクションが呼び出された後にデバイスからエラーが返され、このパラメーターが NULL に設定されていない場合、このパラメーターには、戻り時のエラーを説明する特定のテキストが含まれます。 デバイスによって返されるエラーの詳細については、 デバイス エラー コード のドキュメントを参照してください。

VariantClear を使用してこのパラメーターを解放します。

戻り値

メソッドが成功した場合、戻り値は S_OK。 それ以外の場合、このメソッドは、WinError.h で定義されている COM エラー コードの 1 つ、または次の表に示す UPnP 固有の戻り値のいずれかを返します。 これらの値の一部は、UPnP 認定デバイスからエラーが受信されたことを示しています。 詳細については、「 デバイス エラー コード」を参照してください。

リターン コード 説明
UPNP_E_ACTION_REQUEST_FAILED
デバイスに内部エラーが発生しました。要求を実行できませんでした。
UPNP_E_DEVICE_ERROR
原因不明のエラーが発生しました。
UPNP_E_DEVICE_TIMEOUT
デバイスが 30 秒のタイムアウト期間内に応答していません。
UPNP_E_ERROR_PROCESSING_RESPONSE
デバイスから、処理できない応答が送信されました。たとえば、応答が破損しています。
UPNP_E_INVALID_ACTION
このアクションは、デバイスではサポートされていません。
UPNP_E_INVALID_ARGUMENTS
vInActionArgs で渡された 1 つ以上の引数が無効です。
UPNP_E_PROTOCOL_ERROR
UPnP コントロール プロトコル レベルでエラーが発生しました。
UPNP_E_TRANSPORT_ERROR
HTTP エラーが発生しました。 実際の HTTP 状態コードを取得するには、 IUPnPService::LastTransportStatus プロパティを使用します。
メモ このエラー コードは、SOAP 応答が 100 キロバイトを超えた場合にも返されます。
 

注釈

アプリケーションがメソッド InvokeAction を呼び出すと、サービスで予期される引数と一致する必要がある引数の一覧が含まれます。 コントロール ポイントは、これらの VARIANT 引数を必要な型にマップします。 次の表は、使用されるマッピングを示しています。

データ型 MSXML によって返される型
SDT_STRING = 0 VT_BSTR
SDT_NUMBER VT_BSTR
SDT_INT VT_I4
SDT_FIXED_14_4 VT_CY
SDT_BOOLEAN VT_BOOL
SDT_DATETIME_ISO8601 VT_DATE
SDT_DATETIME_ISO8601TZ VT_DATE
SDT_DATE_ISO8601 VT_DATE
SDT_TIME_ISO8601 VT_DATE
SDT_TIME_ISO8601TZ VT_DATE
SDT_I1 VT_I1
SDT_I2 VT_I2
SDT_I4 VT_I4
SDT_UI1 VT_UI1
SDT_UI2 VT_UI2
SDT_UI4 VT_UI4
SDT_R4 VT_FLOAT
SDT_R8 VT_DOUBLE
SDT_FLOAT VT_DOUBLE
SDT_UUID VT_BSTR
SDT_BIN_BASE64 VT_ARRAY
SDT_BIN_HEX VT_ARRAY
SDT_CHAR VT_UI2 (wchar)
SDT_URI VT_BSTR
 
メモ 値を受け取るパラメーターは、メソッドの呼び出し時に NULL 値を渡さないでください。
 
メモ [out] 引数または戻り値としてデバイスによって送信される浮動小数点値は、コントロール ポイントによって受信されると変更されます。 たとえば、1 つの [出力] 浮動小数点引数を返すアクション Action1Out_floatを持つデバイスについて考えてみます。 コントロール ポイントがこのアクションを呼び出すと、デバイスは値 -234.567 を返します。ただし、制御ポイントは実際には、期待値 -234.567 ではなく、値 -234.567001342773 を受け取ります。

この問題を回避するには、整数以外の数値の UPnP データ型として float ではなく r4 を使用します。

 

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー サポートなし
対象プラットフォーム Windows
ヘッダー upnp.h
[DLL] Upnp.dll

こちらもご覧ください

IUPnPService