Fungsi VerQueryValueW (winver.h)
Mengambil informasi versi yang ditentukan dari sumber daya informasi versi yang ditentukan. Untuk mengambil sumber daya yang sesuai, sebelum memanggil VerQueryValue, Anda harus terlebih dahulu memanggil fungsi GetFileVersionInfoSize , lalu fungsi GetFileVersionInfo .
Sintaks
BOOL VerQueryValueW(
[in] LPCVOID pBlock,
[in] LPCWSTR lpSubBlock,
[out] LPVOID *lplpBuffer,
[out] PUINT puLen
);
Parameter
[in] pBlock
Jenis: LPCVOID
Sumber daya informasi versi yang dikembalikan oleh fungsi GetFileVersionInfo .
[in] lpSubBlock
Jenis: LPCTSTR
Nilai informasi versi yang akan diambil. String harus terdiri dari nama yang dipisahkan oleh garis miring terbelakang (\) dan harus memiliki salah satu formulir berikut.
\
Blok akar. Fungsi ini mengambil penunjuk ke struktur VS_FIXEDFILEINFO untuk sumber daya informasi versi.
\VarFileInfo\Translation
Array terjemahan dalam struktur informasi variabel Var —anggota Nilai dari struktur ini. Fungsi ini mengambil penunjuk ke array pengidentifikasi halaman bahasa dan kode ini. Aplikasi dapat menggunakan pengidentifikasi ini untuk mengakses struktur StringTable khusus bahasa (menggunakan anggota szKey ) di sumber daya informasi versi.
\StringFileInfo\lang-codepage\string-name
Nilai dalam struktur StringTable khusus bahasa. Nama halaman kode bahasa adalah perangkaian pasangan pengidentifikasi halaman bahasa dan kode yang ditemukan sebagai DWORD dalam array terjemahan untuk sumber daya. Di sini nama lang-codepage harus ditentukan sebagai string heksadesimal. Nama nama string harus menjadi salah satu string yang telah ditentukan sebelumnya yang dijelaskan di bagian Keterangan berikut. Fungsi ini mengambil nilai string khusus untuk halaman bahasa dan kode yang ditunjukkan.
[out] lplpBuffer
Jenis: LPVOID*
Ketika metode ini kembali, berisi alamat penunjuk ke informasi versi yang diminta dalam buffer yang diacu oleh pBlock. Memori yang ditujukan oleh lplpBuffer dibebaskan ketika memori pBlock terkait dibebaskan.
[out] puLen
Jenis: PUINT
Ketika metode ini kembali, berisi penunjuk ke ukuran data yang diminta yang diacu oleh lplpBuffer: untuk nilai informasi versi, panjang karakter string yang disimpan di lplpBuffer; untuk nilai array terjemahan, ukuran dalam byte array yang disimpan di lplpBuffer; dan untuk blok akar, ukuran dalam byte struktur.
Mengembalikan nilai
Jenis: BOOL
Jika struktur informasi versi yang ditentukan ada, dan informasi versi tersedia, nilai yang dikembalikan bukan nol. Jika alamat buffer panjang adalah nol, tidak ada nilai yang tersedia untuk nama informasi versi yang ditentukan.
Jika nama yang ditentukan tidak ada atau sumber daya yang ditentukan tidak valid, nilai yang dikembalikan adalah nol.
Keterangan
Fungsi ini berfungsi pada gambar file 16,32-, dan 64-bit.
Berikut ini adalah informasi versi yang telah ditentukan sebelumnya Untai (karakter) Unicode.
Komentar | InternalName | ProductName |
NamaPerusahaan | LegalCopyright | ProductVersion |
FileDescription | LegalTrademarks | PrivateBuild |
FileVersion | OriginalFilename | SpecialBuild |
Contoh
Contoh berikut menunjukkan cara menghitung bahasa versi yang tersedia dan mengambil nilai string FileDescription untuk setiap bahasa.
Pastikan untuk memanggil fungsi GetFileVersionInfoSize dan GetFileVersionInfo sebelum memanggil VerQueryValue untuk menginisialisasi buffer pBlock dengan benar.
// Structure used to store enumerated languages and code pages.
HRESULT hr;
struct LANGANDCODEPAGE {
WORD wLanguage;
WORD wCodePage;
} *lpTranslate;
// Read the list of languages and code pages.
VerQueryValue(pBlock,
TEXT("\\VarFileInfo\\Translation"),
(LPVOID*)&lpTranslate,
&cbTranslate);
// Read the file description for each language and code page.
for( i=0; i < (cbTranslate/sizeof(struct LANGANDCODEPAGE)); i++ )
{
hr = StringCchPrintf(SubBlock, 50,
TEXT("\\StringFileInfo\\%04x%04x\\FileDescription"),
lpTranslate[i].wLanguage,
lpTranslate[i].wCodePage);
if (FAILED(hr))
{
// TODO: write error handler.
}
// Retrieve file description for language and code page "i".
VerQueryValue(pBlock,
SubBlock,
&lpBuffer,
&dwBytes);
}
Catatan
Header winver.h mendefinisikan VerQueryValue sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor 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
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winver.h (termasuk Windows.h) |
Pustaka | Version.lib |
DLL | Api-ms-win-core-version-l1-1-0.dll |
Lihat juga
Konseptual
Referensi