msiViewGetErrorA 函式 (msiquery.h)
MsiViewGetError函式會傳回MsiViewModify函式中發生的錯誤。
語法
MSIDBERROR MsiViewGetErrorA(
[in] MSIHANDLE hView,
[out] LPSTR szColumnNameBuffer,
[in, out] LPDWORD pcchBuf
);
參數
[in] hView
檢視的控制碼。
[out] szColumnNameBuffer
接收 Null 終止資料行名稱之緩衝區的指標。 請勿嘗試透過傳遞 szColumnName的 null (值=0) 來判斷緩衝區的大小。 您可以藉由傳入空字串來取得緩衝區的大小 (,例如 「」) 。 然後函式會傳回MSIDBERROR_MOREDATA, 而 pcchBuf 包含 TCHAR 中所需的緩衝區大小,不包括終止的 Null 字元。 傳回MSIDBERROR_NOERROR時, pcchBuf 包含寫入緩衝區的 TCHA 數目,不包括終止的 Null 字元。 如果沒有錯誤,此參數是空字串。
[in, out] pcchBuf
指定變數 szColumnNameBuffer所指向之緩衝區大小之變數的指標。 當函式傳回MSIDBERROR_NOERROR時,此變數會包含複製到 szColumnNameBuffer的資料大小,不包括終止 Null 字元。 如果 szColumnNameBuffer 不夠大,則函式會傳回MSIDBERROR_MOREDATA並儲存必要的大小,不包括 pcchBuf所指向的變數中終止 Null 字元。
傳回值
此函式會傳回下列其中一個值。
錯誤碼 | 意義 |
---|---|
|
引數無效。 |
|
緩衝區太小而無法接收資料。 |
|
函式失敗。 |
|
函式順利完成,沒有任何錯誤。 |
|
新記錄會複製資料表中現有記錄的主鍵。 |
|
不允許 Null 值;或資料行即將刪除,但會由另一個資料列參考。 |
|
找不到外部資料表中的對應記錄。 |
|
資料大於允許的最大值。 |
|
資料小於允許的最小值。 |
|
資料不是集合中允許的值成員。 |
|
提供不正確版本字串。 |
|
案例無效。 大小寫必須是大寫或全部小寫。 |
|
提供不正確 GUID。 |
|
提供不正確萬用字元檔案名,或使用萬用字元無效。 |
|
已提供不正確識別碼。 |
|
提供不正確語言識別項。 |
|
提供不正確檔案名。 |
|
提供不正確路徑。 |
|
已提供不正確條件陳述式。 |
|
提供不正確格式字串。 |
|
提供的範本字串無效。 |
|
在 Directory 資料表的 DefaultDir 資料行中提供無效字串。 |
|
已提供不正確登錄路徑字串。 |
|
CustomAction 資料表的 CustomSource資料行中提供了不正確字串。 |
|
提供不正確屬性字串。 |
|
_Validation資料表遺漏資料行的參考。 |
|
資料行之 _Validation 資料表的類別資料行無效。 |
|
提供不正確封包名稱。 |
|
找不到或載入 _Validation 資料表之 Keytable 資料行中的資料表。 |
|
_Validation資料表的 MaxValue 資料行中的值小於 MinValue 資料行中的值。 |
|
提供不正確快捷方式目標名稱。 |
|
字串對於資料行定義所指定的長度太長。 |
|
已提供不正確當地語系化屬性。 無法當地語系化 (主鍵。) |
請注意,在記憶體不足的情況下,此函式可能會引發STATUS_NO_MEMORY例外狀況。
備註
只有在MsiViewModify傳回ERROR_INVALID_DATA時,才應該呼叫MsiViewGetError函式,指出資料無效。 錯誤只會記錄MSIMODIFY_VALIDATE、MSIMODIFY_VALIDATE_NEW和MSIMODIFY_VALIDATEFIELD。
如果傳回ERROR_MORE_DATA,則為指標的參數會提供保存字串所需的緩衝區大小。 成功時,它會提供寫入字串緩衝區的字元數。 因此,您可以在函式傳回MSIDBERROR_MOREDATA時,傳遞小型緩衝區 (一個字元下限) 並檢查 pcchPathBuf 的值,以取得所需的緩衝區大小。 請勿嘗試以szColumnNameBuffer的形式傳入 null 或pcchBuf所參考的 DWORD中 0 的緩衝區大小來判斷緩衝區大小。
傳回MSIDBERROR_NOERROR之後,就不會再發生驗證錯誤。 MSIDBERROR 傳回值會指出 szColumnNameBuffer所識別資料行中所發生之值的驗證錯誤類型。
注意
msiquery.h 標頭會將 MsiViewGetError 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
需求
最低支援的用戶端 | Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 Windows Server 2003 或 Windows XP 上的 Windows Installer |
目標平台 | Windows |
標頭 | msiquery.h |
程式庫 | Msi.lib |
Dll | Msi.dll |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應