easymule学习----校验dll信息

偶尔下了下easyMule的代码学习,看到一些较好的地方,贴一下:

 

校验dll的信息:

 

 

static bool CheckLangDLLVersion(const CString& rstrLangDLL) { bool bResult = false; DWORD dwUnused; DWORD dwVerInfSize = GetFileVersionInfoSize(const_cast((LPCTSTR)rstrLangDLL), &dwUnused); if (dwVerInfSize != 0) { LPBYTE pucVerInf = (LPBYTE)calloc(dwVerInfSize, 1); if (pucVerInf) { if (GetFileVersionInfo(const_cast((LPCTSTR)rstrLangDLL), 0, dwVerInfSize, pucVerInf)) { VS_FIXEDFILEINFO* pFileInf = NULL; UINT uLen = 0; if (VerQueryValue(pucVerInf, _T("//"), (LPVOID*)&pFileInf, &uLen) && pFileInf && uLen) { bResult = (pFileInf->dwProductVersionMS == theApp.m_dwProductVersionMS && pFileInf->dwProductVersionLS == theApp.m_dwProductVersionLS); } } free(pucVerInf); } } return bResult; } 

 

步骤1:

GetFileVersionInfoSize() 获取dll信息的大小。

步骤2:

calloc() 开辟一块相应大小的区域,用于放置将要读出的dll信息。

步骤3:

GetFileVersionInfo()获取dll信息。

步骤4:

校验。

你可能感兴趣的:(MFC,dll)