gpt4 book ai didi

c++ - 如何使用 GetFileVersionInfo 函数?

转载 作者:搜寻专家 更新时间:2023-10-31 01:12:32 25 4
gpt4 key购买 nike

我有这段代码——返回文件版本(到结构中)我以 shell32.dll 为例但有些值我不明白它们的含义,希望得到解释。

代码如下:

void GetFileVersion( PCHAR pFilePath  ,PVERSION pRetVersion)
{
DWORD dwSize = 0;
BYTE *pVersionInfo = NULL;
VS_FIXEDFILEINFO *pFileInfo = NULL;
UINT pLenFileInfo = 0;


/*getting the file version info size */
dwSize = GetFileVersionInfoSize( pFilePath, NULL );
if ( dwSize == 0 )
{
printf( "Error in GetFileVersionInfoSize: %d\n", GetLastError() );
return;
}

pVersionInfo = new BYTE[ dwSize ]; /*allocation of space for the verison size */

if ( !GetFileVersionInfo( pFilePath, 0, dwSize, pVersionInfo ) ) /*entering all info data to pbVersionInfo*/
{
printf( "Error in GetFileVersionInfo: %d\n", GetLastError() );
delete[] pVersionInfo;
return;
}

if ( !VerQueryValue( pVersionInfo, TEXT("\\"), (LPVOID*) &pFileInfo, &pLenFileInfo ) )
{
printf( "Error in VerQueryValue: %d\n", GetLastError() );
delete[] pVersionInfo;
return;
}


/*checking if the allocation succeeded */
if (NULL == pRetVersion)
{
printf("Allocation failed! \n" , GetLastError());
return;
}


pRetVersion->major = ( pFileInfo->dwFileVersionMS >> 16 ) & 0xffff ;
pRetVersion->minor = ( pFileInfo->dwFileVersionMS) & 0xffff;
pRetVersion->hotfix = ( pFileInfo->dwFileVersionLS >> 16 ) & 0xffff;
pRetVersion->other = ( pFileInfo->dwFileVersionLS) & 0xffff;

}
  1. dwSize 是什么意思?这只是文件版本大小吗?单击 shell32.dll 时在哪里可以看到它?

  2. pLenFileinfo - 这个大小是多少?

  3. 当我查看 VS_FIXEDFILEINFO 的结构时,只有版本信息信息,有没有办法获取例如:文件描述修改日期原始文件名等? (“详细信息”中的所有其他属性)?

谢谢!!!!!

最佳答案

文件版本信息是可变长度的。它包含许多不同的信息。所有这些不同部分的总长度由 GetFileVersionInfoSize 的返回值给出。

当您调用 VerQueryValue 时,您是在请求整个版本信息中的一条特定信息。而且该特定部分的长度永远不能大于整体尺寸。

VerQueryFile 的文档包含提取文件描述的示例代码。

关于c++ - 如何使用 GetFileVersionInfo 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13626295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com