Home | Info | Community | Development | myReactOS | Contact Us
[static]
Definition at line 460 of file streams.c.
Referenced by STREAMS_CreateView().
{ IEnumSTATSTG *stgenum = NULL; STATSTG stat; STREAM *stream = NULL; HRESULT hr; UINT r, count = 0, size; LPWSTR encname; hr = IStorage_EnumElements(sv->db->storage, 0, NULL, 0, &stgenum); if (FAILED(hr)) return -1; sv->max_streams = 1; sv->streams = msi_alloc_zero(sizeof(STREAM *)); if (!sv->streams) return -1; while (TRUE) { size = 0; hr = IEnumSTATSTG_Next(stgenum, 1, &stat, &size); if (FAILED(hr) || !size) break; if (stat.type != STGTY_STREAM) { CoTaskMemFree(stat.pwcsName); continue; } /* table streams are not in the _Streams table */ if (*stat.pwcsName == 0x4840) { CoTaskMemFree(stat.pwcsName); continue; } stream = create_stream(sv, stat.pwcsName, TRUE, NULL); if (!stream) { count = -1; CoTaskMemFree(stat.pwcsName); break; } /* these streams appear to be unencoded */ if (*stat.pwcsName == 0x0005) { r = msi_get_raw_stream(sv->db, stat.pwcsName, &stream->stream); } else { encname = encode_streamname(FALSE, stat.pwcsName); r = msi_get_raw_stream(sv->db, encname, &stream->stream); msi_free(encname); } CoTaskMemFree(stat.pwcsName); if (r != ERROR_SUCCESS) { WARN("unable to get stream %u\n", r); count = -1; break; } if (!streams_set_table_size(sv, ++count)) { count = -1; break; } sv->streams[count - 1] = stream; } IEnumSTATSTG_Release(stgenum); return count; }