Bagikan melalui


Fungsi MsiViewGetErrorA (msiquery.h)

Fungsi MsiViewGetError mengembalikan kesalahan yang terjadi dalam fungsi MsiViewModify .

Sintaks

MSIDBERROR MsiViewGetErrorA(
  [in]      MSIHANDLE hView,
  [out]     LPSTR     szColumnNameBuffer,
  [in, out] LPDWORD   pcchBuf
);

Parameter

[in] hView

Tangani ke tampilan.

[out] szColumnNameBuffer

Penunjuk ke buffer yang menerima nama kolom yang dihentikan null. Jangan mencoba menentukan ukuran buffer dengan meneruskan null (value=0) untuk szColumnName. Anda bisa mendapatkan ukuran buffer dengan meneruskan string kosong (misalnya ""). Fungsi kemudian mengembalikan MSIDBERROR_MOREDATA dan pcchBuf berisi ukuran buffer yang diperlukan dalam TCHAR, tidak termasuk karakter null yang mengakhiri. Pada pengembalian MSIDBERROR_NOERROR, pcchBuf berisi jumlah TCHAR yang ditulis ke buffer, tidak termasuk karakter null yang mengakhiri. Parameter ini adalah string kosong jika tidak ada kesalahan.

[in, out] pcchBuf

Penunjuk ke variabel yang menentukan ukuran, dalam TCHAR, dari buffer yang diacu oleh variabel szColumnNameBuffer. Ketika fungsi mengembalikan MSIDBERROR_NOERROR, variabel ini berisi ukuran data yang disalin ke szColumnNameBuffer, tidak termasuk karakter null yang mengakhiri. Jika szColumnNameBuffer tidak cukup besar, fungsi mengembalikan MSIDBERROR_MOREDATA dan menyimpan ukuran yang diperlukan, tidak termasuk karakter null yang mengakhiri, dalam variabel yang ditunjukkan oleh pcchBuf.

Menampilkan nilai

Fungsi ini mengembalikan salah satu nilai berikut.

Kode kesalahan Makna
MSIDBERROR_INVALIDARG
Argumen tidak valid.
MSIDBERROR_MOREDATA
Buffer terlalu kecil untuk menerima data.
MSIDBERROR_FUNCTIONERROR
Fungsi gagal.
MSIDBERROR_NOERROR
Fungsi berhasil diselesaikan tanpa kesalahan.
MSIDBERROR_DUPLICATEKEY
Rekaman baru menduplikasi kunci primer dari rekaman yang sudah ada dalam tabel.
MSIDBERROR_REQUIRED
Tidak ada nilai kosong yang diizinkan; atau kolom akan dihapus, tetapi dirujuk oleh baris lain.
MSIDBERROR_BADLINK
Rekaman terkait dalam tabel asing tidak ditemukan.
MSIDBERROR_OVERFLOW
Data lebih besar dari nilai maksimum yang diizinkan.
MSIDBERROR_UNDERFLOW
Data kurang dari nilai minimum yang diizinkan.
MSIDBERROR_NOTINSET
Data bukan anggota nilai yang diizinkan dalam set.
MSIDBERROR_BADVERSION
String versi yang tidak valid disediakan.
MSIDBERROR_BADCASE
Kasus ini tidak valid. Huruf besar semua harus huruf besar atau huruf kecil semua.
MSIDBERROR_BADGUID
GUID yang tidak valid disediakan.
MSIDBERROR_BADWILDCARD
Nama file kartubebas tidak valid disediakan, atau penggunaan kartubebas tidak valid.
MSIDBERROR_BADIDENTIFIER
Pengidentifikasi yang tidak valid disediakan.
MSIDBERROR_BADLANGUAGE
ID bahasa tidak valid disediakan.
MSIDBERROR_BADFILENAME
Nama file yang tidak valid disediakan.
MSIDBERROR_BADPATH
Jalur yang tidak valid disediakan.
MSIDBERROR_BADCONDITION
Pernyataan kondisional yang tidak valid diberikan.
MSIDBERROR_BADFORMATTED
String format yang tidak valid disediakan.
MSIDBERROR_BADTEMPLATE
String templat yang tidak valid disediakan.
MSIDBERROR_BADDEFAULTDIR
String yang tidak valid disediakan di kolom DefaultDir dari tabel Direktori .
MSIDBERROR_BADREGPATH
String jalur registri yang tidak valid disediakan.
MSIDBERROR_BADCUSTOMSOURCE
String yang tidak valid disediakan di kolom CustomSource dari tabel CustomAction .
MSIDBERROR_BADPROPERTY
String properti yang tidak valid disediakan.
MSIDBERROR_MISSINGDATA
Tabel _Validation tidak memiliki referensi ke kolom.
MSIDBERROR_BADCATEGORY
Kolom kategori tabel _Validation untuk kolom tidak valid.
MSIDBERROR_BADCABINET
Nama kabinet yang tidak valid disediakan.
MSIDBERROR_BADKEYTABLE
Tabel di kolom Keytable dari tabel _Validation tidak ditemukan atau dimuat.
MSIDBERROR_BADMAXMINVALUES
Nilai di kolom MaxValue dari tabel _Validation kurang dari nilai di kolom MinValue.
MSIDBERROR_BADSHORTCUT
Nama target pintasan tidak valid disediakan.
MSIDBERROR_STRINGOVERFLOW
String terlalu panjang untuk panjang yang ditentukan oleh definisi kolom.
MSIDBERROR_BADLOCALIZEATTRIB
Atribut pelokalan yang tidak valid disediakan. (Kunci primer tidak dapat dilokalkan.)
 
 

Perhatikan bahwa dalam situasi memori rendah, fungsi ini dapat meningkatkan pengecualian STATUS_NO_MEMORY.

Keterangan

Anda hanya boleh memanggil fungsi MsiViewGetError saat MsiViewModify mengembalikan ERROR_INVALID_DATA, yang menunjukkan bahwa data tidak valid. Kesalahan hanya dicatat untuk MSIMODIFY_VALIDATE, MSIMODIFY_VALIDATE_NEW, dan MSIMODIFY_VALIDATEFIELD.

Jika ERROR_MORE_DATA dikembalikan, parameter yang merupakan penunjuk memberikan ukuran buffer yang diperlukan untuk menahan string. Setelah berhasil, ia memberikan jumlah karakter yang ditulis ke buffer string. Oleh karena itu Anda bisa mendapatkan ukuran buffer yang diperlukan dengan melewati buffer kecil (minimum satu karakter) dan memeriksa nilai di pcchPathBuf ketika fungsi kembali MSIDBERROR_MOREDATA. Jangan mencoba menentukan ukuran buffer dengan meneruskan null sebagai szColumnNameBuffer atau ukuran buffer 0 dalam DWORD yang dirujuk oleh pcchBuf.

Setelah MSIDBERROR_NOERROR dikembalikan, tidak ada lagi kesalahan validasi yang tersisa. Nilai pengembalian MSIDBERROR menunjukkan jenis kesalahan validasi yang terjadi untuk nilai yang terletak di kolom yang diidentifikasi oleh szColumnNameBuffer.

Catatan

Header msiquery.h mendefinisikan MsiViewGetError sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praproscesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

   
Klien minimum yang didukung Windows Installer 5.0 di Windows Server 2012, Windows 8, Windows Server 2008 R2 atau Windows 7. Windows Installer 4.0 atau Windows Installer 4.5 di Windows Server 2008 atau Windows Vista. Windows Installer pada Windows Server 2003 atau Windows XP
Target Platform Windows
Header msiquery.h
Pustaka Msi.lib
DLL Msi.dll

Lihat juga

Fungsi Akses Database Umum

Meneruskan Null sebagai Argumen Fungsi Pemasang Windows