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:
- The size of the target file object is large enough;
- 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!