summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/libmsi.h110
-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
-rw-r--r--tests/testdatabase.c164
-rw-r--r--tests/testrecord.c8
-rw-r--r--tests/testsuminfo.c4
10 files changed, 302 insertions, 502 deletions
diff --git a/include/libmsi.h b/include/libmsi.h
index aca7649..6cd8480 100644
--- a/include/libmsi.h
+++ b/include/libmsi.h
@@ -19,7 +19,8 @@
#ifndef _LIBMSI_H
#define _LIBMSI_H
-typedef unsigned __LONG32 MSIHANDLE;
+struct tagMSIOBJECT;
+typedef struct tagMSIOBJECT MSIOBJECT, *PMSIOBJECT;
typedef enum tagMSICONDITION
{
@@ -147,98 +148,97 @@ extern "C" {
/* view manipulation */
-UINT WINAPI MsiViewFetch(MSIHANDLE,MSIHANDLE*);
-UINT WINAPI MsiViewExecute(MSIHANDLE,MSIHANDLE);
-UINT WINAPI MsiViewClose(MSIHANDLE);
-UINT WINAPI MsiDatabaseOpenViewA(MSIHANDLE,LPCSTR,MSIHANDLE*);
-UINT WINAPI MsiDatabaseOpenViewW(MSIHANDLE,LPCWSTR,MSIHANDLE*);
+UINT WINAPI MsiViewFetch(PMSIOBJECT,PMSIOBJECT*);
+UINT WINAPI MsiViewExecute(PMSIOBJECT,PMSIOBJECT);
+UINT WINAPI MsiViewClose(PMSIOBJECT);
+UINT WINAPI MsiDatabaseOpenViewA(PMSIOBJECT,LPCSTR,PMSIOBJECT*);
+UINT WINAPI MsiDatabaseOpenViewW(PMSIOBJECT,LPCWSTR,PMSIOBJECT*);
#define MsiDatabaseOpenView WINELIB_NAME_AW(MsiDatabaseOpenView)
-MSIDBERROR WINAPI MsiViewGetErrorA(MSIHANDLE,LPSTR,LPDWORD);
-MSIDBERROR WINAPI MsiViewGetErrorW(MSIHANDLE,LPWSTR,LPDWORD);
+MSIDBERROR WINAPI MsiViewGetErrorA(PMSIOBJECT,LPSTR,LPDWORD);
+MSIDBERROR WINAPI MsiViewGetErrorW(PMSIOBJECT,LPWSTR,LPDWORD);
#define MsiViewGetError WINELIB_NAME_AW(MsiViewGetError)
-MSIDBSTATE WINAPI MsiGetDatabaseState(MSIHANDLE);
+MSIDBSTATE WINAPI MsiGetDatabaseState(PMSIOBJECT);
/* record manipulation */
-MSIHANDLE WINAPI MsiCreateRecord(UINT);
-UINT WINAPI MsiRecordClearData(MSIHANDLE);
-UINT WINAPI MsiRecordSetInteger(MSIHANDLE,UINT,int);
-UINT WINAPI MsiRecordSetStringA(MSIHANDLE,UINT,LPCSTR);
-UINT WINAPI MsiRecordSetStringW(MSIHANDLE,UINT,LPCWSTR);
+PMSIOBJECT WINAPI MsiCreateRecord(UINT);
+UINT WINAPI MsiRecordClearData(PMSIOBJECT);
+UINT WINAPI MsiRecordSetInteger(PMSIOBJECT,UINT,int);
+UINT WINAPI MsiRecordSetStringA(PMSIOBJECT,UINT,LPCSTR);
+UINT WINAPI MsiRecordSetStringW(PMSIOBJECT,UINT,LPCWSTR);
#define MsiRecordSetString WINELIB_NAME_AW(MsiRecordSetString)
-UINT WINAPI MsiRecordGetStringA(MSIHANDLE,UINT,LPSTR,LPDWORD);
-UINT WINAPI MsiRecordGetStringW(MSIHANDLE,UINT,LPWSTR,LPDWORD);
+UINT WINAPI MsiRecordGetStringA(PMSIOBJECT,UINT,LPSTR,LPDWORD);
+UINT WINAPI MsiRecordGetStringW(PMSIOBJECT,UINT,LPWSTR,LPDWORD);
#define MsiRecordGetString WINELIB_NAME_AW(MsiRecordGetString)
-UINT WINAPI MsiRecordGetFieldCount(MSIHANDLE);
-int WINAPI MsiRecordGetInteger(MSIHANDLE,UINT);
-UINT WINAPI MsiRecordDataSize(MSIHANDLE,UINT);
-BOOL WINAPI MsiRecordIsNull(MSIHANDLE,UINT);
-UINT WINAPI MsiFormatRecordA(MSIHANDLE,MSIHANDLE,LPSTR,LPDWORD);
-UINT WINAPI MsiFormatRecordW(MSIHANDLE,MSIHANDLE,LPWSTR,LPDWORD);
+UINT WINAPI MsiRecordGetFieldCount(PMSIOBJECT);
+int WINAPI MsiRecordGetInteger(PMSIOBJECT,UINT);
+UINT WINAPI MsiRecordDataSize(PMSIOBJECT,UINT);
+BOOL WINAPI MsiRecordIsNull(PMSIOBJECT,UINT);
+UINT WINAPI MsiFormatRecordA(PMSIOBJECT,PMSIOBJECT,LPSTR,LPDWORD);
+UINT WINAPI MsiFormatRecordW(PMSIOBJECT,PMSIOBJECT,LPWSTR,LPDWORD);
#define MsiFormatRecord WINELIB_NAME_AW(MsiFormatRecord)
-UINT WINAPI MsiRecordSetStreamA(MSIHANDLE,UINT,LPCSTR);
-UINT WINAPI MsiRecordSetStreamW(MSIHANDLE,UINT,LPCWSTR);
+UINT WINAPI MsiRecordSetStreamA(PMSIOBJECT,UINT,LPCSTR);
+UINT WINAPI MsiRecordSetStreamW(PMSIOBJECT,UINT,LPCWSTR);
#define MsiRecordSetStream WINELIB_NAME_AW(MsiRecordSetStream)
-UINT WINAPI MsiRecordReadStream(MSIHANDLE,UINT,char*,LPDWORD);
+UINT WINAPI MsiRecordReadStream(PMSIOBJECT,UINT,char*,LPDWORD);
-UINT WINAPI MsiDatabaseGetPrimaryKeysA(MSIHANDLE,LPCSTR,MSIHANDLE*);
-UINT WINAPI MsiDatabaseGetPrimaryKeysW(MSIHANDLE,LPCWSTR,MSIHANDLE*);
+UINT WINAPI MsiDatabaseGetPrimaryKeysA(PMSIOBJECT,LPCSTR,PMSIOBJECT*);
+UINT WINAPI MsiDatabaseGetPrimaryKeysW(PMSIOBJECT,LPCWSTR,PMSIOBJECT*);
#define MsiDatabaseGetPrimaryKeys WINELIB_NAME_AW(MsiDatabaseGetPrimaryKeys)
/* database transforms */
-UINT WINAPI MsiDatabaseApplyTransformA(MSIHANDLE,LPCSTR,int);
-UINT WINAPI MsiDatabaseApplyTransformW(MSIHANDLE,LPCWSTR,int);
+UINT WINAPI MsiDatabaseApplyTransformA(PMSIOBJECT,LPCSTR,int);
+UINT WINAPI MsiDatabaseApplyTransformW(PMSIOBJECT,LPCWSTR,int);
#define MsiDatabaseApplyTransform WINELIB_NAME_AW(MsiDatabaseApplyTransform)
-UINT WINAPI MsiViewGetColumnInfo(MSIHANDLE, MSICOLINFO, MSIHANDLE*);
+UINT WINAPI MsiViewGetColumnInfo(PMSIOBJECT, MSICOLINFO, PMSIOBJECT*);
-UINT WINAPI MsiCreateTransformSummaryInfoA(MSIHANDLE, MSIHANDLE, LPCSTR, int, int);
-UINT WINAPI MsiCreateTransformSummaryInfoW(MSIHANDLE, MSIHANDLE, LPCWSTR, int, int);
+UINT WINAPI MsiCreateTransformSummaryInfoA(PMSIOBJECT, PMSIOBJECT, LPCSTR, int, int);
+UINT WINAPI MsiCreateTransformSummaryInfoW(PMSIOBJECT, PMSIOBJECT, LPCWSTR, int, int);
#define MsiCreateTransformSummaryInfo WINELIB_NAME_AW(MsiCreateTransformSummaryInfo)
-UINT WINAPI MsiGetSummaryInformationA(MSIHANDLE, LPCSTR, UINT, MSIHANDLE *);
-UINT WINAPI MsiGetSummaryInformationW(MSIHANDLE, LPCWSTR, UINT, MSIHANDLE *);
+UINT WINAPI MsiGetSummaryInformationA(PMSIOBJECT, LPCSTR, UINT, PMSIOBJECT *);
+UINT WINAPI MsiGetSummaryInformationW(PMSIOBJECT, LPCWSTR, UINT, PMSIOBJECT *);
#define MsiGetSummaryInformation WINELIB_NAME_AW(MsiGetSummaryInformation)
-UINT WINAPI MsiSummaryInfoGetPropertyA(MSIHANDLE,UINT,PUINT,LPINT,FILETIME*,LPSTR,LPDWORD);
-UINT WINAPI MsiSummaryInfoGetPropertyW(MSIHANDLE,UINT,PUINT,LPINT,FILETIME*,LPWSTR,LPDWORD);
+UINT WINAPI MsiSummaryInfoGetPropertyA(PMSIOBJECT,UINT,PUINT,LPINT,FILETIME*,LPSTR,LPDWORD);
+UINT WINAPI MsiSummaryInfoGetPropertyW(PMSIOBJECT,UINT,PUINT,LPINT,FILETIME*,LPWSTR,LPDWORD);
#define MsiSummaryInfoGetProperty WINELIB_NAME_AW(MsiSummaryInfoGetProperty)
-UINT WINAPI MsiSummaryInfoSetPropertyA(MSIHANDLE, UINT, UINT, INT, FILETIME*, LPCSTR);
-UINT WINAPI MsiSummaryInfoSetPropertyW(MSIHANDLE, UINT, UINT, INT, FILETIME*, LPCWSTR);
+UINT WINAPI MsiSummaryInfoSetPropertyA(PMSIOBJECT, UINT, UINT, INT, FILETIME*, LPCSTR);
+UINT WINAPI MsiSummaryInfoSetPropertyW(PMSIOBJECT, UINT, UINT, INT, FILETIME*, LPCWSTR);
#define MsiSummaryInfoSetProperty WINELIB_NAME_AW(MsiSummaryInfoSetProperty)
-UINT WINAPI MsiDatabaseExportA(MSIHANDLE, LPCSTR, LPCSTR, LPCSTR);
-UINT WINAPI MsiDatabaseExportW(MSIHANDLE, LPCWSTR, LPCWSTR, LPCWSTR);
+UINT WINAPI MsiDatabaseExportA(PMSIOBJECT, LPCSTR, LPCSTR, LPCSTR);
+UINT WINAPI MsiDatabaseExportW(PMSIOBJECT, LPCWSTR, LPCWSTR, LPCWSTR);
#define MsiDatabaseExport WINELIB_NAME_AW(MsiDatabaseExport)
-UINT WINAPI MsiDatabaseImportA(MSIHANDLE, LPCSTR, LPCSTR);
-UINT WINAPI MsiDatabaseImportW(MSIHANDLE, LPCWSTR, LPCWSTR);
+UINT WINAPI MsiDatabaseImportA(PMSIOBJECT, LPCSTR, LPCSTR);
+UINT WINAPI MsiDatabaseImportW(PMSIOBJECT, LPCWSTR, LPCWSTR);
#define MsiDatabaseImport WINELIB_NAME_AW(MsiDatabaseImport)
-UINT WINAPI MsiOpenDatabaseW(LPCWSTR, LPCWSTR, MSIHANDLE*);
-UINT WINAPI MsiOpenDatabaseA(LPCSTR, LPCSTR, MSIHANDLE*);
+UINT WINAPI MsiOpenDatabaseW(LPCWSTR, LPCWSTR, PMSIOBJECT*);
+UINT WINAPI MsiOpenDatabaseA(LPCSTR, LPCSTR, PMSIOBJECT*);
#define MsiOpenDatabase WINELIB_NAME_AW(MsiOpenDatabase)
-MSICONDITION WINAPI MsiDatabaseIsTablePersistentA(MSIHANDLE, LPCSTR);
-MSICONDITION WINAPI MsiDatabaseIsTablePersistentW(MSIHANDLE, LPCWSTR);
+MSICONDITION WINAPI MsiDatabaseIsTablePersistentA(PMSIOBJECT, LPCSTR);
+MSICONDITION WINAPI MsiDatabaseIsTablePersistentW(PMSIOBJECT, LPCWSTR);
#define MsiDatabaseIsTablePersistent WINELIB_NAME_AW(MsiDatabaseIsTablePersistent)
-UINT WINAPI MsiSummaryInfoPersist(MSIHANDLE);
-UINT WINAPI MsiSummaryInfoGetPropertyCount(MSIHANDLE,PUINT);
+UINT WINAPI MsiSummaryInfoPersist(PMSIOBJECT);
+UINT WINAPI MsiSummaryInfoGetPropertyCount(PMSIOBJECT,PUINT);
-UINT WINAPI MsiViewModify(MSIHANDLE, MSIMODIFY, MSIHANDLE);
+UINT WINAPI MsiViewModify(PMSIOBJECT, MSIMODIFY, PMSIOBJECT);
-UINT WINAPI MsiDatabaseMergeA(MSIHANDLE, MSIHANDLE, LPCSTR);
-UINT WINAPI MsiDatabaseMergeW(MSIHANDLE, MSIHANDLE, LPCWSTR);
+UINT WINAPI MsiDatabaseMergeA(PMSIOBJECT, PMSIOBJECT, LPCSTR);
+UINT WINAPI MsiDatabaseMergeW(PMSIOBJECT, PMSIOBJECT, LPCWSTR);
#define MsiDatabaseMerge WINELIB_NAME_AW(MsiDatabaseMerge)
/* Non Unicode */
-UINT WINAPI MsiDatabaseCommit(MSIHANDLE);
-UINT WINAPI MsiCloseHandle(MSIHANDLE);
-UINT WINAPI MsiCloseAllHandles(void);
+UINT WINAPI MsiDatabaseCommit(PMSIOBJECT);
+UINT WINAPI MsiCloseHandle(PMSIOBJECT);
-MSIHANDLE WINAPI MsiGetLastErrorRecord(void);
+PMSIOBJECT WINAPI MsiGetLastErrorRecord(void);
#ifdef __cplusplus
}
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;
diff --git a/tests/testdatabase.c b/tests/testdatabase.c
index 1499047..d87e4b5 100644
--- a/tests/testdatabase.c
+++ b/tests/testdatabase.c
@@ -36,7 +36,7 @@ static const WCHAR msifileW[] = {'w','i','n','e','t','e','s','t','-','d','b','.'
static void test_msidatabase(void)
{
- MSIHANDLE hdb = 0, hdb2 = 0;
+ PMSIOBJECT hdb = 0, hdb2 = 0;
UINT res;
DeleteFile(msifile);
@@ -142,9 +142,9 @@ static void test_msidatabase(void)
ok( res == TRUE, "Failed to delete database\n" );
}
-static UINT do_query(MSIHANDLE hdb, const char *query, MSIHANDLE *phrec)
+static UINT do_query(PMSIOBJECT hdb, const char *query, PMSIOBJECT *phrec)
{
- MSIHANDLE hview = 0;
+ PMSIOBJECT hview = 0;
UINT r, ret;
if (phrec)
@@ -167,9 +167,9 @@ static UINT do_query(MSIHANDLE hdb, const char *query, MSIHANDLE *phrec)
return ret;
}
-static UINT run_query( MSIHANDLE hdb, MSIHANDLE hrec, const char *query )
+static UINT run_query( PMSIOBJECT hdb, PMSIOBJECT hrec, const char *query )
{
- MSIHANDLE hview = 0;
+ PMSIOBJECT hview = 0;
UINT r;
r = MsiDatabaseOpenView(hdb, query, &hview);
@@ -183,9 +183,9 @@ static UINT run_query( MSIHANDLE hdb, MSIHANDLE hrec, const char *query )
return r;
}
-static UINT run_queryW( MSIHANDLE hdb, MSIHANDLE hrec, const WCHAR *query )
+static UINT run_queryW( PMSIOBJECT hdb, PMSIOBJECT hrec, const WCHAR *query )
{
- MSIHANDLE hview = 0;
+ PMSIOBJECT hview = 0;
UINT r;
r = MsiDatabaseOpenViewW(hdb, query, &hview);
@@ -199,7 +199,7 @@ static UINT run_queryW( MSIHANDLE hdb, MSIHANDLE hrec, const WCHAR *query )
return r;
}
-static UINT create_component_table( MSIHANDLE hdb )
+static UINT create_component_table( PMSIOBJECT hdb )
{
return run_query( hdb, 0,
"CREATE TABLE `Component` ( "
@@ -212,7 +212,7 @@ static UINT create_component_table( MSIHANDLE hdb )
"PRIMARY KEY `Component`)" );
}
-static UINT create_custom_action_table( MSIHANDLE hdb )
+static UINT create_custom_action_table( PMSIOBJECT hdb )
{
return run_query( hdb, 0,
"CREATE TABLE `CustomAction` ( "
@@ -223,7 +223,7 @@ static UINT create_custom_action_table( MSIHANDLE hdb )
"PRIMARY KEY `Action`)" );
}
-static UINT create_directory_table( MSIHANDLE hdb )
+static UINT create_directory_table( PMSIOBJECT hdb )
{
return run_query( hdb, 0,
"CREATE TABLE `Directory` ( "
@@ -233,7 +233,7 @@ static UINT create_directory_table( MSIHANDLE hdb )
"PRIMARY KEY `Directory`)" );
}
-static UINT create_feature_components_table( MSIHANDLE hdb )
+static UINT create_feature_components_table( PMSIOBJECT hdb )
{
return run_query( hdb, 0,
"CREATE TABLE `FeatureComponents` ( "
@@ -242,7 +242,7 @@ static UINT create_feature_components_table( MSIHANDLE hdb )
"PRIMARY KEY `Feature_`, `Component_` )" );
}
-static UINT create_std_dlls_table( MSIHANDLE hdb )
+static UINT create_std_dlls_table( PMSIOBJECT hdb )
{
return run_query( hdb, 0,
"CREATE TABLE `StdDlls` ( "
@@ -251,7 +251,7 @@ static UINT create_std_dlls_table( MSIHANDLE hdb )
"PRIMARY KEY `File` )" );
}
-static UINT create_binary_table( MSIHANDLE hdb )
+static UINT create_binary_table( PMSIOBJECT hdb )
{
return run_query( hdb, 0,
"CREATE TABLE `Binary` ( "
@@ -261,7 +261,7 @@ static UINT create_binary_table( MSIHANDLE hdb )
}
#define make_add_entry(type, qtext) \
- static UINT add##_##type##_##entry( MSIHANDLE hdb, const char *values ) \
+ static UINT add##_##type##_##entry( PMSIOBJECT hdb, const char *values ) \
{ \
char insert[] = qtext; \
char *query; \
@@ -295,7 +295,7 @@ make_add_entry(binary,
static void test_msiinsert(void)
{
- MSIHANDLE hdb = 0, hview = 0, hview2 = 0, hrec = 0;
+ PMSIOBJECT hdb = 0, hview = 0, hview2 = 0, hrec = 0;
UINT r;
const char *query;
char buf[80];
@@ -451,9 +451,9 @@ static void test_msiinsert(void)
ok(r == TRUE, "file didn't exist after commit\n");
}
-static UINT try_query_param( MSIHANDLE hdb, LPCSTR szQuery, MSIHANDLE hrec )
+static UINT try_query_param( PMSIOBJECT hdb, LPCSTR szQuery, PMSIOBJECT hrec )
{
- MSIHANDLE htab = 0;
+ PMSIOBJECT htab = 0;
UINT res;
res = MsiDatabaseOpenView( hdb, szQuery, &htab );
@@ -476,14 +476,14 @@ static UINT try_query_param( MSIHANDLE hdb, LPCSTR szQuery, MSIHANDLE hrec )
return res;
}
-static UINT try_query( MSIHANDLE hdb, LPCSTR szQuery )
+static UINT try_query( PMSIOBJECT hdb, LPCSTR szQuery )
{
return try_query_param( hdb, szQuery, 0 );
}
-static UINT try_insert_query( MSIHANDLE hdb, LPCSTR szQuery )
+static UINT try_insert_query( PMSIOBJECT hdb, LPCSTR szQuery )
{
- MSIHANDLE hrec = 0;
+ PMSIOBJECT hrec = 0;
UINT r;
hrec = MsiCreateRecord( 1 );
@@ -497,7 +497,7 @@ static UINT try_insert_query( MSIHANDLE hdb, LPCSTR szQuery )
static void test_msibadqueries(void)
{
- MSIHANDLE hdb = 0;
+ PMSIOBJECT hdb = 0;
UINT r;
DeleteFile(msifile);
@@ -716,7 +716,7 @@ static void test_msibadqueries(void)
static void test_viewmodify(void)
{
- MSIHANDLE hdb = 0, hview = 0, hrec = 0;
+ PMSIOBJECT hdb = 0, hview = 0, hrec = 0;
UINT r;
MSIDBERROR err;
const char *query;
@@ -1064,9 +1064,9 @@ static void test_viewmodify(void)
ok(r == ERROR_SUCCESS, "MsiOpenDatabase close failed\n");
}
-static MSIHANDLE create_db(void)
+static PMSIOBJECT create_db(void)
{
- MSIHANDLE hdb = 0;
+ PMSIOBJECT hdb = 0;
UINT res;
DeleteFile(msifile);
@@ -1085,7 +1085,7 @@ static MSIHANDLE create_db(void)
static void test_getcolinfo(void)
{
- MSIHANDLE hdb, hview = 0, rec = 0;
+ PMSIOBJECT hdb, hview = 0, rec = 0;
UINT r;
DWORD sz;
char buffer[0x20];
@@ -1143,9 +1143,9 @@ static void test_getcolinfo(void)
ok( r == ERROR_SUCCESS, "failed to close database\n");
}
-static MSIHANDLE get_column_info(MSIHANDLE hdb, const char *query, MSICOLINFO type)
+static PMSIOBJECT get_column_info(PMSIOBJECT hdb, const char *query, MSICOLINFO type)
{
- MSIHANDLE hview = 0, rec = 0;
+ PMSIOBJECT hview = 0, rec = 0;
UINT r;
r = MsiDatabaseOpenView(hdb, query, &hview);
@@ -1162,9 +1162,9 @@ static MSIHANDLE get_column_info(MSIHANDLE hdb, const char *query, MSICOLINFO ty
return rec;
}
-static UINT get_columns_table_type(MSIHANDLE hdb, const char *table, UINT field)
+static UINT get_columns_table_type(PMSIOBJECT hdb, const char *table, UINT field)
{
- MSIHANDLE hview = 0, rec = 0;
+ PMSIOBJECT hview = 0, rec = 0;
UINT r, type = 0;
char query[0x100];
@@ -1193,7 +1193,7 @@ static UINT get_columns_table_type(MSIHANDLE hdb, const char *table, UINT field)
return type;
}
-static BOOL check_record( MSIHANDLE rec, UINT field, LPCSTR val )
+static BOOL check_record( PMSIOBJECT rec, UINT field, LPCSTR val )
{
CHAR buffer[0x20];
UINT r;
@@ -1206,7 +1206,7 @@ static BOOL check_record( MSIHANDLE rec, UINT field, LPCSTR val )
static void test_viewgetcolumninfo(void)
{
- MSIHANDLE hdb = 0, rec;
+ PMSIOBJECT hdb = 0, rec;
UINT r;
hdb = create_db();
@@ -1312,7 +1312,7 @@ static void test_viewgetcolumninfo(void)
static void test_msiexport(void)
{
- MSIHANDLE hdb = 0, hview = 0;
+ PMSIOBJECT hdb = 0, hview = 0;
UINT r;
const char *query;
char path[MAX_PATH];
@@ -1390,7 +1390,7 @@ static void test_longstrings(void)
const char insert_query[] =
"INSERT INTO `strings` ( `id`, `val` ) VALUES('1', 'Z')";
char *str;
- MSIHANDLE hdb = 0, hview = 0, hrec = 0;
+ PMSIOBJECT hdb = 0, hview = 0, hrec = 0;
DWORD len;
UINT r;
const DWORD STRING_LENGTH = 0x10005;
@@ -1469,7 +1469,7 @@ static void create_file_data(LPCSTR name, LPCSTR data, DWORD size)
static void test_streamtable(void)
{
- MSIHANDLE hdb = 0, rec, view, hsi;
+ PMSIOBJECT hdb = 0, rec, view, hsi;
char file[MAX_PATH];
char buf[MAX_PATH];
DWORD size;
@@ -1706,7 +1706,7 @@ static void test_streamtable(void)
static void test_binary(void)
{
- MSIHANDLE hdb = 0, rec;
+ PMSIOBJECT hdb = 0, rec;
char file[MAX_PATH];
char buf[MAX_PATH];
DWORD size;
@@ -1789,7 +1789,7 @@ static void test_binary(void)
static void test_where_not_in_selected(void)
{
- MSIHANDLE hdb = 0, rec, view;
+ PMSIOBJECT hdb = 0, rec, view;
LPCSTR query;
UINT r;
@@ -1886,7 +1886,7 @@ static void test_where_not_in_selected(void)
static void test_where(void)
{
- MSIHANDLE hdb = 0, rec, view;
+ PMSIOBJECT hdb = 0, rec, view;
LPCSTR query;
UINT r;
DWORD size;
@@ -2086,7 +2086,7 @@ static void write_file(const CHAR *filename, const char *data, int data_size)
CloseHandle(hf);
}
-static UINT add_table_to_db(MSIHANDLE hdb, LPCSTR table_data)
+static UINT add_table_to_db(PMSIOBJECT hdb, LPCSTR table_data)
{
UINT r;
@@ -2099,7 +2099,7 @@ static UINT add_table_to_db(MSIHANDLE hdb, LPCSTR table_data)
static void test_suminfo_import(void)
{
- MSIHANDLE hdb, hsi, view = 0;
+ PMSIOBJECT hdb, hsi, view = 0;
LPCSTR query;
UINT r, count, size, type;
char str_value[50];
@@ -2222,7 +2222,7 @@ static void test_suminfo_import(void)
static void test_msiimport(void)
{
- MSIHANDLE hdb, view, rec;
+ PMSIOBJECT hdb, view, rec;
LPCSTR query;
UINT r, count;
signed int i;
@@ -2441,7 +2441,7 @@ static const CHAR bin_import_dat[] = "Name\tData\r\n"
static void test_binary_import(void)
{
- MSIHANDLE hdb = 0, rec;
+ PMSIOBJECT hdb = 0, rec;
char file[MAX_PATH];
char buf[MAX_PATH];
char path[MAX_PATH];
@@ -2493,7 +2493,7 @@ static void test_binary_import(void)
static void test_markers(void)
{
- MSIHANDLE hdb, rec;
+ PMSIOBJECT hdb, rec;
LPCSTR query;
UINT r;
@@ -2679,8 +2679,8 @@ static void test_markers(void)
static void test_handle_limit(void)
{
int i;
- MSIHANDLE hdb;
- MSIHANDLE hviews[MY_NVIEWS];
+ PMSIOBJECT hdb;
+ PMSIOBJECT hviews[MY_NVIEWS];
UINT r;
/* create an empty db */
@@ -2841,10 +2841,10 @@ static void generate_transform_manual(void)
IStorage_Release(stg);
}
-static UINT set_summary_info(MSIHANDLE hdb)
+static UINT set_summary_info(PMSIOBJECT hdb)
{
UINT res;
- MSIHANDLE suminfo;
+ PMSIOBJECT suminfo;
/* build summary info */
res = MsiGetSummaryInformation(hdb, NULL, 7, &suminfo);
@@ -2885,9 +2885,9 @@ static UINT set_summary_info(MSIHANDLE hdb)
return res;
}
-static MSIHANDLE create_package_db(LPCSTR filename)
+static PMSIOBJECT create_package_db(LPCSTR filename)
{
- MSIHANDLE hdb = 0;
+ PMSIOBJECT hdb = 0;
UINT res;
DeleteFile(msifile);
@@ -2912,7 +2912,7 @@ static MSIHANDLE create_package_db(LPCSTR filename)
static void test_try_transform(void)
{
- MSIHANDLE hdb, hview, hrec, hpkg = 0;
+ PMSIOBJECT hdb, hview, hrec, hpkg = 0;
LPCSTR query;
UINT r;
DWORD sz;
@@ -3195,7 +3195,7 @@ static const struct join_res_uint join_res_ninth[] =
static void test_join(void)
{
- MSIHANDLE hdb, hview, hrec;
+ PMSIOBJECT hdb, hview, hrec;
LPCSTR query;
CHAR buf[MAX_PATH];
UINT r, count;
@@ -3833,7 +3833,7 @@ static void test_join(void)
static void test_temporary_table(void)
{
MSICONDITION cond;
- MSIHANDLE hdb = 0, view = 0, rec;
+ PMSIOBJECT hdb = 0, view = 0, rec;
const char *query;
UINT r;
char buf[0x10];
@@ -3959,7 +3959,7 @@ static void test_temporary_table(void)
static void test_alter(void)
{
MSICONDITION cond;
- MSIHANDLE hdb = 0;
+ PMSIOBJECT hdb = 0;
const char *query;
UINT r;
@@ -4135,7 +4135,7 @@ static void test_alter(void)
static void test_integers(void)
{
- MSIHANDLE hdb = 0, view = 0, rec = 0;
+ PMSIOBJECT hdb = 0, view = 0, rec = 0;
DWORD count, i;
const char *query;
UINT r;
@@ -4266,7 +4266,7 @@ static void test_integers(void)
static void test_update(void)
{
- MSIHANDLE hdb = 0, view = 0, rec = 0;
+ PMSIOBJECT hdb = 0, view = 0, rec = 0;
CHAR result[MAX_PATH];
const char *query;
DWORD size;
@@ -4586,7 +4586,7 @@ static void test_update(void)
static void test_special_tables(void)
{
const char *query;
- MSIHANDLE hdb = 0;
+ PMSIOBJECT hdb = 0;
UINT r;
r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
@@ -4624,7 +4624,7 @@ static void test_special_tables(void)
static void test_tables_order(void)
{
const char *query;
- MSIHANDLE hdb = 0, hview = 0, hrec = 0;
+ PMSIOBJECT hdb = 0, hview = 0, hrec = 0;
UINT r;
char buffer[100];
DWORD sz;
@@ -4778,7 +4778,7 @@ static void test_tables_order(void)
static void test_rows_order(void)
{
const char *query;
- MSIHANDLE hdb = 0, hview = 0, hrec = 0;
+ PMSIOBJECT hdb = 0, hview = 0, hrec = 0;
UINT r;
char buffer[100];
DWORD sz;
@@ -4942,7 +4942,7 @@ static void test_collation(void)
static const WCHAR letter_a_ring[] = {'a',0x30a,0};
static const WCHAR letter_a_with_ring[] = {0xe5,0};
const char *query;
- MSIHANDLE hdb = 0, hview = 0, hrec = 0;
+ PMSIOBJECT hdb = 0, hview = 0, hrec = 0;
UINT r;
char buffer[100];
WCHAR bufferW[100];
@@ -5079,7 +5079,7 @@ static void test_collation(void)
static void test_select_markers(void)
{
- MSIHANDLE hdb = 0, rec, view, res;
+ PMSIOBJECT hdb = 0, rec, view, res;
LPCSTR query;
UINT r;
DWORD size;
@@ -5222,7 +5222,7 @@ static void test_select_markers(void)
static void test_viewmodify_update(void)
{
- MSIHANDLE hdb = 0, hview = 0, hrec = 0;
+ PMSIOBJECT hdb = 0, hview = 0, hrec = 0;
UINT i, test_max, offset, count;
const char *query;
UINT r;
@@ -5480,7 +5480,7 @@ static void test_viewmodify_update(void)
static void test_viewmodify_assign(void)
{
- MSIHANDLE hdb = 0, hview = 0, hrec = 0;
+ PMSIOBJECT hdb = 0, hview = 0, hrec = 0;
const char *query;
UINT r;
@@ -5630,7 +5630,7 @@ static const WCHAR data13[] = { /* _StringPool */
static void test_stringtable(void)
{
- MSIHANDLE hdb = 0, hview = 0, hrec = 0;
+ PMSIOBJECT hdb = 0, hview = 0, hrec = 0;
IStorage *stg = NULL;
IStream *stm;
WCHAR name[0x20];
@@ -5868,7 +5868,7 @@ static void test_stringtable(void)
static void test_viewmodify_delete(void)
{
- MSIHANDLE hdb = 0, hview = 0, hrec = 0;
+ PMSIOBJECT hdb = 0, hview = 0, hrec = 0;
UINT r;
const char *query;
char buffer[0x100];
@@ -6046,7 +6046,7 @@ static void test_defaultdatabase(void)
{
UINT r;
HRESULT hr;
- MSIHANDLE hdb;
+ PMSIOBJECT hdb;
IStorage *stg = NULL;
DeleteFile(msifile);
@@ -6071,7 +6071,7 @@ static void test_defaultdatabase(void)
static void test_order(void)
{
- MSIHANDLE hdb, hview, hrec;
+ PMSIOBJECT hdb, hview, hrec;
CHAR buffer[MAX_PATH];
LPCSTR query;
UINT r, sz;
@@ -6329,7 +6329,7 @@ static void test_order(void)
static void test_viewmodify_delete_temporary(void)
{
- MSIHANDLE hdb, hview, hrec;
+ PMSIOBJECT hdb, hview, hrec;
const char *query;
UINT r;
@@ -6445,7 +6445,7 @@ static void test_viewmodify_delete_temporary(void)
static void test_deleterow(void)
{
- MSIHANDLE hdb, hview, hrec;
+ PMSIOBJECT hdb, hview, hrec;
const char *query;
char buf[MAX_PATH];
UINT r;
@@ -6512,7 +6512,7 @@ static const CHAR import_dat[] = "A\n"
static void test_quotes(void)
{
- MSIHANDLE hdb, hview, hrec;
+ PMSIOBJECT hdb, hview, hrec;
const char *query;
char buf[MAX_PATH];
UINT r;
@@ -6618,7 +6618,7 @@ static void test_quotes(void)
static void test_carriagereturn(void)
{
- MSIHANDLE hdb, hview, hrec;
+ PMSIOBJECT hdb, hview, hrec;
const char *query;
char buf[MAX_PATH];
UINT r;
@@ -6804,7 +6804,7 @@ static void test_carriagereturn(void)
static void test_noquotes(void)
{
- MSIHANDLE hdb, hview, hrec;
+ PMSIOBJECT hdb, hview, hrec;
const char *query;
char buf[MAX_PATH];
UINT r;
@@ -7014,7 +7014,7 @@ static void read_file_data(LPCSTR filename, LPSTR buffer)
static void test_forcecodepage(void)
{
- MSIHANDLE hdb;
+ PMSIOBJECT hdb;
const char *query;
char buffer[MAX_PATH];
UINT r;
@@ -7084,7 +7084,7 @@ static void test_forcecodepage(void)
static void test_viewmodify_refresh(void)
{
- MSIHANDLE hdb, hview, hrec;
+ PMSIOBJECT hdb, hview, hrec;
const char *query;
char buffer[MAX_PATH];
UINT r;
@@ -7174,7 +7174,7 @@ static void test_viewmodify_refresh(void)
static void test_where_viewmodify(void)
{
- MSIHANDLE hdb, hview, hrec;
+ PMSIOBJECT hdb, hview, hrec;
const char *query;
UINT r;
@@ -7306,7 +7306,7 @@ done:
static void test_storages_table(void)
{
- MSIHANDLE hdb, hview, hrec;
+ PMSIOBJECT hdb, hview, hrec;
IStorage *stg, *inner;
IStream *stm;
char file[MAX_PATH];
@@ -7429,7 +7429,7 @@ static void test_storages_table(void)
static void test_droptable(void)
{
- MSIHANDLE hdb, hview, hrec;
+ PMSIOBJECT hdb, hview, hrec;
CHAR buf[MAX_PATH];
LPCSTR query;
DWORD size;
@@ -7648,7 +7648,7 @@ static void test_droptable(void)
static void test_dbmerge(void)
{
- MSIHANDLE hdb, href, hview, hrec;
+ PMSIOBJECT hdb, href, hview, hrec;
CHAR buf[MAX_PATH];
LPCSTR query;
DWORD size;
@@ -8275,7 +8275,7 @@ static void test_dbmerge(void)
static void test_select_with_tablenames(void)
{
- MSIHANDLE hdb, view, rec;
+ PMSIOBJECT hdb, view, rec;
LPCSTR query;
UINT r;
int i;
@@ -8360,7 +8360,7 @@ static const UINT ordervals[6][3] =
static void test_insertorder(void)
{
- MSIHANDLE hdb, view, rec;
+ PMSIOBJECT hdb, view, rec;
LPCSTR query;
UINT r;
int i;
@@ -8498,7 +8498,7 @@ static void test_insertorder(void)
static void test_columnorder(void)
{
- MSIHANDLE hdb, view, rec;
+ PMSIOBJECT hdb, view, rec;
char buf[MAX_PATH];
LPCSTR query;
DWORD sz;
@@ -8993,7 +8993,7 @@ static void test_columnorder(void)
static void test_createtable(void)
{
- MSIHANDLE hdb, htab = 0, hrec = 0;
+ PMSIOBJECT hdb, htab = 0, hrec = 0;
LPCSTR query;
UINT res;
DWORD size;
@@ -9111,7 +9111,7 @@ static void test_embedded_nulls(void)
"Control\tDialog\n"
"LicenseAgreementDlg\ttext\x11\x19text\0text";
UINT r, sz;
- MSIHANDLE hdb, hrec;
+ PMSIOBJECT hdb, hrec;
char buffer[32];
r = MsiOpenDatabaseA( msifile, MSIDBOPEN_CREATE, &hdb );
@@ -9139,7 +9139,7 @@ static void test_embedded_nulls(void)
static void test_select_column_names(void)
{
- MSIHANDLE hdb = 0, rec, rec2, view;
+ PMSIOBJECT hdb = 0, rec, rec2, view;
char buffer[32];
UINT r, size;
diff --git a/tests/testrecord.c b/tests/testrecord.c
index 48fedfb..1518e71 100644
--- a/tests/testrecord.c
+++ b/tests/testrecord.c
@@ -50,7 +50,7 @@ static void test_msirecord(void)
{
DWORD r, sz;
INT i;
- MSIHANDLE h;
+ PMSIOBJECT h;
char buf[10];
WCHAR bufW[10];
const char str[] = "hello";
@@ -383,7 +383,7 @@ static void test_msirecord(void)
static void test_MsiRecordGetString(void)
{
- MSIHANDLE rec;
+ PMSIOBJECT rec;
CHAR buf[MAX_PATH];
DWORD sz;
UINT r;
@@ -445,7 +445,7 @@ static void test_MsiRecordGetString(void)
static void test_MsiRecordGetInteger(void)
{
- MSIHANDLE rec;
+ PMSIOBJECT rec;
INT val;
UINT r;
@@ -475,7 +475,7 @@ static void test_MsiRecordGetInteger(void)
static void test_fieldzero(void)
{
- MSIHANDLE hdb, hview, rec;
+ PMSIOBJECT hdb, hview, rec;
CHAR buf[MAX_PATH];
LPCSTR query;
DWORD sz;
diff --git a/tests/testsuminfo.c b/tests/testsuminfo.c
index 650f416..0ba48f5 100644
--- a/tests/testsuminfo.c
+++ b/tests/testsuminfo.c
@@ -33,7 +33,7 @@ static const WCHAR msifileW[] = {
static void test_suminfo(void)
{
- MSIHANDLE hdb = 0, hsuminfo;
+ PMSIOBJECT hdb = 0, hsuminfo;
UINT r, count, type;
DWORD sz;
INT val;
@@ -362,7 +362,7 @@ static void test_create_database_binary(void)
static void test_summary_binary(void)
{
- MSIHANDLE hdb = 0, hsuminfo = 0;
+ PMSIOBJECT hdb = 0, hsuminfo = 0;
UINT r, type, count;
INT ival;
DWORD sz;