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 |
---|---|
|
Argumen tidak valid. |
|
Buffer terlalu kecil untuk menerima data. |
|
Fungsi gagal. |
|
Fungsi berhasil diselesaikan tanpa kesalahan. |
|
Rekaman baru menduplikasi kunci primer dari rekaman yang sudah ada dalam tabel. |
|
Tidak ada nilai kosong yang diizinkan; atau kolom akan dihapus, tetapi dirujuk oleh baris lain. |
|
Rekaman terkait dalam tabel asing tidak ditemukan. |
|
Data lebih besar dari nilai maksimum yang diizinkan. |
|
Data kurang dari nilai minimum yang diizinkan. |
|
Data bukan anggota nilai yang diizinkan dalam set. |
|
String versi yang tidak valid disediakan. |
|
Kasus ini tidak valid. Huruf besar semua harus huruf besar atau huruf kecil semua. |
|
GUID yang tidak valid disediakan. |
|
Nama file kartubebas tidak valid disediakan, atau penggunaan kartubebas tidak valid. |
|
Pengidentifikasi yang tidak valid disediakan. |
|
ID bahasa tidak valid disediakan. |
|
Nama file yang tidak valid disediakan. |
|
Jalur yang tidak valid disediakan. |
|
Pernyataan kondisional yang tidak valid diberikan. |
|
String format yang tidak valid disediakan. |
|
String templat yang tidak valid disediakan. |
|
String yang tidak valid disediakan di kolom DefaultDir dari tabel Direktori . |
|
String jalur registri yang tidak valid disediakan. |
|
String yang tidak valid disediakan di kolom CustomSource dari tabel CustomAction . |
|
String properti yang tidak valid disediakan. |
|
Tabel _Validation tidak memiliki referensi ke kolom. |
|
Kolom kategori tabel _Validation untuk kolom tidak valid. |
|
Nama kabinet yang tidak valid disediakan. |
|
Tabel di kolom Keytable dari tabel _Validation tidak ditemukan atau dimuat. |
|
Nilai di kolom MaxValue dari tabel _Validation kurang dari nilai di kolom MinValue. |
|
Nama target pintasan tidak valid disediakan. |
|
String terlalu panjang untuk panjang yang ditentukan oleh definisi kolom. |
|
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 |