I think that EnumerateAlternateDataStreams() should not include the default (unnamed) data stream. The name itself implies the 'other' data streams that have explicit names associated with them. So, option is to either alter the function behavior or add optional call argument or split it into EnumerateAllDataStreams() and EnumerateAlternateDataStreams(). If nothing else, the documentation should be updated to reflect the behavior. I had the need to make use of deletion of alternate data streams and I was lucky enough to notice that all data streams were presented to me for deletion rather than just named data streams.
I think that EnumerateAlternateDataStreams() should not include the default (unnamed) data stream. The name itself implies the 'other' data streams that have explicit names associated with them. So, option is to either alter the function behavior or add optional call argument or split it into EnumerateAllDataStreams() and EnumerateAlternateDataStreams(). If nothing else, the documentation should be updated to reflect the behavior. I had the need to make use of deletion of alternate data streams and I was lucky enough to notice that all data streams were presented to me for deletion rather than just named data streams.