Creating a shadow file object

Out of interest, when creating shadow file objects for isolation filters, what does everyone prefer; IoCreateStreamFileObject or FltCreateFile?

For those of you who use IoCreateStreamFileObject, which fields of the FILE_OBJECT do you normally fill in before you do the switch?
For those of you who use FltCreateFile, what makes you prefer this method when it seems to be so much work pulling all the data out of the original file object to populate FltCreateFileEx2?

Not really a question, I’m just curious as to people’s pros and cons.