VerQueryValue函数 -------------------------------------------------- ------------------------------ VerQueryValue函数从指定的版本信息资源中检索指定的版本信息。要在调用VerQueryValue之前检索适当的资源,必须先调用GetFileVersionInfoSize函数,然后调用GetFileVersionInfo函数。 句法 BOOL VerQueryValue(const LPVOID pBlock, LPTSTR lpSubBlock, LPVOID * lplpBuffer, PUINT puLen ); 参数 pBlock [in]指向包含GetFileVersionInfo函数返回的版本信息资源的缓冲区的指针。 lpSubBlock [in]指向一个零终止字符串的指针,指定要检索的版本信息值。字符串必须由用反斜杠(\)分隔的名称组成,它必须具有以下形式之一。 \ 指定根块。该函数检索指向版本信息资源的VS_FIXEDFILEINFO结构的指针。 \VarFileInfo\Translation 指定Var变量信息结构中的转换数组。该函数检索指向一个语言和代码页标识符数组的指针。应用程序可以使用这些标识符访问版本信息资源中的特定于语言的StringTable结构。 \StringFileInfo\lang-codepage\string-name 指定特定于语言的StringTable结构中的值。lang-codepage名称是在资源的翻译数组中作为DWORD找到的语言和代码页标识符对的连接。这里的lang-codepage名称必须指定为十六进制字符串。字符串名称必须是以下“备注”部分中描述的预定义字符串之一。该函数检索指定的语言和代码页特定的字符串值。 lplpBuffer [out]指向接收指向pBlock指向的缓冲区中请求的版本信息的指针的变量的指针。* lplpBuffer指向的内存在相关联的pBlock内存被释放时被释放。 puLen [out]指向接收版本信息值长度(以字符为单位)的缓冲区的指针。 回报值 如果指定的版本信息结构存在,并且版本信息可用,则返回值不为零。如果长度缓冲区的地址为零,则没有值可用于指定的版本信息名称。 如果指定的名称不存在或指定的资源无效,返回值为零。 备注 Windows NT 3.51及更早版本:版本信息功能不适用于16位Windows文件映像。 Windows 95/98 / Me,Windows NT 4.0和Windows 2000:这些功能适用于16位和32位文件映像。 Windows XP:这些功能适用于16位,32位和64位文件映像。 以下是预定义的版本信息Unicode字符串: 评论InternalName ProductName 公司名称LegalCopyright ProductVersion FileDescription LegalTrademarks PrivateBuild FileVersion OriginalFilename SpecialBuild 例 以下示例显示如何枚举可用的版本语言并检索每种语言的FileDescription字符串值。 在调用VerQueryValue之前,请确保调用GetFileVersionInfoSize和GetFileVersionInfo函数来正确初始化pBlock缓冲区。 Windows 95/98 / Me:VerQueryValueW由Microsoft支持?Unicode的层。为\ StringFileInfo \信息再次调用此函数会覆盖第一次调用中的信息,因此如果以后要使用该信息,则必须保存该信息。要使用此版本,您必须向应用程序添加某些文件,如Windows 95/98 / Me系统上的Microsoft Layer for Unicode所述。 显示示例 //用于存储枚举语言和代码页的结构。 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); } 功能信息 最低版本的DLL版本 Header在Winver.h中声明,包括Windows.h 导入库Version.lib 最低操作系统Windows 95,Windows NT 3.1 Unicode实现为ANSI和Unicode版本。 也可以看看 版本信息概述,GetFileVersionInfo,VarFileInfo,Var,StringFileInfo,StringTable,String,GetFileVersionInfoSize,VS_FIXEDFILEINFO,VS_VERSIONINFO -------------------------------------------------- ------------------------------ ?2005年微软公司。版权所有。
VerQueryValue函数从指定的版本信息资源中检索指定的版本信息。
最新推荐文章于 2024-06-28 18:53:14 发布