New statuses for FS filter callbacks

Hi guys,

I looked thru FastFAT and CDFS sources from the Vista WDK 5600 and figured out that now these file system drivers use FsFilterCallback for create section synchronization. FastFAT only uses PreAcquireForSectionSynchronization, but CDFS uses PreAcquireForSectionSynchronization callback and ReleaseFileForNtCreateSection in its Fast I/O dispatch table. But the main question is not about it. The thing is that these FS callbacks return some new NT status values depending on a section synchronization type. If SyncType callback data parameter is equal to SyncTypeCreateSection, then CDFS returns STATUS_FILE_LOCKED_WITH_ONLY_READERS, otherwise it returns STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY. FastFAT’s behavior is slightly different because it allows write operations. If SyncType callback data parameter is not equal to SyncTypeCreateSection, then FastFAT returns STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY, otherwise it checks whether a corresponding Fcb has no writers, and if it’s like this, then it returns STATUS_FILE_LOCKED_WITH_ONLY_READERS. In case of possible writers, it returns STATUS_FILE_LOCKED_WITH_WRITERS.

I know how STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY affects the FS filter callback manager, but I have never seen any information on STATUS_FILE_LOCKED_WITH_ONLY_READERS and STATUS_FILE_LOCKED_WITH_WRITERS status values. How these status values act upon Memory Manager or other kernel components? I’ve already posted a question about BSOD on Vista 5744 RC2 with RESOURCE_NOT_OWNED in NTFS.SYS during processing create section, maybe these magic status values can help to cope with it?

Thanks beforehand. Any suggestions will be highly appreciated.

Konstantin Manurin
System Programmer