Doubt this is your problem, but all COM functions return HRESULTs - not DWORDs. Its been quite a while since I've worked with structured storage, and when I did I was likely using StgOpenStorage(). Without looking into it any further, my guess would be to examine and play around with the enumeration parameters, i.e., specifically the 2nd and 3rd ones, and also the ones where you are passing in zeros.