summaryrefslogtreecommitdiffstats
path: root/libmsi
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2012-10-23 10:06:48 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2012-12-06 20:26:29 +0100
commitee54109d9b784c72b25418933494e0691f42c2e8 (patch)
tree25fe1e3793887a5ab1c16b507149d416dd5c4b2c /libmsi
parent4194f5245fd2c0277f432bc0b7be4e681d546af2 (diff)
downloadmsitools-ee54109d9b784c72b25418933494e0691f42c2e8.tar.gz
msitools-ee54109d9b784c72b25418933494e0691f42c2e8.tar.xz
msitools-ee54109d9b784c72b25418933494e0691f42c2e8.zip
get rid of handles
Diffstat (limited to 'libmsi')
-rw-r--r--libmsi/database.c37
-rw-r--r--libmsi/handle.c213
-rw-r--r--libmsi/msipriv.h50
-rw-r--r--libmsi/msiquery.c104
-rw-r--r--libmsi/record.c64
-rw-r--r--libmsi/suminfo.c50
6 files changed, 159 insertions, 359 deletions
diff --git a/libmsi/database.c b/libmsi/database.c
index d8f264a..e37bcb8 100644
--- a/libmsi/database.c
+++ b/libmsi/database.c
@@ -239,7 +239,7 @@ void append_storage_to_db( MSIDATABASE *db, IStorage *stg )
free_streams( db );
}
-static VOID MSI_CloseDatabase( MSIOBJECTHDR *arg )
+static VOID MSI_CloseDatabase( MSIOBJECT *arg )
{
MSIDATABASE *db = (MSIDATABASE *) arg;
@@ -398,7 +398,7 @@ UINT MSI_OpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIDATABASE **pdb)
goto end;
}
- db = alloc_msiobject( MSIHANDLETYPE_DATABASE, sizeof (MSIDATABASE),
+ db = alloc_msiobject( MSIOBJECTTYPE_DATABASE, sizeof (MSIDATABASE),
MSI_CloseDatabase );
if( !db )
{
@@ -449,7 +449,7 @@ end:
return ret;
}
-UINT WINAPI MsiOpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIHANDLE *phDB)
+UINT WINAPI MsiOpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, PMSIOBJECT *phDB)
{
MSIDATABASE *db;
UINT ret;
@@ -459,16 +459,13 @@ UINT WINAPI MsiOpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIHANDLE *phD
ret = MSI_OpenDatabaseW( szDBPath, szPersist, &db );
if( ret == ERROR_SUCCESS )
{
- *phDB = alloc_msihandle( &db->hdr );
- if (! *phDB)
- ret = ERROR_NOT_ENOUGH_MEMORY;
- msiobj_release( &db->hdr );
+ *phDB = &db->hdr;
}
return ret;
}
-UINT WINAPI MsiOpenDatabaseA(LPCSTR szDBPath, LPCSTR szPersist, MSIHANDLE *phDB)
+UINT WINAPI MsiOpenDatabaseA(LPCSTR szDBPath, LPCSTR szPersist, PMSIOBJECT *phDB)
{
HRESULT r = ERROR_FUNCTION_FAILED;
LPWSTR szwDBPath = NULL, szwPersist = NULL;
@@ -1016,14 +1013,14 @@ done:
return r;
}
-UINT WINAPI MsiDatabaseImportW(MSIHANDLE handle, LPCWSTR szFolder, LPCWSTR szFilename)
+UINT WINAPI MsiDatabaseImportW(PMSIOBJECT handle, LPCWSTR szFolder, LPCWSTR szFilename)
{
MSIDATABASE *db;
UINT r;
TRACE("%x %s %s\n",handle,debugstr_w(szFolder), debugstr_w(szFilename));
- db = msihandle2msiinfo( handle, MSIHANDLETYPE_DATABASE );
+ db = msihandle2msiinfo( handle, MSIOBJECTTYPE_DATABASE );
if( !db )
return ERROR_INVALID_HANDLE;
r = MSI_DatabaseImport( db, szFolder, szFilename );
@@ -1031,7 +1028,7 @@ UINT WINAPI MsiDatabaseImportW(MSIHANDLE handle, LPCWSTR szFolder, LPCWSTR szFil
return r;
}
-UINT WINAPI MsiDatabaseImportA( MSIHANDLE handle,
+UINT WINAPI MsiDatabaseImportA( PMSIOBJECT handle,
LPCSTR szFolder, LPCSTR szFilename )
{
LPWSTR path = NULL, file = NULL;
@@ -1223,7 +1220,7 @@ done:
*
* row4 : data <tab> data <tab> data <tab> ... data <cr> <lf>
*/
-UINT WINAPI MsiDatabaseExportW( MSIHANDLE handle, LPCWSTR szTable,
+UINT WINAPI MsiDatabaseExportW( PMSIOBJECT handle, LPCWSTR szTable,
LPCWSTR szFolder, LPCWSTR szFilename )
{
MSIDATABASE *db;
@@ -1232,7 +1229,7 @@ UINT WINAPI MsiDatabaseExportW( MSIHANDLE handle, LPCWSTR szTable,
TRACE("%x %s %s %s\n", handle, debugstr_w(szTable),
debugstr_w(szFolder), debugstr_w(szFilename));
- db = msihandle2msiinfo( handle, MSIHANDLETYPE_DATABASE );
+ db = msihandle2msiinfo( handle, MSIOBJECTTYPE_DATABASE );
if( !db )
return ERROR_INVALID_HANDLE;
r = MSI_DatabaseExport( db, szTable, szFolder, szFilename );
@@ -1240,7 +1237,7 @@ UINT WINAPI MsiDatabaseExportW( MSIHANDLE handle, LPCWSTR szTable,
return r;
}
-UINT WINAPI MsiDatabaseExportA( MSIHANDLE handle, LPCSTR szTable,
+UINT WINAPI MsiDatabaseExportA( PMSIOBJECT handle, LPCSTR szTable,
LPCSTR szFolder, LPCSTR szFilename )
{
LPWSTR path = NULL, file = NULL, table = NULL;
@@ -1280,7 +1277,7 @@ end:
return r;
}
-UINT WINAPI MsiDatabaseMergeA(MSIHANDLE hDatabase, MSIHANDLE hDatabaseMerge,
+UINT WINAPI MsiDatabaseMergeA(PMSIOBJECT hDatabase, PMSIOBJECT hDatabaseMerge,
LPCSTR szTableName)
{
UINT r;
@@ -1945,7 +1942,7 @@ static UINT update_merge_errors(MSIDATABASE *db, LPCWSTR error,
return r;
}
-UINT WINAPI MsiDatabaseMergeW(MSIHANDLE hDatabase, MSIHANDLE hDatabaseMerge,
+UINT WINAPI MsiDatabaseMergeW(PMSIOBJECT hDatabase, PMSIOBJECT hDatabaseMerge,
LPCWSTR szTableName)
{
struct list tabledata = LIST_INIT(tabledata);
@@ -1961,8 +1958,8 @@ UINT WINAPI MsiDatabaseMergeW(MSIHANDLE hDatabase, MSIHANDLE hDatabaseMerge,
if (szTableName && !*szTableName)
return ERROR_INVALID_TABLE;
- db = msihandle2msiinfo(hDatabase, MSIHANDLETYPE_DATABASE);
- merge = msihandle2msiinfo(hDatabaseMerge, MSIHANDLETYPE_DATABASE);
+ db = msihandle2msiinfo(hDatabase, MSIOBJECTTYPE_DATABASE);
+ merge = msihandle2msiinfo(hDatabaseMerge, MSIOBJECTTYPE_DATABASE);
if (!db || !merge)
{
r = ERROR_INVALID_HANDLE;
@@ -2009,14 +2006,14 @@ done:
return r;
}
-MSIDBSTATE WINAPI MsiGetDatabaseState( MSIHANDLE handle )
+MSIDBSTATE WINAPI MsiGetDatabaseState( PMSIOBJECT handle )
{
MSIDBSTATE ret = MSIDBSTATE_READ;
MSIDATABASE *db;
TRACE("%d\n", handle);
- db = msihandle2msiinfo( handle, MSIHANDLETYPE_DATABASE );
+ db = msihandle2msiinfo( handle, MSIOBJECTTYPE_DATABASE );
if( !db )
return ERROR_INVALID_HANDLE;
if (db->mode != MSIDBOPEN_READONLY )
diff --git a/libmsi/handle.c b/libmsi/handle.c
index cf6f901..bf1fb98 100644
--- a/libmsi/handle.c
+++ b/libmsi/handle.c
@@ -31,16 +31,6 @@
#include "msipriv.h"
-static CRITICAL_SECTION MSI_handle_cs;
-static CRITICAL_SECTION_DEBUG MSI_handle_cs_debug =
-{
- 0, 0, &MSI_handle_cs,
- { &MSI_handle_cs_debug.ProcessLocksList,
- &MSI_handle_cs_debug.ProcessLocksList },
- 0, 0, { (DWORD_PTR)(__FILE__ ": MSI_handle_cs") }
-};
-static CRITICAL_SECTION MSI_handle_cs = { &MSI_handle_cs_debug, -1, 0, 0, 0, 0 };
-
static CRITICAL_SECTION MSI_object_cs;
static CRITICAL_SECTION_DEBUG MSI_object_cs_debug =
{
@@ -51,109 +41,24 @@ static CRITICAL_SECTION_DEBUG MSI_object_cs_debug =
};
static CRITICAL_SECTION MSI_object_cs = { &MSI_object_cs_debug, -1, 0, 0, 0, 0 };
-typedef struct msi_handle_info_t
-{
- MSIOBJECTHDR *obj;
- DWORD dwThreadId;
-} msi_handle_info;
-
-static msi_handle_info *msihandletable = NULL;
-static unsigned int msihandletable_size = 0;
-
-void msi_free_handle_table(void)
-{
- msi_free( msihandletable );
- msihandletable = NULL;
- msihandletable_size = 0;
- DeleteCriticalSection(&MSI_handle_cs);
- DeleteCriticalSection(&MSI_object_cs);
-}
-
-static MSIHANDLE alloc_handle_table_entry(void)
-{
- UINT i;
-
- /* find a slot */
- for(i=0; i<msihandletable_size; i++)
- if( !msihandletable[i].obj )
- break;
- if( i==msihandletable_size )
- {
- msi_handle_info *p;
- int newsize;
- if (msihandletable_size == 0)
- {
- newsize = 256;
- p = msi_alloc_zero(newsize*sizeof(msi_handle_info));
- }
- else
- {
- newsize = msihandletable_size * 2;
- p = msi_realloc_zero(msihandletable,
- newsize*sizeof(msi_handle_info));
- }
- if (!p)
- return 0;
- msihandletable = p;
- msihandletable_size = newsize;
- }
- return i + 1;
-}
-
-MSIHANDLE alloc_msihandle( MSIOBJECTHDR *obj )
-{
- msi_handle_info *entry;
- MSIHANDLE ret;
-
- EnterCriticalSection( &MSI_handle_cs );
-
- ret = alloc_handle_table_entry();
- if (ret)
- {
- entry = &msihandletable[ ret - 1 ];
- msiobj_addref( obj );
- entry->obj = obj;
- entry->dwThreadId = GetCurrentThreadId();
- }
-
- LeaveCriticalSection( &MSI_handle_cs );
-
- TRACE("%p -> %d\n", obj, ret );
-
- return ret;
-}
-
-void *msihandle2msiinfo(MSIHANDLE handle, UINT type)
+void *msihandle2msiinfo(PMSIOBJECT obj, UINT type)
{
- MSIOBJECTHDR *ret = NULL;
-
- EnterCriticalSection( &MSI_handle_cs );
- handle--;
- if( handle >= msihandletable_size )
- goto out;
- if( !msihandletable[handle].obj )
- goto out;
- if( msihandletable[handle].obj->magic != MSIHANDLE_MAGIC )
- goto out;
- if( type && (msihandletable[handle].obj->type != type) )
- goto out;
- ret = msihandletable[handle].obj;
- msiobj_addref( ret );
-
-out:
- LeaveCriticalSection( &MSI_handle_cs );
+ if( !obj )
+ return NULL;
+ if( type && obj->type != type )
+ return NULL;
- return ret;
+ msiobj_addref( obj );
+ return obj;
}
void *alloc_msiobject(UINT type, UINT size, msihandledestructor destroy )
{
- MSIOBJECTHDR *info;
+ MSIOBJECT *info;
info = msi_alloc_zero( size );
if( info )
{
- info->magic = MSIHANDLE_MAGIC;
info->type = type;
info->refcount = 1;
info->destructor = destroy;
@@ -162,50 +67,38 @@ void *alloc_msiobject(UINT type, UINT size, msihandledestructor destroy )
return info;
}
-void msiobj_addref( MSIOBJECTHDR *info )
+void msiobj_addref( MSIOBJECT *info )
{
if( !info )
return;
- if( info->magic != MSIHANDLE_MAGIC )
- {
- ERR("Invalid handle!\n");
- return;
- }
-
InterlockedIncrement(&info->refcount);
}
-void msiobj_lock( MSIOBJECTHDR *info )
+void msiobj_lock( MSIOBJECT *obj )
{
EnterCriticalSection( &MSI_object_cs );
}
-void msiobj_unlock( MSIOBJECTHDR *info )
+void msiobj_unlock( MSIOBJECT *obj )
{
LeaveCriticalSection( &MSI_object_cs );
}
-int msiobj_release( MSIOBJECTHDR *info )
+int msiobj_release( MSIOBJECT *obj )
{
int ret;
- if( !info )
- return -1;
-
- if( info->magic != MSIHANDLE_MAGIC )
- {
- ERR("Invalid handle!\n");
+ if( !obj )
return -1;
- }
- ret = InterlockedDecrement( &info->refcount );
+ ret = InterlockedDecrement( &obj->refcount );
if( ret==0 )
{
- if( info->destructor )
- info->destructor( info );
- msi_free( info );
- TRACE("object %p destroyed\n", info);
+ if( obj->destructor )
+ obj->destructor( obj );
+ msi_free( obj );
+ TRACE("object %p destroyed\n", obj);
}
return ret;
@@ -214,72 +107,12 @@ int msiobj_release( MSIOBJECTHDR *info )
/***********************************************************
* MsiCloseHandle [MSI.@]
*/
-UINT WINAPI MsiCloseHandle(MSIHANDLE handle)
+UINT WINAPI MsiCloseHandle(PMSIOBJECT obj)
{
- MSIOBJECTHDR *info = NULL;
- UINT ret = ERROR_INVALID_HANDLE;
-
- TRACE("%x\n",handle);
-
- if (!handle)
- return ERROR_SUCCESS;
-
- EnterCriticalSection( &MSI_handle_cs );
-
- handle--;
- if (handle >= msihandletable_size)
- goto out;
-
- info = msihandletable[handle].obj;
- if( !info )
- goto out;
-
- if( info->magic != MSIHANDLE_MAGIC )
- {
- ERR("Invalid handle!\n");
- goto out;
- }
-
- msihandletable[handle].obj = NULL;
- msihandletable[handle].dwThreadId = 0;
+ TRACE("%x\n",obj);
- ret = ERROR_SUCCESS;
-
- TRACE("handle %x destroyed\n", handle+1);
-out:
- LeaveCriticalSection( &MSI_handle_cs );
- if( info )
- msiobj_release( info );
-
- return ret;
-}
-
-/***********************************************************
- * MsiCloseAllHandles [MSI.@]
- *
- * Closes all handles owned by the current thread
- *
- * RETURNS:
- * The number of handles closed
- */
-UINT WINAPI MsiCloseAllHandles(void)
-{
- UINT i, n=0;
-
- TRACE("\n");
-
- EnterCriticalSection( &MSI_handle_cs );
- for(i=0; i<msihandletable_size; i++)
- {
- if(msihandletable[i].dwThreadId == GetCurrentThreadId())
- {
- LeaveCriticalSection( &MSI_handle_cs );
- MsiCloseHandle( i+1 );
- EnterCriticalSection( &MSI_handle_cs );
- n++;
- }
- }
- LeaveCriticalSection( &MSI_handle_cs );
+ if( obj )
+ msiobj_release( obj );
- return n;
+ return ERROR_SUCCESS;
}
diff --git a/libmsi/msipriv.h b/libmsi/msipriv.h
index 0e950ee..ae7d862 100644
--- a/libmsi/msipriv.h
+++ b/libmsi/msipriv.h
@@ -55,12 +55,12 @@ typedef struct tagMSITABLE MSITABLE;
struct string_table;
typedef struct string_table string_table;
-struct tagMSIOBJECTHDR;
-typedef struct tagMSIOBJECTHDR MSIOBJECTHDR;
+struct tagMSIOBJECT;
+typedef struct tagMSIOBJECT MSIOBJECT;
-typedef VOID (*msihandledestructor)( MSIOBJECTHDR * );
+typedef VOID (*msihandledestructor)( MSIOBJECT * );
-struct tagMSIOBJECTHDR
+struct tagMSIOBJECT
{
UINT magic;
UINT type;
@@ -73,7 +73,7 @@ struct tagMSIOBJECTHDR
typedef struct tagMSIDATABASE
{
- MSIOBJECTHDR hdr;
+ MSIOBJECT hdr;
IStorage *storage;
string_table *strings;
UINT bytes_per_strref;
@@ -91,7 +91,7 @@ typedef struct tagMSIVIEW MSIVIEW;
typedef struct tagMSIQUERY
{
- MSIOBJECTHDR hdr;
+ MSIOBJECT hdr;
MSIVIEW *view;
UINT row;
MSIDATABASE *db;
@@ -113,7 +113,7 @@ typedef struct tagMSIFIELD
typedef struct tagMSIRECORD
{
- MSIOBJECTHDR hdr;
+ MSIOBJECT hdr;
UINT count; /* as passed to MsiCreateRecord */
MSIFIELD fields[1]; /* nb. array size is count+1 */
} MSIRECORD;
@@ -256,7 +256,7 @@ typedef struct tagMSIVIEWOPS
struct tagMSIVIEW
{
- MSIOBJECTHDR hdr;
+ MSIOBJECT hdr;
const MSIVIEWOPS *ops;
MSIDBERROR error;
const WCHAR *error_column;
@@ -266,21 +266,21 @@ struct tagMSIVIEW
typedef struct tagMSISUMMARYINFO
{
- MSIOBJECTHDR hdr;
+ MSIOBJECT hdr;
IStorage *storage;
DWORD update_count;
PROPVARIANT property[MSI_MAX_PROPS];
} MSISUMMARYINFO;
-#define MSIHANDLETYPE_ANY 0
-#define MSIHANDLETYPE_DATABASE 1
-#define MSIHANDLETYPE_SUMMARYINFO 2
-#define MSIHANDLETYPE_VIEW 3
-#define MSIHANDLETYPE_RECORD 4
-#define MSIHANDLETYPE_PACKAGE 5
-#define MSIHANDLETYPE_PREVIEW 6
+#define MSIOBJECTTYPE_ANY 0
+#define MSIOBJECTTYPE_DATABASE 1
+#define MSIOBJECTTYPE_SUMMARYINFO 2
+#define MSIOBJECTTYPE_VIEW 3
+#define MSIOBJECTTYPE_RECORD 4
+#define MSIOBJECTTYPE_PACKAGE 5
+#define MSIOBJECTTYPE_PREVIEW 6
-#define MSIHANDLE_MAGIC 0x4d434923
+#define PMSIOBJECT_MAGIC 0x4d434923
/* handle unicode/ascii output in the Msi* API functions */
typedef struct {
@@ -302,14 +302,14 @@ typedef struct {
UINT msi_strcpy_to_awstring( LPCWSTR str, awstring *awbuf, DWORD *sz );
/* handle functions */
-extern void *msihandle2msiinfo(MSIHANDLE handle, UINT type);
-extern MSIHANDLE alloc_msihandle( MSIOBJECTHDR * );
-extern MSIHANDLE alloc_msi_remote_handle( IUnknown *unk );
+extern void *msihandle2msiinfo(PMSIOBJECT handle, UINT type);
+extern PMSIOBJECT alloc_msihandle( MSIOBJECT * );
+extern PMSIOBJECT alloc_msi_remote_handle( IUnknown *unk );
extern void *alloc_msiobject(UINT type, UINT size, msihandledestructor destroy );
-extern void msiobj_addref(MSIOBJECTHDR *);
-extern int msiobj_release(MSIOBJECTHDR *);
-extern void msiobj_lock(MSIOBJECTHDR *);
-extern void msiobj_unlock(MSIOBJECTHDR *);
+extern void msiobj_addref(MSIOBJECT *);
+extern int msiobj_release(MSIOBJECT *);
+extern void msiobj_lock(MSIOBJECT *);
+extern void msiobj_unlock(MSIOBJECT *);
extern void msi_free_handle_table(void);
extern void free_cached_tables( MSIDATABASE *db );
@@ -348,7 +348,7 @@ extern UINT MSI_DatabaseApplyTransformW( MSIDATABASE *db,
extern void append_storage_to_db( MSIDATABASE *db, IStorage *stg );
/* record internals */
-extern void MSI_CloseRecord( MSIOBJECTHDR * );
+extern void MSI_CloseRecord( MSIOBJECT * );
extern UINT MSI_RecordSetIStream( MSIRECORD *, UINT, IStream *);
extern UINT MSI_RecordGetIStream( MSIRECORD *, UINT, IStream **);
extern const WCHAR *MSI_RecordGetString( const MSIRECORD *, UINT );
diff --git a/libmsi/msiquery.c b/libmsi/msiquery.c
index f624879..2c73a90 100644
--- a/libmsi/msiquery.c
+++ b/libmsi/msiquery.c
@@ -39,7 +39,7 @@
#include "initguid.h"
-static void MSI_CloseView( MSIOBJECTHDR *arg )
+static void MSI_CloseView( MSIOBJECT *arg )
{
MSIQUERY *query = (MSIQUERY*) arg;
struct list *ptr, *t;
@@ -83,8 +83,8 @@ UINT VIEW_find_column( MSIVIEW *table, LPCWSTR name, LPCWSTR table_name, UINT *n
return ERROR_INVALID_PARAMETER;
}
-UINT WINAPI MsiDatabaseOpenViewA(MSIHANDLE hdb,
- LPCSTR szQuery, MSIHANDLE *phView)
+UINT WINAPI MsiDatabaseOpenViewA(PMSIOBJECT hdb,
+ LPCSTR szQuery, PMSIOBJECT *phView)
{
UINT r;
LPWSTR szwQuery;
@@ -118,7 +118,7 @@ UINT MSI_DatabaseOpenViewW(MSIDATABASE *db,
return ERROR_INVALID_PARAMETER;
/* pre allocate a handle to hold a pointer to the view */
- query = alloc_msiobject( MSIHANDLETYPE_VIEW, sizeof (MSIQUERY),
+ query = alloc_msiobject( MSIOBJECTTYPE_VIEW, sizeof (MSIQUERY),
MSI_CloseView );
if( !query )
return ERROR_FUNCTION_FAILED;
@@ -236,8 +236,8 @@ MSIRECORD *MSI_QueryGetRecord( MSIDATABASE *db, LPCWSTR fmt, ... )
return rec;
}
-UINT WINAPI MsiDatabaseOpenViewW(MSIHANDLE hdb,
- LPCWSTR szQuery, MSIHANDLE *phView)
+UINT WINAPI MsiDatabaseOpenViewW(PMSIOBJECT hdb,
+ LPCWSTR szQuery, PMSIOBJECT *phView)
{
MSIDATABASE *db;
MSIQUERY *query = NULL;
@@ -245,18 +245,13 @@ UINT WINAPI MsiDatabaseOpenViewW(MSIHANDLE hdb,
TRACE("%s %p\n", debugstr_w(szQuery), phView);
- db = msihandle2msiinfo( hdb, MSIHANDLETYPE_DATABASE );
+ db = msihandle2msiinfo( hdb, MSIOBJECTTYPE_DATABASE );
if( !db )
return ERROR_INVALID_HANDLE;
ret = MSI_DatabaseOpenViewW( db, szQuery, &query );
if( ret == ERROR_SUCCESS )
- {
- *phView = alloc_msihandle( &query->hdr );
- if (! *phView)
- ret = ERROR_NOT_ENOUGH_MEMORY;
- msiobj_release( &query->hdr );
- }
+ *phView = &query->hdr;
msiobj_release( &db->hdr );
return ret;
@@ -361,7 +356,7 @@ UINT MSI_ViewFetch(MSIQUERY *query, MSIRECORD **prec)
return r;
}
-UINT WINAPI MsiViewFetch(MSIHANDLE hView, MSIHANDLE *record)
+UINT WINAPI MsiViewFetch(PMSIOBJECT hView, PMSIOBJECT *record)
{
MSIQUERY *query;
MSIRECORD *rec = NULL;
@@ -373,17 +368,12 @@ UINT WINAPI MsiViewFetch(MSIHANDLE hView, MSIHANDLE *record)
return ERROR_INVALID_PARAMETER;
*record = 0;
- query = msihandle2msiinfo( hView, MSIHANDLETYPE_VIEW );
+ query = msihandle2msiinfo( hView, MSIOBJECTTYPE_VIEW );
if( !query )
return ERROR_INVALID_HANDLE;
ret = MSI_ViewFetch( query, &rec );
if( ret == ERROR_SUCCESS )
- {
- *record = alloc_msihandle( &rec->hdr );
- if (! *record)
- ret = ERROR_NOT_ENOUGH_MEMORY;
- msiobj_release( &rec->hdr );
- }
+ *record = &rec->hdr;
msiobj_release( &query->hdr );
return ret;
}
@@ -403,14 +393,14 @@ UINT MSI_ViewClose(MSIQUERY *query)
return view->ops->close( view );
}
-UINT WINAPI MsiViewClose(MSIHANDLE hView)
+UINT WINAPI MsiViewClose(PMSIOBJECT hView)
{
MSIQUERY *query;
UINT ret;
TRACE("%d\n", hView );
- query = msihandle2msiinfo( hView, MSIHANDLETYPE_VIEW );
+ query = msihandle2msiinfo( hView, MSIOBJECTTYPE_VIEW );
if( !query )
return ERROR_INVALID_HANDLE;
@@ -435,7 +425,7 @@ UINT MSI_ViewExecute(MSIQUERY *query, MSIRECORD *rec )
return view->ops->execute( view, rec );
}
-UINT WINAPI MsiViewExecute(MSIHANDLE hView, MSIHANDLE hRec)
+UINT WINAPI MsiViewExecute(PMSIOBJECT hView, PMSIOBJECT hRec)
{
MSIQUERY *query;
MSIRECORD *rec = NULL;
@@ -443,13 +433,13 @@ UINT WINAPI MsiViewExecute(MSIHANDLE hView, MSIHANDLE hRec)
TRACE("%d %d\n", hView, hRec);
- query = msihandle2msiinfo( hView, MSIHANDLETYPE_VIEW );
+ query = msihandle2msiinfo( hView, MSIOBJECTTYPE_VIEW );
if( !query )
return ERROR_INVALID_HANDLE;
if( hRec )
{
- rec = msihandle2msiinfo( hRec, MSIHANDLETYPE_RECORD );
+ rec = msihandle2msiinfo( hRec, MSIOBJECTTYPE_RECORD );
if( !rec )
{
ret = ERROR_INVALID_HANDLE;
@@ -545,7 +535,7 @@ UINT MSI_ViewGetColumnInfo( MSIQUERY *query, MSICOLINFO info, MSIRECORD **prec )
return ERROR_SUCCESS;
}
-UINT WINAPI MsiViewGetColumnInfo(MSIHANDLE hView, MSICOLINFO info, MSIHANDLE *hRec)
+UINT WINAPI MsiViewGetColumnInfo(PMSIOBJECT hView, MSICOLINFO info, PMSIOBJECT *hRec)
{
MSIQUERY *query = NULL;
MSIRECORD *rec = NULL;
@@ -559,18 +549,13 @@ UINT WINAPI MsiViewGetColumnInfo(MSIHANDLE hView, MSICOLINFO info, MSIHANDLE *hR
if( info != MSICOLINFO_NAMES && info != MSICOLINFO_TYPES )
return ERROR_INVALID_PARAMETER;
- query = msihandle2msiinfo( hView, MSIHANDLETYPE_VIEW );
+ query = msihandle2msiinfo( hView, MSIOBJECTTYPE_VIEW );
if( !query )
return ERROR_INVALID_HANDLE;
r = MSI_ViewGetColumnInfo( query, info, &rec );
if ( r == ERROR_SUCCESS )
- {
- *hRec = alloc_msihandle( &rec->hdr );
- if ( !*hRec )
- r = ERROR_NOT_ENOUGH_MEMORY;
- msiobj_release( &rec->hdr );
- }
+ *hRec = &rec->hdr;
msiobj_release( &query->hdr );
@@ -599,8 +584,8 @@ UINT MSI_ViewModify( MSIQUERY *query, MSIMODIFY mode, MSIRECORD *rec )
return r;
}
-UINT WINAPI MsiViewModify( MSIHANDLE hView, MSIMODIFY eModifyMode,
- MSIHANDLE hRecord)
+UINT WINAPI MsiViewModify( PMSIOBJECT hView, MSIMODIFY eModifyMode,
+ PMSIOBJECT hRecord)
{
MSIQUERY *query = NULL;
MSIRECORD *rec = NULL;
@@ -608,11 +593,11 @@ UINT WINAPI MsiViewModify( MSIHANDLE hView, MSIMODIFY eModifyMode,
TRACE("%d %x %d\n", hView, eModifyMode, hRecord);
- query = msihandle2msiinfo( hView, MSIHANDLETYPE_VIEW );
+ query = msihandle2msiinfo( hView, MSIOBJECTTYPE_VIEW );
if( !query )
return ERROR_INVALID_HANDLE;
- rec = msihandle2msiinfo( hRecord, MSIHANDLETYPE_RECORD );
+ rec = msihandle2msiinfo( hRecord, MSIOBJECTTYPE_RECORD );
r = MSI_ViewModify( query, eModifyMode, rec );
msiobj_release( &query->hdr );
@@ -622,7 +607,7 @@ UINT WINAPI MsiViewModify( MSIHANDLE hView, MSIMODIFY eModifyMode,
return r;
}
-MSIDBERROR WINAPI MsiViewGetErrorW( MSIHANDLE handle, LPWSTR buffer, LPDWORD buflen )
+MSIDBERROR WINAPI MsiViewGetErrorW( PMSIOBJECT handle, LPWSTR buffer, LPDWORD buflen )
{
MSIQUERY *query;
const WCHAR *column;
@@ -634,7 +619,7 @@ MSIDBERROR WINAPI MsiViewGetErrorW( MSIHANDLE handle, LPWSTR buffer, LPDWORD buf
if (!buflen)
return MSIDBERROR_INVALIDARG;
- query = msihandle2msiinfo( handle, MSIHANDLETYPE_VIEW );
+ query = msihandle2msiinfo( handle, MSIOBJECTTYPE_VIEW );
if( !query )
return MSIDBERROR_INVALIDARG;
@@ -654,7 +639,7 @@ MSIDBERROR WINAPI MsiViewGetErrorW( MSIHANDLE handle, LPWSTR buffer, LPDWORD buf
return r;
}
-MSIDBERROR WINAPI MsiViewGetErrorA( MSIHANDLE handle, LPSTR buffer, LPDWORD buflen )
+MSIDBERROR WINAPI MsiViewGetErrorA( PMSIOBJECT handle, LPSTR buffer, LPDWORD buflen )
{
MSIQUERY *query;
const WCHAR *column;
@@ -666,7 +651,7 @@ MSIDBERROR WINAPI MsiViewGetErrorA( MSIHANDLE handle, LPSTR buffer, LPDWORD bufl
if (!buflen)
return MSIDBERROR_INVALIDARG;
- query = msihandle2msiinfo( handle, MSIHANDLETYPE_VIEW );
+ query = msihandle2msiinfo( handle, MSIOBJECTTYPE_VIEW );
if (!query)
return MSIDBERROR_INVALIDARG;
@@ -686,7 +671,7 @@ MSIDBERROR WINAPI MsiViewGetErrorA( MSIHANDLE handle, LPSTR buffer, LPDWORD bufl
return r;
}
-MSIHANDLE WINAPI MsiGetLastErrorRecord( void )
+PMSIOBJECT WINAPI MsiGetLastErrorRecord( void )
{
FIXME("\n");
return 0;
@@ -728,13 +713,13 @@ end:
return ret;
}
-UINT WINAPI MsiDatabaseApplyTransformW( MSIHANDLE hdb,
+UINT WINAPI MsiDatabaseApplyTransformW( PMSIOBJECT hdb,
LPCWSTR szTransformFile, int iErrorCond)
{
MSIDATABASE *db;
UINT r;
- db = msihandle2msiinfo( hdb, MSIHANDLETYPE_DATABASE );
+ db = msihandle2msiinfo( hdb, MSIOBJECTTYPE_DATABASE );
if( !db )
return ERROR_INVALID_HANDLE;
r = MSI_DatabaseApplyTransformW( db, szTransformFile, iErrorCond );
@@ -742,7 +727,7 @@ UINT WINAPI MsiDatabaseApplyTransformW( MSIHANDLE hdb,
return r;
}
-UINT WINAPI MsiDatabaseApplyTransformA( MSIHANDLE hdb,
+UINT WINAPI MsiDatabaseApplyTransformA( PMSIOBJECT hdb,
LPCSTR szTransformFile, int iErrorCond)
{
LPWSTR wstr;
@@ -761,14 +746,14 @@ UINT WINAPI MsiDatabaseApplyTransformA( MSIHANDLE hdb,
return ret;
}
-UINT WINAPI MsiDatabaseCommit( MSIHANDLE hdb )
+UINT WINAPI MsiDatabaseCommit( PMSIOBJECT hdb )
{
MSIDATABASE *db;
UINT r;
TRACE("%d\n", hdb);
- db = msihandle2msiinfo( hdb, MSIHANDLETYPE_DATABASE );
+ db = msihandle2msiinfo( hdb, MSIOBJECTTYPE_DATABASE );
if( !db )
return ERROR_INVALID_HANDLE;
@@ -869,8 +854,8 @@ UINT MSI_DatabaseGetPrimaryKeys( MSIDATABASE *db,
return r;
}
-UINT WINAPI MsiDatabaseGetPrimaryKeysW( MSIHANDLE hdb,
- LPCWSTR table, MSIHANDLE* phRec )
+UINT WINAPI MsiDatabaseGetPrimaryKeysW( PMSIOBJECT hdb,
+ LPCWSTR table, PMSIOBJECT* phRec )
{
MSIRECORD *rec = NULL;
MSIDATABASE *db;
@@ -878,25 +863,20 @@ UINT WINAPI MsiDatabaseGetPrimaryKeysW( MSIHANDLE hdb,
TRACE("%d %s %p\n", hdb, debugstr_w(table), phRec);
- db = msihandle2msiinfo( hdb, MSIHANDLETYPE_DATABASE );
+ db = msihandle2msiinfo( hdb, MSIOBJECTTYPE_DATABASE );
if( !db )
return ERROR_INVALID_HANDLE;
r = MSI_DatabaseGetPrimaryKeys( db, table, &rec );
if( r == ERROR_SUCCESS )
- {
- *phRec = alloc_msihandle( &rec->hdr );
- if (! *phRec)
- r = ERROR_NOT_ENOUGH_MEMORY;
- msiobj_release( &rec->hdr );
- }
+ *phRec = &rec->hdr;
msiobj_release( &db->hdr );
return r;
}
-UINT WINAPI MsiDatabaseGetPrimaryKeysA(MSIHANDLE hdb,
- LPCSTR table, MSIHANDLE* phRec)
+UINT WINAPI MsiDatabaseGetPrimaryKeysA(PMSIOBJECT hdb,
+ LPCSTR table, PMSIOBJECT* phRec)
{
LPWSTR szwTable = NULL;
UINT r;
@@ -916,7 +896,7 @@ UINT WINAPI MsiDatabaseGetPrimaryKeysA(MSIHANDLE hdb,
}
MSICONDITION WINAPI MsiDatabaseIsTablePersistentA(
- MSIHANDLE hDatabase, LPCSTR szTableName)
+ PMSIOBJECT hDatabase, LPCSTR szTableName)
{
LPWSTR szwTableName = NULL;
MSICONDITION r;
@@ -936,14 +916,14 @@ MSICONDITION WINAPI MsiDatabaseIsTablePersistentA(
}
MSICONDITION WINAPI MsiDatabaseIsTablePersistentW(
- MSIHANDLE hDatabase, LPCWSTR szTableName)
+ PMSIOBJECT hDatabase, LPCWSTR szTableName)
{
MSIDATABASE *db;
MSICONDITION r;
TRACE("%x %s\n", hDatabase, debugstr_w(szTableName));
- db = msihandle2msiinfo( hDatabase, MSIHANDLETYPE_DATABASE );
+ db = msihandle2msiinfo( hDatabase, MSIOBJECTTYPE_DATABASE );
if( !db )
return MSICONDITION_ERROR;
diff --git a/libmsi/record.c b/libmsi/record.c
index 9a0ee77..bfa4b58 100644
--- a/libmsi/record.c
+++ b/libmsi/record.c
@@ -63,7 +63,7 @@ static void MSI_FreeField( MSIFIELD *field )
}
}
-void MSI_CloseRecord( MSIOBJECTHDR *arg )
+void MSI_CloseRecord( MSIOBJECT *arg )
{
MSIRECORD *rec = (MSIRECORD *) arg;
UINT i;
@@ -83,26 +83,20 @@ MSIRECORD *MSI_CreateRecord( UINT cParams )
return NULL;
len = sizeof (MSIRECORD) + sizeof (MSIFIELD)*cParams;
- rec = alloc_msiobject( MSIHANDLETYPE_RECORD, len, MSI_CloseRecord );
+ rec = alloc_msiobject( MSIOBJECTTYPE_RECORD, len, MSI_CloseRecord );
if( rec )
rec->count = cParams;
return rec;
}
-MSIHANDLE WINAPI MsiCreateRecord( UINT cParams )
+PMSIOBJECT WINAPI MsiCreateRecord( UINT cParams )
{
MSIRECORD *rec;
- MSIHANDLE ret = 0;
TRACE("%d\n", cParams);
rec = MSI_CreateRecord( cParams );
- if( rec )
- {
- ret = alloc_msihandle( &rec->hdr );
- msiobj_release( &rec->hdr );
- }
- return ret;
+ return &rec->hdr;
}
UINT MSI_RecordGetFieldCount( const MSIRECORD *rec )
@@ -110,14 +104,14 @@ UINT MSI_RecordGetFieldCount( const MSIRECORD *rec )
return rec->count;
}
-UINT WINAPI MsiRecordGetFieldCount( MSIHANDLE handle )
+UINT WINAPI MsiRecordGetFieldCount( PMSIOBJECT handle )
{
MSIRECORD *rec;
UINT ret;
TRACE("%d\n", handle );
- rec = msihandle2msiinfo( handle, MSIHANDLETYPE_RECORD );
+ rec = msihandle2msiinfo( handle, MSIOBJECTTYPE_RECORD );
if( !rec )
return -1;
@@ -254,14 +248,14 @@ int MSI_RecordGetInteger( MSIRECORD *rec, UINT iField)
return MSI_NULL_INTEGER;
}
-int WINAPI MsiRecordGetInteger( MSIHANDLE handle, UINT iField)
+int WINAPI MsiRecordGetInteger( PMSIOBJECT handle, UINT iField)
{
MSIRECORD *rec;
UINT ret;
TRACE("%d %d\n", handle, iField );
- rec = msihandle2msiinfo( handle, MSIHANDLETYPE_RECORD );
+ rec = msihandle2msiinfo( handle, MSIOBJECTTYPE_RECORD );
if( !rec )
return MSI_NULL_INTEGER;
@@ -273,14 +267,14 @@ int WINAPI MsiRecordGetInteger( MSIHANDLE handle, UINT iField)
return ret;
}
-UINT WINAPI MsiRecordClearData( MSIHANDLE handle )
+UINT WINAPI MsiRecordClearData( PMSIOBJECT handle )
{
MSIRECORD *rec;
UINT i;
TRACE("%d\n", handle );
- rec = msihandle2msiinfo( handle, MSIHANDLETYPE_RECORD );
+ rec = msihandle2msiinfo( handle, MSIOBJECTTYPE_RECORD );
if( !rec )
return ERROR_INVALID_HANDLE;
@@ -325,14 +319,14 @@ UINT MSI_RecordSetInteger( MSIRECORD *rec, UINT iField, int iVal )
return ERROR_SUCCESS;
}
-UINT WINAPI MsiRecordSetInteger( MSIHANDLE handle, UINT iField, int iVal )
+UINT WINAPI MsiRecordSetInteger( PMSIOBJECT handle, UINT iField, int iVal )
{
MSIRECORD *rec;
UINT ret;
TRACE("%d %u %d\n", handle, iField, iVal);
- rec = msihandle2msiinfo( handle, MSIHANDLETYPE_RECORD );
+ rec = msihandle2msiinfo( handle, MSIOBJECTTYPE_RECORD );
if( !rec )
return ERROR_INVALID_HANDLE;
@@ -355,14 +349,14 @@ BOOL MSI_RecordIsNull( MSIRECORD *rec, UINT iField )
return r;
}
-BOOL WINAPI MsiRecordIsNull( MSIHANDLE handle, UINT iField )
+BOOL WINAPI MsiRecordIsNull( PMSIOBJECT handle, UINT iField )
{
MSIRECORD *rec;
UINT ret;
TRACE("%d %d\n", handle, iField );
- rec = msihandle2msiinfo( handle, MSIHANDLETYPE_RECORD );
+ rec = msihandle2msiinfo( handle, MSIOBJECTTYPE_RECORD );
if( !rec )
return 0;
msiobj_lock( &rec->hdr );
@@ -426,7 +420,7 @@ UINT MSI_RecordGetStringA(MSIRECORD *rec, UINT iField,
return ret;
}
-UINT WINAPI MsiRecordGetStringA(MSIHANDLE handle, UINT iField,
+UINT WINAPI MsiRecordGetStringA(PMSIOBJECT handle, UINT iField,
LPSTR szValue, LPDWORD pcchValue)
{
MSIRECORD *rec;
@@ -434,7 +428,7 @@ UINT WINAPI MsiRecordGetStringA(MSIHANDLE handle, UINT iField,
TRACE("%d %d %p %p\n", handle, iField, szValue, pcchValue);
- rec = msihandle2msiinfo( handle, MSIHANDLETYPE_RECORD );
+ rec = msihandle2msiinfo( handle, MSIOBJECTTYPE_RECORD );
if( !rec )
return ERROR_INVALID_HANDLE;
msiobj_lock( &rec->hdr );
@@ -502,7 +496,7 @@ UINT MSI_RecordGetStringW(MSIRECORD *rec, UINT iField,
return ret;
}
-UINT WINAPI MsiRecordGetStringW(MSIHANDLE handle, UINT iField,
+UINT WINAPI MsiRecordGetStringW(PMSIOBJECT handle, UINT iField,
LPWSTR szValue, LPDWORD pcchValue)
{
MSIRECORD *rec;
@@ -510,7 +504,7 @@ UINT WINAPI MsiRecordGetStringW(MSIHANDLE handle, UINT iField,
TRACE("%d %d %p %p\n", handle, iField, szValue, pcchValue);
- rec = msihandle2msiinfo( handle, MSIHANDLETYPE_RECORD );
+ rec = msihandle2msiinfo( handle, MSIOBJECTTYPE_RECORD );
if( !rec )
return ERROR_INVALID_HANDLE;
@@ -553,14 +547,14 @@ static UINT MSI_RecordDataSize(MSIRECORD *rec, UINT iField)
return 0;
}
-UINT WINAPI MsiRecordDataSize(MSIHANDLE handle, UINT iField)
+UINT WINAPI MsiRecordDataSize(PMSIOBJECT handle, UINT iField)
{
MSIRECORD *rec;
UINT ret;
TRACE("%d %d\n", handle, iField);
- rec = msihandle2msiinfo( handle, MSIHANDLETYPE_RECORD );
+ rec = msihandle2msiinfo( handle, MSIOBJECTTYPE_RECORD );
if( !rec )
return 0;
msiobj_lock( &rec->hdr );
@@ -595,14 +589,14 @@ static UINT MSI_RecordSetStringA( MSIRECORD *rec, UINT iField, LPCSTR szValue )
return 0;
}
-UINT WINAPI MsiRecordSetStringA( MSIHANDLE handle, UINT iField, LPCSTR szValue )
+UINT WINAPI MsiRecordSetStringA( PMSIOBJECT handle, UINT iField, LPCSTR szValue )
{
MSIRECORD *rec;
UINT ret;
TRACE("%d %d %s\n", handle, iField, debugstr_a(szValue));
- rec = msihandle2msiinfo( handle, MSIHANDLETYPE_RECORD );
+ rec = msihandle2msiinfo( handle, MSIOBJECTTYPE_RECORD );
if( !rec )
return ERROR_INVALID_HANDLE;
msiobj_lock( &rec->hdr );
@@ -638,14 +632,14 @@ UINT MSI_RecordSetStringW( MSIRECORD *rec, UINT iField, LPCWSTR szValue )
return 0;
}
-UINT WINAPI MsiRecordSetStringW( MSIHANDLE handle, UINT iField, LPCWSTR szValue )
+UINT WINAPI MsiRecordSetStringW( PMSIOBJECT handle, UINT iField, LPCWSTR szValue )
{
MSIRECORD *rec;
UINT ret;
TRACE("%d %d %s\n", handle, iField, debugstr_w(szValue));
- rec = msihandle2msiinfo( handle, MSIHANDLETYPE_RECORD );
+ rec = msihandle2msiinfo( handle, MSIOBJECTTYPE_RECORD );
if( !rec )
return ERROR_INVALID_HANDLE;
@@ -758,7 +752,7 @@ UINT MSI_RecordSetStreamFromFileW(MSIRECORD *rec, UINT iField, LPCWSTR szFilenam
return ERROR_SUCCESS;
}
-UINT WINAPI MsiRecordSetStreamA(MSIHANDLE hRecord, UINT iField, LPCSTR szFilename)
+UINT WINAPI MsiRecordSetStreamA(PMSIOBJECT hRecord, UINT iField, LPCSTR szFilename)
{
LPWSTR wstr = NULL;
UINT ret;
@@ -777,14 +771,14 @@ UINT WINAPI MsiRecordSetStreamA(MSIHANDLE hRecord, UINT iField, LPCSTR szFilenam
return ret;
}
-UINT WINAPI MsiRecordSetStreamW(MSIHANDLE handle, UINT iField, LPCWSTR szFilename)
+UINT WINAPI MsiRecordSetStreamW(PMSIOBJECT handle, UINT iField, LPCWSTR szFilename)
{
MSIRECORD *rec;
UINT ret;
TRACE("%d %d %s\n", handle, iField, debugstr_w(szFilename));
- rec = msihandle2msiinfo( handle, MSIHANDLETYPE_RECORD );
+ rec = msihandle2msiinfo( handle, MSIOBJECTTYPE_RECORD );
if( !rec )
return ERROR_INVALID_HANDLE;
@@ -853,14 +847,14 @@ UINT MSI_RecordReadStream(MSIRECORD *rec, UINT iField, char *buf, LPDWORD sz)
return ERROR_SUCCESS;
}
-UINT WINAPI MsiRecordReadStream(MSIHANDLE handle, UINT iField, char *buf, LPDWORD sz)
+UINT WINAPI MsiRecordReadStream(PMSIOBJECT handle, UINT iField, char *buf, LPDWORD sz)
{
MSIRECORD *rec;
UINT ret;
TRACE("%d %d %p %p\n", handle, iField, buf, sz);
- rec = msihandle2msiinfo( handle, MSIHANDLETYPE_RECORD );
+ rec = msihandle2msiinfo( handle, MSIOBJECTTYPE_RECORD );
if( !rec )
return ERROR_INVALID_HANDLE;
msiobj_lock( &rec->hdr );
diff --git a/libmsi/suminfo.c b/libmsi/suminfo.c
index 4cefaab..94edf9e 100644
--- a/libmsi/suminfo.c
+++ b/libmsi/suminfo.c
@@ -92,7 +92,7 @@ static void free_prop( PROPVARIANT *prop )
prop->vt = VT_EMPTY;
}
-static void MSI_CloseSummaryInfo( MSIOBJECTHDR *arg )
+static void MSI_CloseSummaryInfo( MSIOBJECT *arg )
{
MSISUMMARYINFO *si = (MSISUMMARYINFO *) arg;
DWORD i;
@@ -434,7 +434,7 @@ MSISUMMARYINFO *MSI_GetSummaryInformationW( IStorage *stg, UINT uiUpdateCount )
TRACE("%p %d\n", stg, uiUpdateCount );
- si = alloc_msiobject( MSIHANDLETYPE_SUMMARYINFO,
+ si = alloc_msiobject( MSIOBJECTTYPE_SUMMARYINFO,
sizeof (MSISUMMARYINFO), MSI_CloseSummaryInfo );
if( !si )
return si;
@@ -455,8 +455,8 @@ MSISUMMARYINFO *MSI_GetSummaryInformationW( IStorage *stg, UINT uiUpdateCount )
return si;
}
-UINT WINAPI MsiGetSummaryInformationW( MSIHANDLE hDatabase,
- LPCWSTR szDatabase, UINT uiUpdateCount, MSIHANDLE *pHandle )
+UINT WINAPI MsiGetSummaryInformationW( PMSIOBJECT hDatabase,
+ LPCWSTR szDatabase, UINT uiUpdateCount, PMSIOBJECT *pHandle )
{
MSISUMMARYINFO *si;
MSIDATABASE *db;
@@ -478,7 +478,7 @@ UINT WINAPI MsiGetSummaryInformationW( MSIHANDLE hDatabase,
}
else
{
- db = msihandle2msiinfo( hDatabase, MSIHANDLETYPE_DATABASE );
+ db = msihandle2msiinfo( hDatabase, MSIOBJECTTYPE_DATABASE );
if( !db )
return ERROR_INVALID_HANDLE;
}
@@ -486,20 +486,16 @@ UINT WINAPI MsiGetSummaryInformationW( MSIHANDLE hDatabase,
si = MSI_GetSummaryInformationW( db->storage, uiUpdateCount );
if (si)
{
- *pHandle = alloc_msihandle( &si->hdr );
- if( *pHandle )
- ret = ERROR_SUCCESS;
- else
- ret = ERROR_NOT_ENOUGH_MEMORY;
- msiobj_release( &si->hdr );
+ *pHandle = &si->hdr;
+ ret = ERROR_SUCCESS;
}
msiobj_release( &db->hdr );
return ret;
}
-UINT WINAPI MsiGetSummaryInformationA(MSIHANDLE hDatabase,
- LPCSTR szDatabase, UINT uiUpdateCount, MSIHANDLE *pHandle)
+UINT WINAPI MsiGetSummaryInformationA(PMSIOBJECT hDatabase,
+ LPCSTR szDatabase, UINT uiUpdateCount, PMSIOBJECT *pHandle)
{
LPWSTR szwDatabase = NULL;
UINT ret;
@@ -521,13 +517,13 @@ UINT WINAPI MsiGetSummaryInformationA(MSIHANDLE hDatabase,
return ret;
}
-UINT WINAPI MsiSummaryInfoGetPropertyCount(MSIHANDLE hSummaryInfo, PUINT pCount)
+UINT WINAPI MsiSummaryInfoGetPropertyCount(PMSIOBJECT hSummaryInfo, PUINT pCount)
{
MSISUMMARYINFO *si;
TRACE("%d %p\n", hSummaryInfo, pCount);
- si = msihandle2msiinfo( hSummaryInfo, MSIHANDLETYPE_SUMMARYINFO );
+ si = msihandle2msiinfo( hSummaryInfo, MSIOBJECTTYPE_SUMMARYINFO );
if( !si )
return ERROR_INVALID_HANDLE;
@@ -538,7 +534,7 @@ UINT WINAPI MsiSummaryInfoGetPropertyCount(MSIHANDLE hSummaryInfo, PUINT pCount)
return ERROR_SUCCESS;
}
-static UINT get_prop( MSIHANDLE handle, UINT uiProperty, UINT *puiDataType,
+static UINT get_prop( PMSIOBJECT handle, UINT uiProperty, UINT *puiDataType,
INT *piValue, FILETIME *pftValue, awstring *str, DWORD *pcchValueBuf)
{
MSISUMMARYINFO *si;
@@ -554,7 +550,7 @@ static UINT get_prop( MSIHANDLE handle, UINT uiProperty, UINT *puiDataType,
return ERROR_UNKNOWN_PROPERTY;
}
- si = msihandle2msiinfo( handle, MSIHANDLETYPE_SUMMARYINFO );
+ si = msihandle2msiinfo( handle, MSIOBJECTTYPE_SUMMARYINFO );
if( !si )
return ERROR_INVALID_HANDLE;
@@ -649,7 +645,7 @@ LPWSTR msi_get_suminfo_product( IStorage *stg )
}
UINT WINAPI MsiSummaryInfoGetPropertyA(
- MSIHANDLE handle, UINT uiProperty, PUINT puiDataType, LPINT piValue,
+ PMSIOBJECT handle, UINT uiProperty, PUINT puiDataType, LPINT piValue,
FILETIME *pftValue, LPSTR szValueBuf, LPDWORD pcchValueBuf)
{
awstring str;
@@ -665,7 +661,7 @@ UINT WINAPI MsiSummaryInfoGetPropertyA(
}
UINT WINAPI MsiSummaryInfoGetPropertyW(
- MSIHANDLE handle, UINT uiProperty, PUINT puiDataType, LPINT piValue,
+ PMSIOBJECT handle, UINT uiProperty, PUINT puiDataType, LPINT piValue,
FILETIME *pftValue, LPWSTR szValueBuf, LPDWORD pcchValueBuf)
{
awstring str;
@@ -735,7 +731,7 @@ static UINT set_prop( MSISUMMARYINFO *si, UINT uiProperty, UINT type,
return ERROR_SUCCESS;
}
-UINT WINAPI MsiSummaryInfoSetPropertyW( MSIHANDLE handle, UINT uiProperty,
+UINT WINAPI MsiSummaryInfoSetPropertyW( PMSIOBJECT handle, UINT uiProperty,
UINT uiDataType, INT iValue, FILETIME* pftValue, LPCWSTR szValue )
{
awcstring str;
@@ -755,7 +751,7 @@ UINT WINAPI MsiSummaryInfoSetPropertyW( MSIHANDLE handle, UINT uiProperty,
if( uiDataType == VT_FILETIME && !pftValue )
return ERROR_INVALID_PARAMETER;
- si = msihandle2msiinfo( handle, MSIHANDLETYPE_SUMMARYINFO );
+ si = msihandle2msiinfo( handle, MSIOBJECTTYPE_SUMMARYINFO );
if( !si )
return ERROR_INVALID_HANDLE;
@@ -767,7 +763,7 @@ UINT WINAPI MsiSummaryInfoSetPropertyW( MSIHANDLE handle, UINT uiProperty,
return ret;
}
-UINT WINAPI MsiSummaryInfoSetPropertyA( MSIHANDLE handle, UINT uiProperty,
+UINT WINAPI MsiSummaryInfoSetPropertyA( PMSIOBJECT handle, UINT uiProperty,
UINT uiDataType, INT iValue, FILETIME* pftValue, LPCSTR szValue )
{
awcstring str;
@@ -787,7 +783,7 @@ UINT WINAPI MsiSummaryInfoSetPropertyA( MSIHANDLE handle, UINT uiProperty,
if( uiDataType == VT_FILETIME && !pftValue )
return ERROR_INVALID_PARAMETER;
- si = msihandle2msiinfo( handle, MSIHANDLETYPE_SUMMARYINFO );
+ si = msihandle2msiinfo( handle, MSIOBJECTTYPE_SUMMARYINFO );
if( !si )
return ERROR_INVALID_HANDLE;
@@ -937,14 +933,14 @@ end:
return r;
}
-UINT WINAPI MsiSummaryInfoPersist( MSIHANDLE handle )
+UINT WINAPI MsiSummaryInfoPersist( PMSIOBJECT handle )
{
MSISUMMARYINFO *si;
UINT ret;
TRACE("%d\n", handle );
- si = msihandle2msiinfo( handle, MSIHANDLETYPE_SUMMARYINFO );
+ si = msihandle2msiinfo( handle, MSIOBJECTTYPE_SUMMARYINFO );
if( !si )
return ERROR_INVALID_HANDLE;
@@ -954,7 +950,7 @@ UINT WINAPI MsiSummaryInfoPersist( MSIHANDLE handle )
return ret;
}
-UINT WINAPI MsiCreateTransformSummaryInfoA( MSIHANDLE db, MSIHANDLE db_ref, LPCSTR transform, int error, int validation )
+UINT WINAPI MsiCreateTransformSummaryInfoA( PMSIOBJECT db, PMSIOBJECT db_ref, LPCSTR transform, int error, int validation )
{
UINT r;
WCHAR *transformW = NULL;
@@ -969,7 +965,7 @@ UINT WINAPI MsiCreateTransformSummaryInfoA( MSIHANDLE db, MSIHANDLE db_ref, LPCS
return r;
}
-UINT WINAPI MsiCreateTransformSummaryInfoW( MSIHANDLE db, MSIHANDLE db_ref, LPCWSTR transform, int error, int validation )
+UINT WINAPI MsiCreateTransformSummaryInfoW( PMSIOBJECT db, PMSIOBJECT db_ref, LPCWSTR transform, int error, int validation )
{
FIXME("%u, %u, %s, %d, %d\n", db, db_ref, debugstr_w(transform), error, validation);
return ERROR_FUNCTION_FAILED;