IoT 中樞的裝置更新錯誤碼
本文件會提供各種裝置更新元件的錯誤碼表格。
有兩個主要用戶端元件可能會擲回錯誤碼:裝置更新代理程式和傳遞最佳化代理程式。 錯誤碼也來自裝置更新內容服務。
裝置更新代理程式
ResultCode 和 ExtendedResultCode
IoT 中樞 Core PnP 介面的裝置更新報告 ResultCode
和 ExtendedResultCode
,其可用來診斷失敗。 針對裝置更新核心 PnP 介面,如需詳細資訊,請參閱裝置更新和隨插即用。 如需裝置更新代理程式 ResultCode 和 ExtendedResultCodes 預設意義的詳細資訊,請參閱裝置更新 GitHub 存放庫。
ResultCode
是一般狀態碼,而 ExtendedResultCode
是帶有編碼錯誤資訊的整數。
ExtendedResultCode
在 PnP 介面中為顯示帶正負號的整數。 若要解碼 ExtendedResultCode
,請將帶正負號的整數轉換為不帶正負號的十六進位。 只會使用到 ExtendedResultCode
的前 4 個位元組,且其格式為 F
FFFFFFF
,其中第一個半位元組是 設備碼,其餘的位元則是錯誤碼。
設備代碼
設備代碼 | 描述 |
---|---|
D | 從 DO SDK 引發的錯誤 |
E | 錯誤碼是 errno |
例如:
ExtendedResultCode
是 -536870781
代表 -536870781
的不帶正負號十六進位為 FFFFFFFF E0000083
。
忽略 | 設備代碼 | 錯誤碼 |
---|---|---|
FFFFFFFF | E | 0000083 |
十六進位中的 0x83
在十進位中為 131
,其是 ENOLCK
的 errno 值。
傳遞最佳化代理程式
下表針對裝置更新用戶端的傳遞最佳化 (DO) 元件,列出與之相關的錯誤碼。 DO 元件會負責將更新內容下載到 IoT 裝置。
您可以檢查擲回的例外狀況來取得 DO 錯誤碼,擲回例外狀況是為了回應 API 呼叫。 所有 DO 錯誤碼都可以經由 0x80D0 前置詞來識別。
錯誤碼 | 字串錯誤 | 類型 | 描述 |
---|---|---|---|
0x80D01001L | DO_E_NO_SERVICE | n/a | 傳遞最佳化無法提供服務 |
0x80D02002L | DO_E_DOWNLOAD_NO_PROGRESS | 下載作業 | 檔案下載在定義的期間內沒有進度 |
0x80D02011L | DO_E_UNKNOWN_PROPERTY_ID | 下載作業 | 以未知屬性識別碼呼叫的 SetProperty () 或 GetProperty () |
0x80D02012L | DO_E_READ_ONLY_PROPERTY | 下載作業 | 無法在唯讀屬性上呼叫 SetProperty () |
0x80D02013L | DO_E_INVALID_STATE | 下載作業 | 要求的動作在目前作業狀態下不受允許。 該作業可能已取消或完成傳輸。 其目前處於唯讀狀態。 |
0x80D02018L | DO_E_FILE_DOWNLOADSINK_UNSPECIFIED | 下載作業 | 無法開始下載,因為未指定本機檔案或資料流介面的下載接收器 |
0x80D02200L | DO_E_DOWNLOAD_NO_URI | IDODownload 介面 | 下載已開始,但沒有提供 URI |
0x80D03805L | DO_E_BLOCKED_BY_NO_NETWORK | 暫時狀況 | 下載因為網路連線中斷而暫停 |
0 00 00000 Total 4 bytes (32 bits)
- -- -----
| | |
| | |
| | +--------- Error code (20 bits)
| |
| +------------- Component/Area code (8 bits)
|
+--------------- Facility code (4 bits)
如需關於剖析程式碼的詳細資訊,請參閱裝置更新代理程式結果碼和擴充結果碼或實作自訂內容處理常式。
裝置更新內容服務
下表針對裝置更新服務的內容服務元件,列出相關的錯誤碼。 內容服務元件會負責匯入更新內容。 針對匯入 Proxy 更新,您還可以查看更多疑難排解資訊。
錯誤碼 | 字串錯誤 | 下一步 |
---|---|---|
UpdateAlreadyExists | 具有相同身分識別的更新已經存在。 | 確認您要匯入的更新尚未匯入此 IoT 中樞裝置更新執行個體中。 |
DuplicateContentImport | 同時匯入多次相同的內容。 | 確認您要匯入的更新尚未匯入此 IoT 中樞裝置更新執行個體中。 |
CannotProcessImportManifest | 處理匯入資訊清單時發生錯誤。 | 如需適當的匯入資訊清單格式,請參閱匯入概念和匯入更新文件。 |
CannotDownload | 無法下載匯入資訊清單。 | 檢查以確認匯入資訊清單檔案的 URL 仍有效。 |
CannotParse | 無法剖析匯入資訊清單。 | 檢查您的匯入資訊清單,以便針對匯入更新文件中所定義的結構描述,了解其精確度。 |
UnsupportedVersion | 不支援匯入資訊清單結構描述版本。 | 請確定您的匯入資訊清單使用的是匯入更新文件中定義的最新結構描述。 |
因為超過限制,所以匯入更新時發生錯誤。 | 無法匯入其他更新提供者。 | 您已觸達 IoT 中樞裝置更新執行個體中允許的不同提供者數目限制。 從執行個體中刪除一些更新,然後再試一次。 |
因為超過限制,所以匯入更新時發生錯誤。 | 無法為指定的提供者匯入其他更新名稱。 | 您已觸達 IoT 中樞裝置更新執行個體中在一個提供者底下允許的不同名稱數目限制。 從執行個體中刪除一些更新,然後再試一次。 |
因為超過限制,所以匯入更新時發生錯誤。 | 無法為指定的提供者和名稱匯入其他更新版本。 | 您已觸達 IoT 中樞裝置更新執行個體中在一個提供者和名稱底下允許的不同版本數目限制。 從您的執行個體中刪除具有該名稱的一些更新,然後再試一次。 |
因為超過限制,所以匯入更新時發生錯誤。 | 無法匯入具有指定相容性的其他更新提供者。 or 無法匯入具有指定相容性的其他更新名稱。 or 無法匯入具有指定相容性的其他更新版本。 |
在匯入資訊清單中定義相容性屬性時,請記住,IoT 中樞裝置更新會針對一組指定的相容性屬性支援單一的提供者和名稱組合。 如果您嘗試使用相同的相容性屬性搭配多個提供者/名稱組合,那麼您便會看到這些錯誤。 若要解決此問題,請確定指定裝置 (如相容性屬性所定義) 的所有更新都使用相同的提供者和名稱。 |
CannotProcessUpdateFile | 處理來源檔案時發生錯誤。 | |
ContentFileCannotDownload | 無法下載來源檔案。 | 請檢查以確定更新檔案的 URL 仍然有效。 |
SourceFileMalwareDetected | 在正在匯入的檔案中偵測到已知的惡意程式碼簽章。 | IoT 中樞裝置更新會使用數種不同的機制掃描已匯入的內容是否含有惡意程式碼。 如果識別出已知的惡意程式碼簽章,匯入便會失敗,並傳回唯一的錯誤訊息。 該錯誤訊息會包含惡意程式碼簽章的描述,並針對偵測到簽章的每個檔案,在訊息中包含其檔案雜湊。 您可以使用這些檔案雜湊來尋找受標示的確切檔案,並使用惡意程式碼簽章的描述來檢查該檔案是否含有惡意程式碼。 一旦您從任何要匯入的檔案中移除了惡意程式碼,您就可以再次開始匯入程序。 |
SourceFilePendingMalwareAnalysis | 在正在匯入的檔案中偵測到簽章,可能表示惡意程式碼存在。 | IoT 中樞裝置更新會使用數種不同的機制掃描已匯入的內容是否含有惡意程式碼。 如果掃描到的簽章具有惡意程式碼的特性,那麼即使其與已知的惡意程式碼不完全相符,匯入也會失敗。 發生這種情況時,系統會傳回唯一的錯誤訊息。 該錯誤訊息會包含可疑惡意程式碼簽章的描述,並針對偵測到簽章的每個檔案,在訊息中包含其檔案雜湊。 您可以使用這些檔案雜湊來尋找受標示的確切檔案,並使用惡意程式碼簽章的描述來檢查該檔案是否含有惡意程式碼。 一旦您從任何要匯入的檔案中移除了惡意程式碼,您就可以再次開始匯入程序。 如果您確定您的檔案不含有惡意程式碼,且繼續看到此錯誤,請使用連絡Microsoft 支援服務程序。 |