35 #include "wine/list.h" 40 #define DEFAULT_INSTALLER_DESC "Active Setup Installation" 196 while (*
src && max_len-- > 1)
281 return This->priority;
294 FIXME(
"how to handle pv (%p)?\n", pv);
428 FIXME(
"(%p)->(%u, %p, %u, %p, %u, %p): stub\n",
This,
index,
cmd, cmd_size, switches, switch_size,
type);
476 *app =
This->size_app;
487 return This->size_download;
496 return This->size_extracted;
509 char *cancel,
DWORD cancel_size)
514 TRACE(
"(%p)->(%p, %u, %p, %u): semi-stub\n",
This,
progress, progress_size, cancel, cancel_size);
519 if (cancel_size > 0 && cancel)
558 return This->priority;
568 TRACE(
"(%p)->(%u, %p, %u, %p, %p, %p)\n",
This,
index,
id, id_size,
type, ver, build);
570 if (!
id || !ver || !build)
578 if (ICifFile_FindComponent(
This->parent,
entry->id, &dependency) ==
S_OK)
580 ICifComponent_GetVersion(dependency, ver, build);
605 return This->platform;
677 return This->installed;
704 return This->queue_state;
723 return This->size_download;
732 return This->current_priority;
794 *
ppv = &
This->IEnumCifComponents_iface;
833 ICifFile_Release(
This->file);
895 enumerator = heap_alloc_zero(
sizeof(*enumerator));
905 ICifFile_AddRef(
file);
918 *
ppv = &
This->IEnumCifGroups_iface;
957 ICifFile_Release(
This->file);
1007 enumerator = heap_alloc_zero(
sizeof(*enumerator));
1011 enumerator->
ref = 1;
1016 ICifFile_AddRef(
file);
1098 FIXME(
"how to handle pv (%p)?\n", pv);
1131 FIXME(
"how to handle pv (%p)?\n", pv);
1360 if (!
line)
goto done;
1366 if (!
next)
goto done;
1371 if (!
next)
goto done;
1376 if (!
next)
goto done;
1396 if (!
line)
goto done;
1438 if (!
line)
goto done;
1446 dependency = heap_alloc_zero(
sizeof(*dependency));
1447 if (!dependency)
goto done;
1450 if (!dependency->
id)
1457 if (dependency->
type) *dependency->
type++ = 0;
1494 url_entry = heap_alloc_zero(
sizeof(*url_entry));
1495 if (!url_entry)
goto error;
1501 if (!url_entry->
url || !*url_entry->
url)
1545 component = heap_alloc_zero(
sizeof(*component));
1557 if (!component->
id)
goto error;
1683 else if (
strcasecmp(section_name,
"Version") == 0)
1708 file = heap_alloc_zero(
sizeof(*
file));
1723 *icif = &
file->ICifFile_iface;
1728 ICifFile_Release(&
file->ICifFile_iface);
static DWORD WINAPI component_GetCurrentPriority(ICifComponent *iface)
void add_component_by_priority(struct ciffile *file, struct cifcomponent *component)
static BOOL section_get_str(struct inf_section *inf_sec, const char *key, char **value, const char *def)
static struct ciffenum_components * impl_from_IEnumCifComponents(IEnumCifComponents *iface)
struct inf_value * inf_get_value(struct inf_section *sec, const char *key)
static HRESULT WINAPI component_GetGroup(ICifComponent *iface, char *id, DWORD size)
static HRESULT WINAPI enum_components_QueryInterface(IEnumCifComponents *iface, REFIID riid, void **ppv)
static HRESULT WINAPI component_IsActiveSetupAware(ICifComponent *iface)
ACPI_SIZE strlen(const char *String)
static HRESULT process_version(struct ciffile *file, struct inf_section *section)
static HRESULT WINAPI component_GetVersion(ICifComponent *iface, DWORD *version, DWORD *build)
static void url_entry_free(struct url_info *url)
static HRESULT copy_substring_null(char *dest, int max_len, char *src)
char * strstr(char *String1, char *String2)
static const IEnumCifGroupsVtbl enum_groupsVtbl
ICifComponent ICifComponent_iface
static HRESULT WINAPI component_GetCommand(ICifComponent *iface, UINT index, char *cmd, DWORD cmd_size, char *switches, DWORD switch_size, DWORD *type)
static HRESULT WINAPI component_GetGUID(ICifComponent *iface, char *guid, DWORD size)
__WINE_SERVER_LIST_INLINE void list_add_head(struct list *list, struct list *elem)
static HRESULT process_section(struct ciffile *file, struct inf_section *section, const char *section_name)
static BOOL read_urls(struct cifcomponent *component, struct inf_section *section)
static BOOL read_platform_entry(struct inf_section *section, DWORD *ret_platform)
static HRESULT WINAPI component_GetSuccessKey(ICifComponent *iface, char *key, DWORD size)
static HRESULT WINAPI component_GetDetails(ICifComponent *iface, char *details, DWORD size)
static DWORD WINAPI group_GetCurrentPriority(ICifGroup *iface)
static HRESULT WINAPI ciffile_EnumModes(ICifFile *iface, IEnumCifModes **cuf_modes, DWORD filter, void *pv)
static HRESULT WINAPI component_GetUrl(ICifComponent *iface, UINT index, char *url, DWORD size, DWORD *flags)
static ULONG WINAPI enum_groups_AddRef(IEnumCifGroups *iface)
char * inf_value_get_value(struct inf_value *value)
static HRESULT WINAPI enum_groups_QueryInterface(IEnumCifGroups *iface, REFIID riid, void **ppv)
static BOOL section_get_dword(struct inf_section *inf_sec, const char *key, DWORD *value, DWORD def)
static const ICifComponentVtbl cifcomponentVtbl
static HRESULT WINAPI component_IsComponentDownloaded(ICifComponent *iface)
DWORD size_actual_download
void component_set_downloaded(ICifComponent *iface, BOOL value)
__WINE_SERVER_LIST_INLINE void list_add_tail(struct list *list, struct list *elem)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
static HRESULT WINAPI ciffile_EnumGroups(ICifFile *iface, IEnumCifGroups **enum_groups, DWORD filter, void *pv)
void component_set_actual_download_size(ICifComponent *iface, DWORD size)
static const ICifGroupVtbl cifgroupVtbl
char * inf_section_get_name(struct inf_section *section)
static HRESULT process_inf(struct ciffile *file, struct inf_file *inf)
static DWORD WINAPI component_IsThisVersionInstalled(ICifComponent *iface, DWORD version, DWORD build, DWORD *ret_version, DWORD *ret_build)
static HRESULT WINAPI group_EnumComponents(ICifGroup *iface, IEnumCifComponents **enum_components, DWORD filter, LPVOID pv)
HRESULT WINAPI GetICifRWFileFromFile(ICifRWFile **icif, const char *path)
void inf_free(struct inf_file *inf)
static BOOL section_get_dword_field(struct inf_section *inf_sec, const char *key, int field, DWORD *value, DWORD def)
static HRESULT process_component(struct ciffile *file, struct inf_section *section, const char *section_name)
static const WCHAR desc[]
static BOOL read_dependencies(struct cifcomponent *component, struct inf_section *section)
static HRESULT enum_components_create(ICifFile *file, struct list *start, char *group_id, IEnumCifComponents **iface)
static UINT enum_components(const WCHAR *usersid, DWORD ctx, DWORD index, DWORD *idx, WCHAR guid[39], MSIINSTALLCONTEXT *installed_ctx, LPWSTR sid, LPDWORD sid_len)
static ULONG WINAPI ciffile_Release(ICifFile *iface)
static void dependency_entry_free(struct dependency_info *dependency)
static HRESULT enum_groups_create(ICifFile *file, struct list *start, IEnumCifGroups **iface)
static BOOL value_get_str_field(struct inf_value *inf_val, int field, char **value, const char *def)
static const WCHAR version[]
WDF_INTERRUPT_PRIORITY priority
static ULONG WINAPI enum_components_Release(IEnumCifComponents *iface)
static struct cifgroup * impl_from_ICifGroup(ICifGroup *iface)
static HRESULT WINAPI group_GetID(ICifGroup *iface, char *id, DWORD size)
static HRESULT WINAPI component_GetProgressKeys(ICifComponent *iface, char *progress, DWORD progress_size, char *cancel, DWORD cancel_size)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
char * component_get_id(ICifComponent *iface)
static BOOL read_version_entry(struct inf_section *section, DWORD *ret_ver, DWORD *ret_build)
static HRESULT load_ciffile(const char *path, ICifFile **icif)
__WINE_SERVER_LIST_INLINE void list_remove(struct list *elem)
static BOOL value_get_dword_field(struct inf_value *inf_val, int field, DWORD *value, DWORD def)
static HRESULT WINAPI component_GetFileExtractList(ICifComponent *iface, UINT index, char *list, DWORD size)
static HRESULT WINAPI ciffile_GetDescription(ICifFile *iface, char *desc, DWORD size)
static HRESULT WINAPI component_GetPatchID(ICifComponent *iface, char *id, DWORD size)
static HRESULT WINAPI component_GetDetVersion(ICifComponent *iface, char *dll, DWORD dll_size, char *entry, DWORD entry_size)
WINE_DEFAULT_DEBUG_CHANNEL(inseng)
static char * next_part(char **str, BOOL strip_quotes)
static HRESULT WINAPI component_GetCustomData(ICifComponent *iface, char *key, char *data, DWORD size)
static HRESULT WINAPI component_GetUrlCheckRange(ICifComponent *iface, UINT index, DWORD *min, DWORD *max)
BOOL inf_next_section(struct inf_file *inf, struct inf_section **sec)
static DWORD WINAPI component_GetPlatform(ICifComponent *iface)
static DWORD WINAPI component_IsComponentInstalled(ICifComponent *iface)
IEnumCifComponents IEnumCifComponents_iface
static HRESULT WINAPI component_GetUninstallKey(ICifComponent *iface, char *key, DWORD size)
static struct cifcomponent * impl_from_ICifComponent(ICifComponent *iface)
static HRESULT WINAPI component_IsUIVisible(ICifComponent *iface)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
static DWORD WINAPI component_GetExtractSize(ICifComponent *iface)
static void group_free(struct cifgroup *group)
static DWORD WINAPI component_GetActualDownloadSize(ICifComponent *iface)
static DWORD WINAPI group_GetPriority(ICifGroup *iface)
GLenum GLenum GLuint components
static HRESULT WINAPI component_GetID(ICifComponent *iface, char *id, DWORD size)
HRESULT inf_load(const char *path, struct inf_file **inf_file)
void component_set_installed(ICifComponent *iface, BOOL value)
#define InterlockedDecrement
static HRESULT WINAPI component_GetMode(ICifComponent *iface, UINT index, char *mode, DWORD size)
static DWORD WINAPI component_GetPriority(ICifComponent *iface)
static struct ciffenum_groups * impl_from_IEnumCifGroups(IEnumCifGroups *iface)
static HRESULT WINAPI ciffile_FindMode(ICifFile *iface, const char *id, ICifMode **mode)
static ULONG WINAPI enum_components_AddRef(IEnumCifComponents *iface)
GLsizei const GLfloat * value
HRESULT WINAPI GetICifFileFromFile(ICifFile **icif, const char *path)
static HRESULT process_group(struct ciffile *file, struct inf_section *section, const char *section_name)
static DWORD WINAPI component_GetInstallQueueState(ICifComponent *iface)
static HRESULT WINAPI group_GetDescription(ICifGroup *iface, char *desc, DWORD size)
static HRESULT WINAPI ciffile_FindComponent(ICifFile *iface, const char *id, ICifComponent **component)
static HRESULT WINAPI component_IsRebootRequired(ICifComponent *iface)
static BOOL copy_string(char **dest, const char *source)
static unsigned __int64 next
static struct ciffile * impl_from_ICiffile(ICifFile *iface)
static UNICODE_STRING value_str
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
static HRESULT WINAPI component_SetInstallQueueState(ICifComponent *iface, DWORD state)
#define InterlockedIncrement
BOOL inf_section_next_value(struct inf_section *sec, struct inf_value **value)
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
static const IEnumCifComponentsVtbl enum_componentsVtbl
static HRESULT WINAPI component_GetTreatAsOneComponents(ICifComponent *iface, UINT index, char *id, DWORD size)
static HRESULT WINAPI component_GetDependency(ICifComponent *iface, UINT index, char *id, DWORD id_size, char *type, DWORD *ver, DWORD *build)
static ULONG WINAPI ciffile_AddRef(ICifFile *iface)
static HRESULT WINAPI enum_groups_Next(IEnumCifGroups *iface, ICifGroup **group)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
__WINE_SERVER_LIST_INLINE void list_add_before(struct list *elem, struct list *to_add)
static HRESULT WINAPI ciffile_FindGroup(ICifFile *iface, const char *id, ICifGroup **group)
static HRESULT WINAPI component_GetDescription(ICifComponent *iface, char *desc, DWORD size)
static HRESULT WINAPI enum_groups_Reset(IEnumCifGroups *iface)
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)
_Check_return_ long __cdecl strtol(_In_z_ const char *_Str, _Out_opt_ _Deref_post_z_ char **_EndPtr, _In_ int _Radix)
__WINE_SERVER_LIST_INLINE struct list * list_next(const struct list *list, const struct list *elem)
__WINE_SERVER_LIST_INLINE void list_init(struct list *list)
IEnumCifGroups IEnumCifGroups_iface
static HRESULT WINAPI ciffile_EnumComponents(ICifFile *iface, IEnumCifComponents **enum_components, DWORD filter, void *pv)
int strcmp(const char *String1, const char *String2)
static HRESULT WINAPI component_GetLocale(ICifComponent *iface, char *locale, DWORD size)
static HRESULT WINAPI enum_components_Reset(IEnumCifComponents *iface)
static void component_free(struct cifcomponent *comp)
static HRESULT WINAPI enum_components_Next(IEnumCifComponents *iface, ICifComponent **component)
static const ICifFileVtbl ciffileVtbl
char * inf_value_get_key(struct inf_value *value)
static void strip_quotes(WCHAR *word, WCHAR **end)
static DWORD WINAPI component_GetDownloadSize(ICifComponent *iface)
GLuint GLuint GLsizei GLenum type
ICifGroup ICifGroup_iface
char * trim(char *str, char **last_chr, BOOL strip_quotes)
static HRESULT WINAPI component_GetInstalledSize(ICifComponent *iface, DWORD *win, DWORD *app)
static LPSTR strdupA(LPCSTR str)
#define DEFAULT_INSTALLER_DESC
static HRESULT WINAPI ciffile_GetDetDlls(ICifFile *iface, char *dlls, DWORD size)
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
static HRESULT WINAPI ciffile_QueryInterface(ICifFile *iface, REFIID riid, void **ppv)
static ULONG WINAPI enum_groups_Release(IEnumCifGroups *iface)
static HRESULT WINAPI component_RequiresAdminRights(ICifComponent *iface)
static HRESULT WINAPI component_SetCurrentPriority(ICifComponent *iface, DWORD priority)
static BOOL heap_free(void *mem)