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 錯誤碼,或下表所示的其中一個 UPnP 特定傳回值。 其中一些值表示從UPnP認證的裝置收到錯誤。 如需詳細資訊,請參閱 裝置錯誤碼。
傳回碼 | Description |
---|---|
|
裝置發生內部錯誤;無法執行要求。 |
|
發生未知的錯誤。 |
|
裝置未在 30 秒逾時期間內回應。 |
|
裝置已傳送無法處理的回應;例如,回應已損毀。 |
|
裝置不支援此動作。 |
|
在 vInActionArgs 中傳遞的一或多個自變數無效。 |
|
UPnP 控制通訊協定層級發生錯誤。 |
|
發生 HTTP 錯誤。 使用 IUPnPService::LastTransportStatus 屬性來取得實際的 HTTP 狀態代碼。
注意 當 SOAP 回應超過 100 KB 時,也會傳回此錯誤碼。
|
備註
當應用程式叫用 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] 自變數的浮點值或傳回值將會變更。 例如,假設有動作的裝置Action1Out_float傳回單一 [out] 浮點自變數。 當控制點叫用此動作時,裝置會傳回值 -234.567;不過,控制點實際上會收到值 -234.567001342773,而不是預期的值 -234.567。
若要解決此問題,請使用 r4 而非 float 作為非整數數值的 UPnP 數據類型。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | 都不支援 |
目標平台 | Windows |
標頭 | upnp.h |
Dll | Upnp.dll |