• 大小: 55KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: 其他
  • 标签:

资源简介

最好的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 < MAX_VIEW_SIZE) {dwViewSize = 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-base\mapfilecrc.sln.svn-base

     目录          0  2006-12-22 11:36  mapfilecrc\.svn\text-base

     目录          0  2006-12-22 11:36  mapfilecrc\.svn\prop-base

     目录          0  2006-12-22 11:36  mapfilecrc\.svn\props

     目录          0  2006-12-22 11:36  mapfilecrc\.svn\tmp\text-base

     目录          0  2006-12-22 11:36  mapfilecrc\.svn\tmp\prop-base

     目录          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-base\stdafx.h.svn-base

     文件       8454  2006-12-22 11:36  mapfilecrc\mapfilecrc\.svn\text-base\crc32.h.svn-base

     文件       3881  2006-12-22 11:36  mapfilecrc\mapfilecrc\.svn\text-base\mapfilecrc.vcproj.svn-base

     文件       2170  2006-12-22 11:36  mapfilecrc\mapfilecrc\.svn\text-base\filecrc.cpp.svn-base

     文件        297  2006-12-22 11:36  mapfilecrc\mapfilecrc\.svn\text-base\stdafx.cpp.svn-base

     文件         68  2006-12-22 11:36  mapfilecrc\mapfilecrc\.svn\text-base\mapfilecrc.h.svn-base

     文件        254  2006-12-22 11:38  mapfilecrc\mapfilecrc\.svn\text-base\mapfilecrc.cpp.svn-base

     文件        305  2006-12-22 11:48  mapfilecrc\mapfilecrc\.svn\text-base\filecrc.h.svn-base

     目录          0  2006-12-22 11:36  mapfilecrc\mapfilecrc\.svn\text-base

     目录          0  2006-12-22 11:36  mapfilecrc\mapfilecrc\.svn\prop-base

     目录          0  2006-12-22 11:36  mapfilecrc\mapfilecrc\.svn\props

     目录          0  2006-12-22 11:36  mapfilecrc\mapfilecrc\.svn\tmp\text-base

     目录          0  2006-12-22 11:36  mapfilecrc\mapfilecrc\.svn\tmp\prop-base

     目录          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个文件信息

评论

共有 条评论

相关资源