Aside from wondering why these flags are not documented, if you start using these flags just to see what happens -things start to unfold. If you use FltEnlistInTransaction with any flags other than the four flags above or TRANSACTION_NOTIFY_COMMIT_FINALIZE in Windows 7/Vista Service Pack 2/Vista Service Pack 11, you will get a STATUS_INVALID_PARAMETER_4 (0xC00000F2).
In Vista RTM2 however, you will get a STATUS_INVALID_PARAMETER_4 if you use TRANSACTION_NOTIFY_COMMIT_FINALIZE.
So the bottom line is if you want to notified when transaction commit happens, you got to detect service pack level to call FltEnlistInTransaction correctly. Your driver can subscribe to transaction commit event only when running under Windows Vista Service Pack 13 onwards.
1My Windows Vista Service Pack 2/Service Pack 1 setup was with fltmgr.sys x86 versions 6.0.6002.18005/6.0.6001.18000 respectively.
2This was observed in Windows Vista RTM machine with filter manager x86 version 6.0.6000.16386.
3Which, judging by the kind of bugs it addressed, ought to have been Vista RTM in the first place.
- 1 2