Creating a file header

I try to create a file header of 256 bytes whenever a new file is created
from my filter driver, using a IoAllocateIrp() with IRP_MJ_WRITE to
generate a new Irp. But I find that there is an IRP_MJ_WRITE PAGING_IO
automatically generated to corrupt my file header.

If a new file of 5 bytes is created, the PAGING_IO IRP_MJ_WRITE will
corrupt the 6 to 256 bytes of my file header. Anybody know why this is
happening?