ReactOS 0.4.16-dev-401-g45b008d
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  handle_info
 

Macros

#define COBJMACROS
 

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 handle_cs = { &handle_cs_debug, -1, 0, 0, 0, 0 }
 
static CRITICAL_SECTION_DEBUG handle_cs_debug
 
static CRITICAL_SECTION object_cs = { &object_cs_debug, -1, 0, 0, 0, 0 }
 
static CRITICAL_SECTION_DEBUG object_cs_debug
 
static struct handle_infohandle_table = NULL
 
static unsigned int handle_table_size = 0
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 21 of file handle.c.

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 < handle_table_size; i++)
86 if (!handle_table[i].u.obj && !handle_table[i].u.rem)
87 break;
88 if (i == handle_table_size)
89 {
90 struct handle_info *p;
91 int newsize;
93 {
94 newsize = 256;
95 p = calloc(newsize, sizeof(*p));
96 }
97 else
98 {
99 newsize = handle_table_size * 2;
100 p = realloc(handle_table, newsize * sizeof(*p));
101 if (p) memset(p + handle_table_size, 0, (newsize - handle_table_size) * sizeof(*p));
102 }
103 if (!p)
104 return 0;
105 handle_table = p;
106 handle_table_size = newsize;
107 }
108 return i + 1;
109}
#define realloc
Definition: debug_ros.c:6
static unsigned int handle_table_size
Definition: handle.c:69
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
unsigned int UINT
Definition: ndis.h:50
#define calloc
Definition: rosglue.h:14
#define memset(x, y, z)
Definition: compat.h:39

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{
137 struct handle_info *entry;
139
141
143 if (ret)
144 {
145 entry = &handle_table[ 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 handle_cs
Definition: handle.c:38
uint32_t entry
Definition: isohybrid.c:63
#define TRACE(s)
Definition: solgame.cpp:4
BOOL remote
Definition: handle.c:60
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)

Definition at line 111 of file handle.c.

112{
113 struct handle_info *entry;
115
117
119 if (ret)
120 {
121 entry = &handle_table[ ret - 1 ];
123 entry->u.obj = obj;
124 entry->dwThreadId = GetCurrentThreadId();
125 entry->remote = FALSE;
126 }
127
129
130 TRACE( "%p -> %lu\n", obj, ret );
131
132 return ret;
133}
#define FALSE
Definition: types.h:117
void msiobj_addref(MSIOBJECTHDR *info)
Definition: handle.c:217
MSIOBJECTHDR * obj
Definition: handle.c:62

Referenced by ACTION_CallScript(), MSI_ProcessMessageVerbatim(), MsiCreateRecord(), MsiDatabaseGetPrimaryKeysW(), MsiDatabaseOpenViewW(), MsiEnableUIPreview(), MsiGetActiveDatabase(), MsiGetSummaryInformationW(), MsiOpenDatabaseW(), MsiOpenPackageExW(), MsiOpenProductW(), MsiViewFetch(), MsiViewGetColumnInfo(), and s_remote_GetActionInfo().

◆ alloc_msiobject()

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

Definition at line 201 of file handle.c.

202{
204
205 info = calloc( 1, size );
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 free
Definition: debug_ros.c:5
#define NULL
Definition: types.h:112
static CRITICAL_SECTION object_cs
Definition: handle.c:48
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 < handle_table_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 (handle_table[handle].remote)
286 {
287 remote_CloseHandle( handle_table[handle].u.rem );
288 }
289 else
290 {
291 info = handle_table[handle].u.obj;
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
302 handle_table[handle].u.obj = NULL;
303 handle_table[handle].remote = 0;
304 handle_table[handle].dwThreadId = 0;
305
307
308 TRACE( "handle %lu destroyed\n", handle + 1 );
309out:
311 if( info )
313
314 return ret;
315}
#define ERR(fmt,...)
Definition: precomp.h:57
#define ERROR_SUCCESS
Definition: deptool.c:10
#define ERROR_INVALID_HANDLE
Definition: compat.h:98
int msiobj_release(MSIOBJECTHDR *info)
Definition: handle.c:241

Referenced by __wine_msi_call_dll_function(), __WINE_PRINTF_ATTR(), ACTION_CallScript(), add_custom_dll(), AutomationObject_Release(), create_database_suminfo(), 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(), 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 (handle_table[handle].remote)
167 goto out;
168 if (!handle_table[handle].u.obj)
169 goto out;
170 if (handle_table[handle].u.obj->magic != MSIHANDLE_MAGIC)
171 goto out;
172 if (type && (handle_table[handle].u.obj->type != type))
173 goto out;
174 ret = handle_table[handle].u.obj;
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 TRACE("object %p destroyed\n", info);
260 free( 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_ResolveSource(), 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_records_to_table(), add_stream(), add_table_to_db(), apply_patch_package(), arrange_record(), change_media(), check_transform_applicable(), combobox_add_items(), construct_record(), copy_remote_record(), CREATE_delete(), create_diff_row_query(), create_temp_binary(), create_temp_property_table(), deformat_string(), dialog_build_font_list(), dialog_button_handler(), dialog_create(), dialog_evaluate_control_conditions(), dialog_fill_controls(), dialog_get_uitext(), dialog_map_events(), dialog_oncreate(), dialog_radiogroup_control(), dialog_seltree_handler(), DISTINCT_delete(), event_set_target_path(), file_update_ui(), free_custom_action_data(), gather_merge_data(), get_assembly_display_name(), get_assembly_record(), get_checkbox_value(), get_key_value(), get_merge_table(), get_property(), get_property_row(), get_query_columns(), get_query_types(), get_signature(), get_table_labels(), get_transform_record(), 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(), listbox_add_items(), listview_add_items(), 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_image(), load_patch_disk_id(), load_picture(), mark_patched_components(), marshal_record(), media_get_disk_info(), merge_diff_row(), merge_diff_tables(), merge_free_rows(), merge_verify_colnames(), merge_verify_primary_keys(), msi_add_suminfo(), MSI_ApplicablePatchW(), msi_apply_registered_patch(), msi_clone_properties(), MSI_CloneRecord(), MSI_ClosePreview(), MSI_CloseView(), msi_create_table(), MSI_CreatePackage(), MSI_DatabaseExport(), MSI_DatabaseGetPrimaryKeys(), MSI_DatabaseOpenViewW(), MSI_EnableUIPreview(), msi_export_suminfo(), MSI_FormatRecordW(), MSI_FreePackage(), msi_get_db_suminfo(), msi_get_error_message(), msi_get_package_code(), msi_get_property(), msi_get_suminfo(), msi_get_suminfo_product(), MSI_IterateRecords(), msi_load_all_components(), msi_load_all_features(), msi_load_assembly(), msi_load_media_info(), msi_load_suminfo_properties(), MSI_OpenDatabaseW(), MSI_OpenPackageW(), msi_query_merge_record(), MSI_QueryGetRecord(), MSI_Sequence(), msi_set_property(), msi_table_apply_transform(), msi_ui_progress(), 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(), publish_icons(), refresh_record(), resolve_keypath(), search_components(), search_dr(), search_ini(), search_reg(), SELECT_insert_row(), SELECT_modify(), SELECT_set_row(), TABLE_add_column(), TABLE_drop(), table_load_transform(), 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(), unimplemented_action_stub(), unpublish_feature(), unpublish_icons(), 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

◆ handle_cs

◆ handle_cs_debug

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

Definition at line 39 of file handle.c.

◆ handle_table

Definition at line 68 of file handle.c.

◆ handle_table_size

◆ object_cs

static CRITICAL_SECTION object_cs = { &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().

◆ object_cs_debug

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

Definition at line 49 of file handle.c.