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

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年微软公司。版权所有。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值