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.