Why comes async writes?

I wrote a simple test program to test my redirector driver.
But it was very strange that when I opened the file in read/write mode and
just READ through the file, there were some async WRITE requests to the
file. It happened when system free pages became insufficient, so I thought
the requests came from the Mapped Page Writer. But my test program never
wrote the file! Why the Mapped Page Writer thought the buffer was dirty?
And if I open the file in read only mode, there weren’t write requests.

My test program is very simple:
{
declare a stack buffer;
open file in read/write mode;(or read only mode)
read the file to the buffer;
if finished, exit; else read more to the same buffer;
}

Anybody can tell me why came the write requests? Thanks!