MsiViewGetErrorA 函式 (msiquery.h)
MsiViewGetError 函式會傳回 MsiViewModify 函式中發生的錯誤。
語法
MSIDBERROR MsiViewGetErrorA(
[in] MSIHANDLE hView,
[out] LPSTR szColumnNameBuffer,
[in, out] LPDWORD pcchBuf
);
參數
[in] hView
檢視的句柄。
[out] szColumnNameBuffer
接收 Null 終止數據行名稱之緩衝區的指標。 請勿嘗試藉由傳入 szColumnName的 null (value=0) 來判斷緩衝區的大小。 您可以傳入空字串來取得緩衝區的大小(例如 “” )。 然後,函式會傳回MSIDBERROR_MOREDATA,pcchBuf 包含TCHAR中所需的緩衝區大小,不包括終止的Null字元。 傳回MSIDBERROR_NOERROR時,pcchBuf 包含寫入緩衝區的 TCHAR 數目,不包括終止的 Null 字元。 如果沒有錯誤,此參數是空字串。
[in, out] pcchBuf
變數的指標,指定變數 szColumnNameBuffer所指向之緩衝區的大小。 當函式傳回MSIDBERROR_NOERROR時,此變數會包含複製到 szColumnNameBuffer 的數據大小,不包含終止的 Null 字元。 如果 szColumnNameBuffer 不夠大,函式會傳回MSIDBERROR_MOREDATA並儲存必要的大小,不包括終止 null 字元,pcchBuf所指向的變數中。
傳回值
此函式會傳回下列其中一個值。
錯誤碼 | 意義 |
---|---|
|
自變數無效。 |
|
緩衝區太小,無法接收數據。 |
|
函式失敗。 |
|
函式順利完成,沒有任何錯誤。 |
|
新的記錄會複製資料表中現有記錄的主鍵。 |
|
不允許 Null 值;或數據行即將刪除,但由另一個數據列參考。 |
|
找不到外部數據表中的對應記錄。 |
|
數據大於允許的最大值。 |
|
數據小於允許的最小值。 |
|
數據不是集合中允許的值成員。 |
|
提供無效的版本字串。 |
|
此案例無效。 大小寫必須是大寫或全部小寫。 |
|
已提供無效的 GUID。 |
|
已提供無效的通配符檔名,或是使用通配符無效。 |
|
提供無效的識別碼。 |
|
提供無效的語言標識碼。 |
|
提供無效的檔名。 |
|
提供無效的路徑。 |
|
已提供無效的條件語句。 |
|
提供無效的格式字串。 |
|
已提供無效的範本字串。 |
|
Directory 資料表的 DefaultDir 數據行中提供了無效的字串。 |
|
提供無效的登錄路徑字串。 |
|
CustomAction 數據表的 CustomSource 數據行中提供了無效的字串。 |
|
提供無效的屬性字串。 |
|
_Validation 數據表遺漏數據行的參考。 |
|
數據行 _Validation 數據表的類別數據行無效。 |
|
提供無效的封包名稱。 |
|
找不到或載入 _Validation 數據表之 Keytable 資料行中的數據表。 |
|
_Validation 數據表之 MaxValue 數據行中的值小於MinValue數據行中的值。 |
|
提供無效的快捷方式目標名稱。 |
|
字串對於數據行定義所指定的長度而言太長。 |
|
已提供無效的當地語系化屬性。 (主鍵無法當地語系化。 |
請注意,在記憶體不足的情況下,此函式可能會引發STATUS_NO_MEMORY例外狀況。
言論
當 msiViewModify
如果傳回ERROR_MORE_DATA,則為指標的參數會提供保存字串所需的緩衝區大小。 成功時,它會提供寫入字串緩衝區的字元數。 因此,當函式傳回MSIDBERROR_MOREDATA時,您可以傳遞小型緩衝區(最小一個字元),並在pcchPathBuf
傳回MSIDBERROR_NOERROR之後,就不會再發生任何驗證錯誤。 MSIDBERROR 傳回值表示 szColumnNameBuffer所識別之數據行中發生之值的驗證錯誤類型。
注意
msiquery.h 標頭會根據 UNICODE 預處理器常數的定義,將 MsiViewGetError 定義為自動選取此函式的 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 |
目標平臺 | 窗戶 |
標頭 | msiquery.h |
連結庫 | Msi.lib |
DLL | Msi.dll |