VerQueryValue函数从指定的版本信息资源中检索指定的版本信息。

来源:互联网 发布:js options的用法 编辑:程序博客网 时间:2024/05/16 07:44
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年微软公司。版权所有。