ReactOS 0.4.15-dev-7842-g558ab78
handle.c File Reference
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
#include "shlwapi.h"
#include "wine/debug.h"
#include "msi.h"
#include "msiquery.h"
#include "msipriv.h"
#include "winemsi_s.h"
Include dependency graph for handle.c:

Go to the source code of this file.

Classes

struct  msi_handle_info_t
 

Macros

#define COBJMACROS
 

Typedefs

typedef struct msi_handle_info_t msi_handle_info
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (msi)
 
void msi_free_handle_table (void)
 
static MSIHANDLE alloc_handle_table_entry (void)
 
MSIHANDLE alloc_msihandle (MSIOBJECTHDR *obj)
 
MSIHANDLE alloc_msi_remote_handle (MSIHANDLE remote)
 
voidmsihandle2msiinfo (MSIHANDLE handle, UINT type)
 
MSIHANDLE msi_get_remote (MSIHANDLE handle)
 
voidalloc_msiobject (UINT type, UINT size, msihandledestructor destroy)
 
void msiobj_addref (MSIOBJECTHDR *info)
 
void msiobj_lock (MSIOBJECTHDR *info)
 
void msiobj_unlock (MSIOBJECTHDR *info)
 
int msiobj_release (MSIOBJECTHDR *info)
 
UINT WINAPI MsiCloseHandle (MSIHANDLE handle)
 
UINT WINAPI MsiCloseAllHandles (void)
 
UINT __cdecl s_remote_CloseHandle (MSIHANDLE handle)
 

Variables

static CRITICAL_SECTION MSI_handle_cs = { &MSI_handle_cs_debug, -1, 0, 0, 0, 0 }
 
static CRITICAL_SECTION_DEBUG MSI_handle_cs_debug
 
static CRITICAL_SECTION MSI_object_cs = { &MSI_object_cs_debug, -1, 0, 0, 0, 0 }
 
static CRITICAL_SECTION_DEBUG MSI_object_cs_debug
 
static msi_handle_infomsihandletable = NULL
 
static unsigned int msihandletable_size = 0
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 21 of file handle.c.

Typedef Documentation

◆ msi_handle_info

Function Documentation

◆ alloc_handle_table_entry()

static MSIHANDLE alloc_handle_table_entry ( void  )
static

Definition at line 80 of file handle.c.

81{
82 UINT i;
83
84 /* find a slot */
85 for(i=0; i<msihandletable_size; i++)
86 if( !msihandletable[i].u.obj && !msihandletable[i].u.rem )
87 break;
89 {
91 int newsize;
92 if (msihandletable_size == 0)
93 {
94 newsize = 256;
95 p = msi_alloc_zero(newsize * sizeof(*p));
96 }
97 else
98 {
99 newsize = msihandletable_size * 2;
100 p = msi_realloc(msihandletable, newsize * sizeof(*p));
101 if (p) memset(p + msihandletable_size, 0, (newsize - msihandletable_size) * sizeof(*p));
102 }
103 if (!p)
104 return 0;
106 msihandletable_size = newsize;
107 }
108 return i + 1;
109}
static unsigned int msihandletable_size
Definition: handle.c:69
static msi_handle_info * msihandletable
Definition: handle.c:68
GLfloat GLfloat p
Definition: glext.h:8902
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
static void * msi_realloc(void *mem, size_t len) __WINE_ALLOC_SIZE(2)
Definition: msipriv.h:1154
static void * msi_alloc_zero(size_t len) __WINE_ALLOC_SIZE(1)
Definition: msipriv.h:1148
unsigned int UINT
Definition: ndis.h:50
#define memset(x, y, z)
Definition: compat.h:39
MSIHANDLE rem
Definition: handle.c:63
union msi_handle_info_t::@500 u

Referenced by alloc_msi_remote_handle(), and alloc_msihandle().

◆ alloc_msi_remote_handle()

MSIHANDLE alloc_msi_remote_handle ( MSIHANDLE  remote)

Definition at line 135 of file handle.c.

136{
139
141
143 if (ret)
144 {
145 entry = &msihandletable[ ret - 1 ];
146 entry->u.rem = remote;
147 entry->dwThreadId = GetCurrentThreadId();
148 entry->remote = TRUE;
149 }
150
152
153 TRACE( "%lu -> %lu\n", remote, ret );
154
155 return ret;
156}
#define TRUE
Definition: types.h:120
static MSIHANDLE alloc_handle_table_entry(void)
Definition: handle.c:80
static CRITICAL_SECTION MSI_handle_cs
Definition: handle.c:38
uint32_t entry
Definition: isohybrid.c:63
#define TRACE(s)
Definition: solgame.cpp:4
int ret
DWORD WINAPI GetCurrentThreadId(void)
Definition: thread.c:459
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
unsigned long MSIHANDLE
Definition: winemsi.idl:27

Referenced by __wine_msi_call_dll_function(), MsiDatabaseOpenViewW(), MsiGetActiveDatabase(), and MsiGetSummaryInformationW().

◆ alloc_msihandle()

MSIHANDLE alloc_msihandle ( MSIOBJECTHDR obj)

◆ alloc_msiobject()

void * alloc_msiobject ( UINT  type,
UINT  size,
msihandledestructor  destroy 
)

Definition at line 201 of file handle.c.

202{
204
206 if( info )
207 {
208 info->magic = MSIHANDLE_MAGIC;
209 info->type = type;
210 info->refcount = 1;
211 info->destructor = destroy;
212 }
213
214 return info;
215}
void destroy(_Tp *__pointer)
Definition: _construct.h:278
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLsizeiptr size
Definition: glext.h:5919
#define MSIHANDLE_MAGIC
Definition: msipriv.h:736

Referenced by create_suminfo(), MSI_CreateRecord(), MSI_DatabaseOpenViewW(), MSI_EnableUIPreview(), and MSI_OpenDatabaseW().

◆ msi_free_handle_table()

void msi_free_handle_table ( void  )

Definition at line 71 of file handle.c.

72{
78}
#define NULL
Definition: types.h:112
static CRITICAL_SECTION MSI_object_cs
Definition: handle.c:48
static void msi_free(void *mem)
Definition: msipriv.h:1159
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)

Referenced by DllMain().

◆ msi_get_remote()

◆ MsiCloseAllHandles()

UINT WINAPI MsiCloseAllHandles ( void  )

Definition at line 325 of file handle.c.

326{
327 UINT i, n=0;
328
329 TRACE("\n");
330
332 for(i=0; i<msihandletable_size; i++)
333 {
335 {
337 MsiCloseHandle( i+1 );
339 n++;
340 }
341 }
343
344 return n;
345}
UINT WINAPI MsiCloseHandle(MSIHANDLE handle)
Definition: handle.c:269
DWORD dwThreadId
Definition: fdebug.c:31
GLdouble n
Definition: glext.h:7729

Referenced by __wine_msi_call_dll_function(), and ScriptThread().

◆ MsiCloseHandle()

UINT WINAPI MsiCloseHandle ( MSIHANDLE  handle)

Definition at line 269 of file handle.c.

270{
273
274 TRACE( "%lu\n", handle );
275
276 if (!handle)
277 return ERROR_SUCCESS;
278
280
281 handle--;
283 goto out;
284
285 if (msihandletable[handle].remote)
286 {
287 remote_CloseHandle( msihandletable[handle].u.rem );
288 }
289 else
290 {
292 if( !info )
293 goto out;
294
295 if( info->magic != MSIHANDLE_MAGIC )
296 {
297 ERR("Invalid handle!\n");
298 goto out;
299 }
300 }
301
305
307
308 TRACE( "handle %lu destroyed\n", handle + 1 );
309out:
311 if( info )
313
314 return ret;
315}
#define ERR(fmt,...)
Definition: debug.h:110
#define ERROR_SUCCESS
Definition: deptool.c:10
#define ERROR_INVALID_HANDLE
Definition: compat.h:98
int msiobj_release(MSIOBJECTHDR *info)
Definition: handle.c:241
DWORD dwThreadId
Definition: handle.c:65
MSIOBJECTHDR * obj
Definition: handle.c:62

Referenced by __wine_msi_call_dll_function(), ACTION_CallScript(), add_custom_dll(), AutomationObject_Release(), create_database(), create_database_wordcount(), do_query(), find_entry(), find_entryW(), find_prop_in_property(), generate_transform(), get_column_info(), get_columns_table_type(), get_integer(), get_patch_product_codes(), get_string(), helper_createpackage(), MSI_ProcessMessageVerbatim(), MsiCloseAllHandles(), MsiCollectUserInfoA(), MsiCollectUserInfoW(), MsiVerifyPackageW(), ok_(), package_from_db(), query_file_path(), run_query(), run_queryW(), s_remote_CloseHandle(), s_remote_DatabaseGetPrimaryKeys(), s_remote_FormatRecord(), s_remote_ProcessMessage(), s_remote_ViewExecute(), s_remote_ViewFetch(), s_remote_ViewGetColumnInfo(), s_remote_ViewModify(), set_admin_summary_info(), set_suminfo(), set_suminfo_prop(), set_summary_dword(), set_summary_info(), set_summary_str(), set_transform_summary_info(), test_access(), test_alter(), test_appsearch(), test_appsearch_complocator(), test_appsearch_drlocator(), test_appsearch_inilocator(), test_appsearch_reglocator(), test_binary(), test_binary_import(), test_carriagereturn(), test_ccpsearch(), test_collation(), test_columnorder(), test_complocator(), test_condition(), test_controlevent(), test_costs(), test_createpackage(), test_createtable(), test_customaction1(), test_db(), test_dbmerge(), test_dbtopackage(), test_defaultdatabase(), test_deleterow(), test_doaction(), test_droptable(), test_embedded_nulls(), test_emptypackage(), test_externalui(), test_externalui_message(), test_featureparents(), test_fieldzero(), test_forcecodepage(), test_format_record(), test_formatrecord(), test_formatrecord2(), test_formatrecord_package(), test_formatrecord_tables(), test_getcolinfo(), test_gettargetpath_bad(), test_handle_limit(), test_icon_table(), test_insertorder(), test_installprops(), test_int_widths(), test_integers(), test_invalid_functions(), test_join(), test_launchconditions(), test_longstrings(), test_markers(), test_msibadqueries(), test_msidatabase(), test_MsiDatabaseCommit(), test_msiexport(), test_MsiGetFeatureInfo(), test_MsiGetProductProperty(), test_MsiGetSourcePath(), test_msiimport(), test_msiinsert(), test_MsiOpenDatabase(), test_MsiOpenProduct(), test_msipackage(), test_msirecord(), test_MsiRecordGetInteger(), test_MsiRecordGetString(), test_MsiSetComponentState(), test_MsiSetFeatureAttributes(), test_MsiSetProperty(), test_noquotes(), test_order(), test_packagecoltypes(), test_primary_keys(), test_processmessage(), test_property_table(), test_props(), test_quotes(), test_removefiles(), test_rows_order(), test_select_column_names(), test_select_markers(), test_select_with_tablenames(), test_settargetpath(), test_shortlongsource(), test_simple_patch(), test_sourcedir(), test_special_tables(), test_states(), test_storages_table(), test_streamtable(), test_stringtable(), test_suminfo(), test_suminfo_import(), test_summary_binary(), test_system_tables(), test_tables_order(), test_temporary_table(), test_top_level_action(), test_try_transform(), test_update(), test_view_get_error(), test_viewfetch_wraparound(), test_viewgetcolumninfo(), test_viewmodify(), test_viewmodify_assign(), test_viewmodify_delete(), test_viewmodify_delete_temporary(), test_viewmodify_insert(), test_viewmodify_merge(), test_viewmodify_refresh(), test_viewmodify_update(), test_where(), test_where_not_in_selected(), test_where_viewmodify(), try_insert_query(), try_query_param(), and write_msi_summary_info().

◆ msihandle2msiinfo()

void * msihandle2msiinfo ( MSIHANDLE  handle,
UINT  type 
)

Definition at line 158 of file handle.c.

159{
161
163 handle--;
165 goto out;
166 if( msihandletable[handle].remote)
167 goto out;
168 if( !msihandletable[handle].u.obj )
169 goto out;
170 if( msihandletable[handle].u.obj->magic != MSIHANDLE_MAGIC )
171 goto out;
172 if( type && (msihandletable[handle].u.obj->type != type) )
173 goto out;
176
177out:
179
180 return ret;
181}

Referenced by copy_remote_record(), marshal_record(), MSI_OpenPackageW(), MsiDatabaseApplyTransformW(), MsiDatabaseCommit(), MsiDatabaseExportW(), MsiDatabaseGetPrimaryKeysW(), MsiDatabaseImportW(), MsiDatabaseIsTablePersistentW(), MsiDatabaseMergeW(), MsiDatabaseOpenViewW(), MsiEnableUIPreview(), MsiEnumComponentCostsW(), MsiFormatRecordA(), MsiFormatRecordW(), MsiGetDatabaseState(), MsiGetFeatureInfoW(), MsiGetSummaryInformationW(), MsiPreviewDialogW(), MsiProcessMessage(), MsiRecordClearData(), MsiRecordDataSize(), MsiRecordGetFieldCount(), MsiRecordGetInteger(), MsiRecordGetStringA(), MsiRecordGetStringW(), MsiRecordIsNull(), MsiRecordReadStream(), MsiRecordSetInteger(), MsiRecordSetStreamW(), MsiRecordSetStringA(), MsiRecordSetStringW(), MsiSetFeatureAttributesW(), MsiSummaryInfoGetPropertyA(), MsiSummaryInfoGetPropertyCount(), MsiSummaryInfoGetPropertyW(), MsiSummaryInfoPersist(), MsiSummaryInfoSetPropertyA(), MsiSummaryInfoSetPropertyW(), MsiViewClose(), MsiViewExecute(), MsiViewFetch(), MsiViewGetColumnInfo(), MsiViewGetErrorA(), MsiViewGetErrorW(), and MsiViewModify().

◆ msiobj_addref()

void msiobj_addref ( MSIOBJECTHDR info)

Definition at line 217 of file handle.c.

218{
219 if( !info )
220 return;
221
222 if( info->magic != MSIHANDLE_MAGIC )
223 {
224 ERR("Invalid handle!\n");
225 return;
226 }
227
228 InterlockedIncrement(&info->refcount);
229}
#define InterlockedIncrement
Definition: armddk.h:53

Referenced by alloc_msihandle(), CREATE_CreateView(), DISTINCT_CreateView(), do_msidbCustomActionTypeDll(), do_msidbCustomActionTypeScript(), INSERT_CreateView(), MSI_CreatePackage(), MSI_DatabaseOpenViewW(), MSI_EnableUIPreview(), MSI_OpenDatabaseW(), msihandle2msiinfo(), UPDATE_CreateView(), and WHERE_CreateView().

◆ msiobj_lock()

◆ msiobj_release()

int msiobj_release ( MSIOBJECTHDR info)

Definition at line 241 of file handle.c.

242{
243 int ret;
244
245 if( !info )
246 return -1;
247
248 if( info->magic != MSIHANDLE_MAGIC )
249 {
250 ERR("Invalid handle!\n");
251 return -1;
252 }
253
254 ret = InterlockedDecrement( &info->refcount );
255 if( ret==0 )
256 {
257 if( info->destructor )
258 info->destructor( info );
259 msi_free( info );
260 TRACE("object %p destroyed\n", info);
261 }
262
263 return ret;
264}
#define InterlockedDecrement
Definition: armddk.h:52

Referenced by ACTION_AllocateRegistrySpace(), ACTION_AppSearch(), ACTION_BindImage(), ACTION_CCPSearch(), ACTION_CostFinalize(), ACTION_CreateFolders(), ACTION_CreateShortcuts(), ACTION_CustomAction(), ACTION_DeleteServices(), ACTION_DuplicateFiles(), ACTION_ExecuteAction(), ACTION_FindRelatedProducts(), ACTION_InstallODBC(), ACTION_InstallServices(), ACTION_InstallValidate(), ACTION_LaunchConditions(), ACTION_MigrateFeatureStates(), ACTION_MoveFiles(), ACTION_MsiPublishAssemblies(), ACTION_MsiUnpublishAssemblies(), ACTION_PerformActionSequence(), ACTION_ProcessComponents(), ACTION_ProcessExecSequence(), ACTION_ProcessUISequence(), ACTION_PublishComponents(), ACTION_PublishFeatures(), ACTION_PublishProduct(), ACTION_RegisterClassInfo(), ACTION_RegisterExtensionInfo(), ACTION_RegisterFonts(), ACTION_RegisterMIMEInfo(), ACTION_RegisterProduct(), ACTION_RegisterProgIdInfo(), ACTION_RegisterTypeLibraries(), ACTION_RegisterUser(), ACTION_RemoveDuplicateFiles(), ACTION_RemoveEnvironmentStrings(), ACTION_RemoveExistingProducts(), ACTION_RemoveFiles(), ACTION_RemoveFolders(), ACTION_RemoveIniValues(), ACTION_RemoveODBC(), ACTION_RemoveRegistryValues(), ACTION_RemoveShortcuts(), ACTION_SelfRegModules(), ACTION_SelfUnregModules(), ACTION_SetODBCFolders(), ACTION_ShowDialog(), ACTION_StartServices(), ACTION_StopServices(), ACTION_UnpublishComponents(), ACTION_UnregisterClassInfo(), ACTION_UnregisterExtensionInfo(), ACTION_UnregisterFonts(), ACTION_UnregisterMIMEInfo(), ACTION_UnregisterProgIdInfo(), ACTION_UnregisterTypeLibraries(), ACTION_WriteEnvironmentStrings(), ACTION_WriteIniValues(), ACTION_WriteRegistryValues(), add_stream(), check_transform_applicable(), construct_record(), copy_remote_record(), CREATE_delete(), create_diff_row_query(), create_temp_binary(), create_temp_property_table(), deformat_string(), dialog_create(), dialog_map_events(), DISTINCT_delete(), free_custom_action_data(), gather_merge_data(), get_assembly_display_name(), get_assembly_record(), get_key_value(), get_property(), get_signature(), HANDLE_CustomType19(), HANDLE_CustomType5_6(), INSERT_delete(), INSERT_execute(), internal_ui_handler(), is_uninstallable(), ITERATE_AppSearch(), ITERATE_CreateFolders(), ITERATE_DeleteService(), ITERATE_DuplicateFiles(), ITERATE_FindRelatedProducts(), ITERATE_InstallODBCDataSource(), ITERATE_InstallODBCDriver(), ITERATE_InstallODBCTranslator(), ITERATE_InstallService(), ITERATE_MoveFiles(), iterate_properties(), ITERATE_PublishComponent(), ITERATE_RegisterFonts(), ITERATE_RemoveDuplicateFiles(), ITERATE_RemoveEnvironmentString(), ITERATE_RemoveFiles(), ITERATE_RemoveFolders(), ITERATE_RemoveIniValuesOnInstall(), ITERATE_RemoveIniValuesOnUninstall(), ITERATE_RemoveODBCDataSource(), ITERATE_RemoveODBCDriver(), ITERATE_RemoveODBCTranslator(), ITERATE_RemoveRegistryValuesOnInstall(), ITERATE_RemoveRegistryValuesOnUninstall(), ITERATE_SelfRegModules(), ITERATE_SelfUnregModules(), ITERATE_StartService(), ITERATE_StopService(), ITERATE_UnpublishComponent(), ITERATE_UnregisterFonts(), ITERATE_WriteEnvironmentString(), ITERATE_WriteIniValues(), ITERATE_WriteRegistryValues(), join_modify_update(), load_all_classes(), load_all_extensions(), load_all_files(), load_all_folders(), load_all_media(), load_all_mimes(), load_all_patches(), load_all_progids(), load_all_verbs(), load_feature(), load_file_disk_id(), load_file_hash(), load_folder_persistence(), load_given_appid(), load_given_class(), load_given_extension(), load_given_mime(), load_given_progid(), load_patch_disk_id(), mark_patched_components(), marshal_record(), merge_diff_row(), merge_diff_tables(), merge_free_rows(), merge_verify_colnames(), merge_verify_primary_keys(), msi_add_records_to_table(), msi_add_suminfo(), msi_add_table_to_db(), MSI_ApplicablePatchW(), msi_apply_patch_package(), msi_apply_registered_patch(), msi_arrange_record(), msi_change_media(), msi_clone_properties(), MSI_CloneRecord(), MSI_ClosePreview(), MSI_CloseView(), msi_combobox_add_items(), msi_create_table(), MSI_CreatePackage(), MSI_DatabaseExport(), MSI_DatabaseGetPrimaryKeys(), MSI_DatabaseOpenViewW(), msi_dialog_build_font_list(), msi_dialog_button_handler(), msi_dialog_evaluate_control_conditions(), msi_dialog_fill_controls(), msi_dialog_get_uitext(), msi_dialog_oncreate(), msi_dialog_radiogroup_control(), msi_dialog_seltree_handler(), MSI_EnableUIPreview(), msi_export_suminfo(), msi_file_update_ui(), MSI_FormatRecordW(), MSI_FreePackage(), msi_get_checkbox_value(), msi_get_db_suminfo(), msi_get_error_message(), msi_get_merge_table(), msi_get_package_code(), msi_get_property(), msi_get_property_row(), msi_get_query_columns(), msi_get_query_types(), msi_get_suminfo(), msi_get_suminfo_product(), msi_get_table_labels(), msi_get_transform_record(), MSI_IterateRecords(), msi_listbox_add_items(), msi_listview_add_items(), msi_load_all_components(), msi_load_all_features(), msi_load_assembly(), msi_load_image(), msi_load_media_info(), msi_load_picture(), msi_load_suminfo_properties(), msi_media_get_disk_info(), MSI_OpenDatabaseW(), MSI_OpenPackageW(), msi_publish_icons(), msi_query_merge_record(), MSI_QueryGetRecord(), msi_refresh_record(), MSI_Sequence(), msi_set_property(), msi_table_apply_transform(), msi_table_load_transform(), msi_ui_progress(), msi_unimplemented_action_stub(), msi_unpublish_feature(), msi_unpublish_icons(), msi_view_get_row(), MsiCloseHandle(), MsiCollectUserInfoA(), MsiCollectUserInfoW(), MsiConfigureFeatureW(), MsiConfigureProductExW(), MsiCreateRecord(), MsiDatabaseApplyTransformW(), MsiDatabaseCommit(), MsiDatabaseExportW(), MsiDatabaseGetPrimaryKeysW(), MsiDatabaseImportW(), MsiDatabaseIsTablePersistentW(), MsiDatabaseMergeW(), MsiDatabaseOpenViewW(), MsiDetermineApplicablePatchesW(), MsiDeterminePatchSequenceW(), MsiDoActionW(), MsiEnableUIPreview(), MsiEnumComponentCostsW(), MsiFormatRecordA(), MsiFormatRecordW(), MsiGetActiveDatabase(), MsiGetComponentStateW(), MsiGetDatabaseState(), MsiGetFeatureCostW(), MsiGetFeatureInfoW(), MsiGetFeatureStateW(), MsiGetLanguage(), MsiGetMode(), MsiGetProductPropertyW(), MsiGetPropertyA(), MsiGetPropertyW(), MsiGetSourcePathA(), MsiGetSourcePathW(), MsiGetSummaryInformationW(), MsiGetTargetPathA(), MsiGetTargetPathW(), MsiInstallProductW(), MsiOpenDatabaseW(), MsiOpenPackageExW(), MsiOpenProductW(), MsiPreviewDialogW(), MsiProcessMessage(), MsiRecordClearData(), MsiRecordDataSize(), MsiRecordGetFieldCount(), MsiRecordGetInteger(), MsiRecordGetStringA(), MsiRecordGetStringW(), MsiRecordIsNull(), MsiRecordReadStream(), MsiRecordSetInteger(), MsiRecordSetStreamW(), MsiRecordSetStringA(), MsiRecordSetStringW(), MsiReinstallFeatureW(), MsiSequenceW(), MsiSetComponentStateW(), MsiSetFeatureAttributesW(), MsiSetFeatureStateW(), MsiSetInstallLevel(), MsiSetMode(), MsiSetPropertyW(), MsiSetTargetPathW(), MsiSummaryInfoGetPropertyA(), MsiSummaryInfoGetPropertyCount(), MsiSummaryInfoGetPropertyW(), MsiSummaryInfoPersist(), MsiSummaryInfoSetPropertyA(), MsiSummaryInfoSetPropertyW(), MsiViewClose(), MsiViewExecute(), MsiViewFetch(), MsiViewGetColumnInfo(), MsiViewGetErrorA(), MsiViewGetErrorW(), MsiViewModify(), patch_add_media(), patch_offset_get_filepatches(), patch_offset_get_files(), patch_offset_modify_db(), patch_set_media_source_prop(), patch_set_offsets(), patch_update_filepatch_sequence(), resolve_keypath(), search_components(), search_dr(), search_ini(), search_reg(), SELECT_insert_row(), SELECT_modify(), SELECT_set_row(), TABLE_add_column(), TABLE_drop(), TABLE_remove_column(), TransformView_add_column(), TransformView_Create(), TransformView_create_table(), TransformView_delete_row(), TransformView_drop_table(), TransformView_insert_row(), TransformView_set_row(), translate_record(), ui_actioninfo(), ui_actionstart(), ui_sequence_exists(), UPDATE_delete(), UPDATE_execute(), update_merge_errors(), WHERE_delete(), and WHERE_set_row().

◆ msiobj_unlock()

◆ s_remote_CloseHandle()

UINT __cdecl s_remote_CloseHandle ( MSIHANDLE  handle)

Definition at line 347 of file handle.c.

348{
349 return MsiCloseHandle(handle);
350}

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( msi  )

Variable Documentation

◆ MSI_handle_cs

◆ MSI_handle_cs_debug

CRITICAL_SECTION_DEBUG MSI_handle_cs_debug
static
Initial value:
=
{
0, 0, &MSI_handle_cs,
0, 0, { (DWORD_PTR)(__FILE__ ": MSI_handle_cs") }
}
static CRITICAL_SECTION_DEBUG MSI_handle_cs_debug
Definition: handle.c:39
LIST_ENTRY ProcessLocksList
Definition: winbase.h:883
#define DWORD_PTR
Definition: treelist.c:76

Definition at line 39 of file handle.c.

◆ MSI_object_cs

static CRITICAL_SECTION MSI_object_cs = { &MSI_object_cs_debug, -1, 0, 0, 0, 0 }
static

Definition at line 48 of file handle.c.

Referenced by msi_free_handle_table(), msiobj_lock(), and msiobj_unlock().

◆ MSI_object_cs_debug

CRITICAL_SECTION_DEBUG MSI_object_cs_debug
static
Initial value:
=
{
0, 0, &MSI_object_cs,
0, 0, { (DWORD_PTR)(__FILE__ ": MSI_object_cs") }
}
static CRITICAL_SECTION_DEBUG MSI_object_cs_debug
Definition: handle.c:49

Definition at line 49 of file handle.c.

◆ msihandletable

◆ msihandletable_size

unsigned int msihandletable_size = 0
static