You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.2 KiB
57 lines
1.2 KiB
//
|
|
// MODULE: CRCCOMPUTE.CPP
|
|
//
|
|
// PURPOSE: CRC Calculator
|
|
//
|
|
// PROJECT: Generic Troubleshooter DLL for Microsoft AnswerPoint
|
|
//
|
|
// COMPANY: Saltmine Creative, Inc. (206)-284-7511 [email protected]
|
|
//
|
|
// AUTHOR: Roman Mach (based on existing CRC designs)
|
|
//
|
|
// ORIGINAL DATE: 8/7/97
|
|
//
|
|
// NOTES:
|
|
// 1.
|
|
//
|
|
// Version Date By Comments
|
|
//--------------------------------------------------------------------
|
|
// V0.2 8/7/97 RM Local Version for Memphis
|
|
// V0.3 04/09/98 JM/OK+ Local Version for NT5
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "crc.h"
|
|
|
|
void CCRC::BuildCrcTable()
|
|
{
|
|
DWORD dwX;
|
|
int y;
|
|
DWORD dwAccum;
|
|
for (dwX = 0; dwX < 256; dwX++)
|
|
{
|
|
dwAccum = dwX << 24;
|
|
for (y = 0; y < 8; y++)
|
|
{
|
|
if (dwAccum & 0x80000000)
|
|
dwAccum = (dwAccum << 1) ^ POLYNOMIAL;
|
|
else
|
|
dwAccum <<= 1;
|
|
}
|
|
dwCrcTable[dwX] = dwAccum;
|
|
}
|
|
return;
|
|
}
|
|
|
|
DWORD CCRC::ComputeCRC(LPCSTR sznBuffer, DWORD dwBufSize, DWORD dwAccum)
|
|
{
|
|
DWORD dwX;
|
|
DWORD dwY;
|
|
// DWORD dwAccum = 0xFFFFFFFF;
|
|
for (dwX = 0; dwX < dwBufSize; dwX++)
|
|
{
|
|
dwY = ((dwAccum >> 24) ^ *sznBuffer++) & 0xFF;
|
|
dwAccum = (dwAccum << 8) ^ dwCrcTable[dwY];
|
|
}
|
|
return dwAccum;
|
|
}
|