Checksum values are used to detect low-level data corruption. I/O
operations, such as, for example, read operations and write operations,
cause data blocks to pass through a number of low-level drivers when the
data blocks are transferred between an operating system and mass storage
location. A checksum filter driver intercepts a data block as the data
block passes between low-level drivers as a result of the performance of
an I/O operation. The checksum filter driver calculates a first checksum
value for the data block. The checksum filter subsequently intercepts the
data block as the data block passes between low-level drivers as a result
of the performance of a subsequent I/O operation. The checksum filter
driver calculates a second checksum value for the data block. The first
checksum value and the second checksum value are compared. Data
corruption is detected when a checksum mismatch occurs.