LazyWriter succeed with IoStatus.Information==0?

During the test against my encryption filter(based on isolation filter), a strange bug was found.
Under some special condition, the lazy writer can not finish its write operation, it just send a nomal PagingIo Write and return with STATUS_SUCCESS & IoStatus.Information == 0.(TopLevelIrp == FSRTL_CACHE_TOP_LEVEL_IRP)
I’m sure that:

  1. The size of the target file object is large enough;
  2. The parameters of the PagingIo Write are correct(such as offset, length, buffer, etc);
    I have been debugging it for a long time, but still can not locate this bug, I wonder why IoStatus.Information == 0 was returned with STATUS_SUCCESS, I think it should be returned with some ERROR_CODES.
    So in which condition will lazy writer return with STATUS_SUCCESS & Information == 0? Any help will be appreciated!

> So in which condition will lazy writer return with STATUS_SUCCESS &

Information == 0? Any help will be appreciated!

Do you mean the lazy writer or the FSD. If its the FSD I’d load up FAT and
look at what it does.

But I’d lay you dollars to donuts that the lower FSD believes that the
paging write is entirely beyond its EOF (or perhaps VDL) so it has returned
SUCCESS (because the write did succeed) and Information=0 (because it didn’t
write anything).

Thanks rod, you are correct.
I forget to extend the shadow file object’s valid data length, so the FSD believes that the paging write is beyond its VDL and returned SUCCESS with Information == 0.
It seems that sometimes I become quite stupid while debugging ;-(