資源簡介
最好的crc32算法,可以直接調用,速度很快

代碼片段和文件信息
#include?“StdAfx.h“
#include?“filecrc.h“
#define?MAX_VIEW_SIZE 0x00A00000 //10M
//bool?CFileCrc::CheckSum(CMemMapFile?&file?DWORD?&crcContent)
//{
// LPVOID?lpData?=?file.Open();
// DWORD?size?=?file.GetLength();
// bool?ret?=?false;
//? if?(lpData)
//? {
//? ret?=?CheckSum(lpData?size?crcContent);
//? }
//? else
//? {
//? ret?=?false;
//? }
//? file.Close();
//?
//? return?ret;
//}
bool?CFileCrc::CheckSum(LPSTR?pszFileDWORD?&crcContent)
{
bool?ret?=?false;
struct?ACCUMULATE_CRC
{
bool?bFirstCrc;
DWORD?crc;
}?acCrc?=?{?true?0};;
BYTE*?pByte?=?NULL;
void*?dwMemAddress?=?NULL;
DWORD?dwFileSize?=?0?dwViewSize?=?0;
DWORD?dwFileOffset?=?0;
HANDLE?hFile??=?CreateFile(pszFile
GENERIC_READ
FILE_SHARE_READ
NULL
OPEN_EXISTING
FILE_ATTRIBUTE_NORMAL
NULL);
????if(hFile?==?INVALID_HANDLE_VALUE){ goto?END;}
HANDLE?hFilemap?=?CreateFileMappingA(hFile
NULL
PAGE_READONLY
0
0
NULL);
if(hFilemap?==?NULL){ goto?END;}
dwFileSize?=?GetFileSize(hFile?NULL);
if(dwFileSize?==?0)?{ goto?END; }
//?Loop?while?we?map?a?section?of?the?file?and?CRC?it
while(dwFileSize?>?0)
{
if(dwFileSize? else {dwViewSize?=?MAX_VIEW_SIZE; }
dwMemAddress?=?MapViewOfFile(hFilemap
FILE_MAP_READ
0
dwFileOffset
dwViewSize);
pByte?=?(BYTE*)dwMemAddress;
if(pByte?==?NULL) { goto?END; }
if(acCrc.bFirstCrc)
{
acCrc.crc?=?crc32::checksum(pByte?dwViewSize);
acCrc.bFirstCrc?=?false;
}
else
{
acCrc.crc?=?crc32::accumulatesum(pByte?dwViewSize?acCrc.crc);
}
if(!UnmapViewOfFile((void*)dwMemAddress)) { goto?END; }
dwFileOffset?+=?dwViewSize;
dwFileSize?-=?dwViewSize;
}
crcContent?=?acCrc.crc;
ret?=?true;
END:
if(hFile?!=?NULL)?CloseHandle(hFile);
if(hFilemap?!=?NULL)?CloseHandle(hFilemap);
return?ret;
}
bool?CFileCrc::CheckSum(const?void?*pBuffer?
?DWORD?len
?DWORD?&dwResult)
{
assert(pBuffer?&&?len?>=?4);
dwResult?=?crc32::checksum(pBuffer?len);
return?true;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????991??2006-12-22?11:36??mapfilecrc\.svn\text-ba
?????目錄??????????0??2006-12-22?11:36??mapfilecrc\.svn\text-ba
?????目錄??????????0??2006-12-22?11:36??mapfilecrc\.svn\prop-ba
?????目錄??????????0??2006-12-22?11:36??mapfilecrc\.svn\props
?????目錄??????????0??2006-12-22?11:36??mapfilecrc\.svn\tmp\text-ba
?????目錄??????????0??2006-12-22?11:36??mapfilecrc\.svn\tmp\prop-ba
?????目錄??????????0??2006-12-22?11:36??mapfilecrc\.svn\tmp\props
?????目錄??????????0??2006-12-22?11:36??mapfilecrc\.svn\tmp
?????文件??????????2??2006-12-22?11:36??mapfilecrc\.svn\format
?????文件????????244??2006-12-22?13:19??mapfilecrc\.svn\all-wcprops
?????文件????????400??2006-12-28?09:13??mapfilecrc\.svn\entries
????...D.H.?????????0??2006-12-22?11:36??mapfilecrc\.svn
?????文件????????394??2006-12-22?11:36??mapfilecrc\mapfilecrc\.svn\text-ba
?????文件???????8454??2006-12-22?11:36??mapfilecrc\mapfilecrc\.svn\text-ba
?????文件???????3881??2006-12-22?11:36??mapfilecrc\mapfilecrc\.svn\text-ba
?????文件???????2170??2006-12-22?11:36??mapfilecrc\mapfilecrc\.svn\text-ba
?????文件????????297??2006-12-22?11:36??mapfilecrc\mapfilecrc\.svn\text-ba
?????文件?????????68??2006-12-22?11:36??mapfilecrc\mapfilecrc\.svn\text-ba
?????文件????????254??2006-12-22?11:38??mapfilecrc\mapfilecrc\.svn\text-ba
?????文件????????305??2006-12-22?11:48??mapfilecrc\mapfilecrc\.svn\text-ba
?????目錄??????????0??2006-12-22?11:36??mapfilecrc\mapfilecrc\.svn\text-ba
?????目錄??????????0??2006-12-22?11:36??mapfilecrc\mapfilecrc\.svn\prop-ba
?????目錄??????????0??2006-12-22?11:36??mapfilecrc\mapfilecrc\.svn\props
?????目錄??????????0??2006-12-22?11:36??mapfilecrc\mapfilecrc\.svn\tmp\text-ba
?????目錄??????????0??2006-12-22?11:36??mapfilecrc\mapfilecrc\.svn\tmp\prop-ba
?????目錄??????????0??2006-12-22?11:36??mapfilecrc\mapfilecrc\.svn\tmp\props
?????目錄??????????0??2006-12-22?11:36??mapfilecrc\mapfilecrc\.svn\tmp
?????文件??????????2??2006-12-22?11:36??mapfilecrc\mapfilecrc\.svn\format
?????文件???????1254??2006-12-22?13:19??mapfilecrc\mapfilecrc\.svn\all-wcprops
?????文件???????1245??2006-12-28?09:13??mapfilecrc\mapfilecrc\.svn\entries
............此處省略23個文件信息
評論
共有 條評論