Bagikan melalui


Fungsi VerQueryValueA (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 VerQueryValueA(
  [in]  LPCVOID pBlock,
  [in]  LPCSTR  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 lang-codepage 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 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 ditujukkan oleh pBlock. Memori yang ditujukkan 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 string Unicode informasi versi yang telah ditentukan sebelumnya.

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

GetFileVersionInfo

GetFileVersionInfoSize

Referensi

String

StringFileInfo

StringTable

VS_FIXEDFILEINFO

VS_VERSIONINFO

Var

VarFileInfo

Informasi Versi