我有這樣的代碼 - 這是恢復該文件版本(進入一個結構) 我使用作爲例如SHELL32.DLL ,但也有一些我不明白它們的意義價值,並希望得到一個說明。如何使用GetFileVersionInfo函數?
這裏是代碼:
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;
}
什麼的dwSize的含義是什麼?這只是文件版本大小?我在哪裏可以看到它,而點擊shell32.dll?
pLenFileinfo - 這種規模是什麼?當我在看的
VS_FIXEDFILEINFO
的結構,只有版本信息資料,是否有WAE獲得比如:
File description
,Date modified
,Original filename
等? (「Details」中的所有其他屬性)?
謝謝!!!!!
它在MSDN文檔中描述。請告訴我們你不明白的部分。 –
我把它寫在代碼下 - 我不明白pLenInfoSize和dwSize的區別,版本是4位:例如1.2.3.4 - 所以它的大小應該是7個字符:28個字節?沒有? – user1386966
我認爲你需要更仔細地閱讀文檔。例如,版本存儲在兩個DWORD中。它不存儲在文本中。 –