40#define NUM_STORAGES_COLS 2
41#define MAX_STORAGES_NAME_LEN 62
103 ERR(
"Cannot modify primary key.\n");
116 hr = IStream_Stat(stm, &
stat, STATFLAG_NONAME);
120 if (
stat.cbSize.QuadPart >> 32)
122 ERR(
"Storage is too large\n");
152 if (lockbytes) ILockBytes_Release(lockbytes);
176 IStorage_Release(stg);
180 hr = IStorage_CopyTo(stg, 0,
NULL,
NULL, substg);
183 IStorage_Release(substg);
184 IStorage_Release(stg);
187 IStorage_Release(substg);
191 if (prev) IStorage_Release(prev);
217 IStream_Release(stm);
237 hr = IStorage_CopyTo(stg, 0,
NULL,
NULL, substg);
246 IStorage_AddRef(stg);
248 if (prev) IStorage_Release(prev);
253 if (substg) IStorage_Release(substg);
254 IStorage_Release(stg);
255 IStream_Release(stm);
299 TRACE(
"(%p, %p, %p)\n",
view, rows, cols);
310 TRACE(
"(%p, %d, %p, %p, %p, %p)\n",
view,
n,
name,
type, temporary,
328 if (table_name) *table_name =
L"_Storages";
329 if (temporary) *temporary =
FALSE;
385 TRACE(
"%p %d %p\n",
view, eModifyMode, rec);
410 FIXME(
"%p %d %p - mode not implemented\n",
view, eModifyMode, rec );
431 IStorage_Release(sv->
storages[
i].storage);
484 hr = IEnumSTATSTG_Next(stgenum, 1, &
stat, &
size);
488 if (
stat.type != STGTY_STORAGE)
511 IEnumSTATSTG_Release(stgenum);
522 sv =
calloc(1,
sizeof(*sv));
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define ERROR_NO_MORE_ITEMS
HRESULT WINAPI StgOpenStorageOnILockBytes(ILockBytes *plkbyt, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen)
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
VOID WINAPI CoTaskMemFree(LPVOID ptr)
HRESULT WINAPI CreateILockBytesOnHGlobal(HGLOBAL global, BOOL delete_on_release, ILockBytes **ret)
UINT MSI_RecordGetIStream(MSIRECORD *, UINT, IStream **)
BOOL msi_add_string(string_table *st, const WCHAR *data, int len, BOOL persistent)
UINT msi_string2id(const string_table *st, const WCHAR *data, int len, UINT *id)
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT)
const WCHAR * msi_string_lookup(const string_table *st, UINT id, int *len)
@ MSIMODIFY_INSERT_TEMPORARY
@ MSIMODIFY_VALIDATE_DELETE
@ MSIMODIFY_VALIDATE_FIELD
#define STGM_SHARE_DENY_NONE
#define STGM_SHARE_EXCLUSIVE
_Check_return_ _CRTIMP wchar_t *__cdecl wcsdup(_In_z_ const wchar_t *_Str)
static BOOL storages_set_table_size(struct storages_view *sv, UINT size)
static UINT STORAGES_fetch_stream(struct tagMSIVIEW *view, UINT row, UINT col, IStream **stm)
static UINT STORAGES_execute(struct tagMSIVIEW *view, MSIRECORD *record)
static UINT STORAGES_fetch_int(struct tagMSIVIEW *view, UINT row, UINT col, UINT *val)
static UINT storages_modify_update(struct tagMSIVIEW *view, MSIRECORD *rec)
static UINT STORAGES_insert_row(struct tagMSIVIEW *view, MSIRECORD *rec, UINT row, BOOL temporary)
static UINT STORAGES_set_row(struct tagMSIVIEW *view, UINT row, MSIRECORD *rec, UINT mask)
static UINT STORAGES_get_column_info(struct tagMSIVIEW *view, UINT n, LPCWSTR *name, UINT *type, BOOL *temporary, LPCWSTR *table_name)
UINT STORAGES_CreateView(MSIDATABASE *db, MSIVIEW **view)
static UINT STORAGES_delete_row(struct tagMSIVIEW *view, UINT row)
static UINT storages_find_row(struct storages_view *sv, MSIRECORD *rec, UINT *row)
static UINT STORAGES_modify(struct tagMSIVIEW *view, MSIMODIFY eModifyMode, MSIRECORD *rec, UINT row)
static UINT STORAGES_close(struct tagMSIVIEW *view)
#define NUM_STORAGES_COLS
static INT add_storages_to_table(struct storages_view *sv)
#define MAX_STORAGES_NAME_LEN
static UINT STORAGES_delete(struct tagMSIVIEW *view)
static HRESULT stream_to_storage(IStream *stm, IStorage **stg)
static const MSIVIEWOPS storages_ops
static UINT STORAGES_set_stream(MSIVIEW *view, UINT row, UINT col, IStream *stream)
static UINT storages_modify_assign(struct tagMSIVIEW *view, MSIRECORD *rec)
static UINT STORAGES_set_string(struct tagMSIVIEW *view, UINT row, UINT col, const WCHAR *val, int len)
static UINT STORAGES_get_dimensions(struct tagMSIVIEW *view, UINT *rows, UINT *cols)
struct storage * storages
#define ERROR_FUNCTION_FAILED
#define ERROR_INVALID_DATA