共用方式為


裝置錯誤碼

InvokeActionQueryStateVariable方法會傳回HRESULT值,指出裝置錯誤 (也就是說,從 UPnP 認證的裝置收到錯誤) 。 如果從裝置收到錯誤,則方法 (InvokeActionQueryStateVariable) 會傳回以裝置錯誤碼為基礎的 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 參數設定為空陣列。 傳回時,如果發生錯誤,此參數將會包含錯誤的文字描述。

非標準裝置錯誤碼的公式

如果 UPNP_E_ACTION_SPECIFIC_BASE≤HRESULTUPNP_E_ACTION_SPECIFIC_MAX,請使用下列公式。

裝置錯誤碼 = (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 檔案中。