MSIHANDLE 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; }
UINT WINAPI MsiOpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIHANDLE *phDB) { MSIDATABASE *db; UINT ret; TRACE("%s %s %p\n",debugstr_w(szDBPath),debugstr_w(szPersist), phDB); ret = MSI_OpenDatabaseW( szDBPath, szPersist, &db ); if( ret == ERROR_SUCCESS ) { *phDB = alloc_msihandle( &db->hdr ); msiobj_release( &db->hdr ); } return ret; }
UINT WINAPI MsiEnableUIPreview( MSIHANDLE hdb, MSIHANDLE* phPreview ) { MSIDATABASE *db; MSIPREVIEW *preview; UINT r = ERROR_FUNCTION_FAILED; TRACE("%ld %p\n", hdb, phPreview); db = msihandle2msiinfo( hdb, MSIHANDLETYPE_DATABASE ); if( !db ) { IWineMsiRemoteDatabase *remote_database; remote_database = (IWineMsiRemoteDatabase *)msi_get_remote( hdb ); if ( !remote_database ) return ERROR_INVALID_HANDLE; *phPreview = 0; IWineMsiRemoteDatabase_Release( remote_database ); WARN("MsiEnableUIPreview not allowed during a custom action!\n"); return ERROR_FUNCTION_FAILED; } preview = MSI_EnableUIPreview( db ); if( preview ) { *phPreview = alloc_msihandle( &preview->hdr ); msiobj_release( &preview->hdr ); r = ERROR_SUCCESS; if (! *phPreview) r = ERROR_NOT_ENOUGH_MEMORY; } msiobj_release( &db->hdr ); return r; }