diff options
-rw-r--r-- | include/libmsi.h | 110 | ||||
-rw-r--r-- | libmsi/database.c | 37 | ||||
-rw-r--r-- | libmsi/handle.c | 213 | ||||
-rw-r--r-- | libmsi/msipriv.h | 50 | ||||
-rw-r--r-- | libmsi/msiquery.c | 104 | ||||
-rw-r--r-- | libmsi/record.c | 64 | ||||
-rw-r--r-- | libmsi/suminfo.c | 50 | ||||
-rw-r--r-- | tests/testdatabase.c | 164 | ||||
-rw-r--r-- | tests/testrecord.c | 8 | ||||
-rw-r--r-- | tests/testsuminfo.c | 4 |
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; |