69 lines
1.8 KiB
C
69 lines
1.8 KiB
C
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1996 Microsoft Corporation
|
|||
|
<EFBFBD> 1998 Seagate Software, Inc. All rights reserved.
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
wsbfile.h
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
This module defines very specific CRC algorithm code
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
Christopher J. Timmes [ctimmes@avail.com] 23 Jun 1997
|
|||
|
|
|||
|
Revision History:
|
|||
|
Michael Lotz [lotz] 30-Sept-1997
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
#ifndef _WSBFILE_H
|
|||
|
#define _WSBFILE_H
|
|||
|
|
|||
|
extern unsigned long crc_32_tab[];
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern "C"
|
|||
|
{
|
|||
|
extern
|
|||
|
WSB_EXPORT
|
|||
|
HRESULT WsbCRCReadFile ( BYTE* pchCurrent,
|
|||
|
ULONG* oldcrc32 );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// ---------- implementation code for WsbCalcCRCofFile() ----------
|
|||
|
|
|||
|
// This is the CRC calculation algorythm.
|
|||
|
// It is called with the current byte in the file and the current CRC value,
|
|||
|
// and uses the 'crc_32_tab[]' table. The crc_32_tab[] look up table is externed above and resides
|
|||
|
// in the wsbfile.obj object module. Any function or method using the macro below must include
|
|||
|
// the wsbfile.obj in the link list.
|
|||
|
//
|
|||
|
// For example, it can be used in the following way:
|
|||
|
// unsigned long ulCRC ;
|
|||
|
//
|
|||
|
// INITIALIZE_CRC( ulCRC );
|
|||
|
// for( all *bytes* that are to be CRCed )
|
|||
|
// CALC_CRC( current_byte, ulCRC );
|
|||
|
// FINIALIZE_CRC( ulCRC );
|
|||
|
//
|
|||
|
// at this point ulCRC is the CRC value and can be used as the calculated CRC value
|
|||
|
//
|
|||
|
|
|||
|
#define INITIALIZE_CRC( crc ) ((crc) = 0xFFFFFFFF )
|
|||
|
#define CALC_CRC( octet, crc ) ((crc) = ( crc_32_tab[((crc)^ (octet)) & 0xff] ^ ((crc) >> 8) ) )
|
|||
|
#define FINIALIZE_CRC( crc ) ((crc) = ~(crc) )
|
|||
|
|
|||
|
// ---------------------- Defines to identify the CRC calculation types -------------
|
|||
|
#define WSB_CRC_CALC_NONE 0x00000000
|
|||
|
// Identify this algorithm and the Microsoft 32 bit CRC calculation
|
|||
|
#define WSB_CRC_CALC_MICROSOFT_32 0x00000001
|
|||
|
|
|||
|
#endif // _WSBFILE_H
|