From: Rémi Bernon <rbernon@codeweavers.com> --- dlls/setupapi/devinst.c | 200 ------------------------------------ dlls/setupapi/setupapi.spec | 16 +-- 2 files changed, 8 insertions(+), 208 deletions(-) diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c index fa8067725be..bb06423f789 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c @@ -4562,206 +4562,6 @@ CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA(ULONG *len, const char *filter, ULO return CM_Get_Device_ID_List_Size_ExA(len, filter, flags, NULL); } -static CONFIGRET get_device_interface_list(const GUID *class_guid, DEVINSTID_W device_id, WCHAR *buffer, ULONG *len, - ULONG flags) -{ - const ULONG supported_flags = CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES; - - SP_DEVICE_INTERFACE_DATA iface = {sizeof(iface)}; - SP_DEVINFO_DATA device = { sizeof(device) }; - ULONG query_flags = DIGCF_DEVICEINTERFACE; - unsigned int i, id_len; - HDEVINFO set; - ULONG needed; - WCHAR *p; - - if (!len || (buffer && !*len)) - return CR_INVALID_POINTER; - - needed = 1; - - if (buffer) - *buffer = 0; - if (flags & ~supported_flags) - FIXME("Flags %#lx are not supported.\n", flags); - - if (!buffer) - *len = 0; - - if (!buffer) - *len = needed; - - if (!(flags & CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES)) query_flags |= DIGCF_PRESENT; - set = SetupDiGetClassDevsW(class_guid, device_id, NULL, query_flags); - if (set == INVALID_HANDLE_VALUE) - return CR_SUCCESS; - - p = buffer; - for (i = 0; SetupDiEnumDeviceInterfaces(set, NULL, class_guid, i, &iface); ++i) - { - struct device_iface *device_iface; - device_iface = get_device_iface(set, &iface); - id_len = wcslen(device_iface->symlink) + 1; - needed += id_len; - if (buffer) - { - if (needed > *len) - { - SetupDiDestroyDeviceInfoList(set); - *buffer = 0; - return CR_BUFFER_SMALL; - } - memcpy(p, device_iface->symlink, sizeof(*p) * id_len); - p += id_len; - } - } - SetupDiDestroyDeviceInfoList(set); - *len = needed; - if (buffer) - *p = 0; - return CR_SUCCESS; -} - -/*********************************************************************** - * CM_Get_Device_Interface_List_Size_ExW (SETUPAPI.@) - */ -CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExW(PULONG len, LPGUID class, DEVINSTID_W id, - ULONG flags, HMACHINE machine) -{ - TRACE("%p %s %s 0x%08lx %p\n", len, debugstr_guid(class), debugstr_w(id), flags, machine); - - if (machine) - FIXME("machine %p.\n", machine); - - return get_device_interface_list(class, id, NULL, len, flags); -} - -/*********************************************************************** - * CM_Get_Device_Interface_List_SizeW (SETUPAPI.@) - */ -CONFIGRET WINAPI CM_Get_Device_Interface_List_SizeW(PULONG len, LPGUID class, DEVINSTID_W id, ULONG flags) -{ - TRACE("%p %s %s 0x%08lx\n", len, debugstr_guid(class), debugstr_w(id), flags); - return get_device_interface_list(class, id, NULL, len, flags); -} - -/*********************************************************************** - * CM_Get_Device_Interface_List_W (SETUPAPI.@) - */ -CONFIGRET WINAPI CM_Get_Device_Interface_List_ExW(LPGUID class, DEVINSTID_W id, PZZWSTR buffer, ULONG len, ULONG flags, - HMACHINE machine) -{ - TRACE("%s %s %p %lu %#lx\n", debugstr_guid(class), debugstr_w(id), buffer, len, flags); - - if (machine) - FIXME("machine %p.\n", machine); - - return get_device_interface_list(class, id, buffer, &len, flags); -} - -/*********************************************************************** - * CM_Get_Device_Interface_List_W (SETUPAPI.@) - */ -CONFIGRET WINAPI CM_Get_Device_Interface_ListW(LPGUID class, DEVINSTID_W id, PZZWSTR buffer, ULONG len, ULONG flags) -{ - TRACE("%s %s %p %lu %#lx\n", debugstr_guid(class), debugstr_w(id), buffer, len, flags); - - return get_device_interface_list(class, id, buffer, &len, flags); -} - -/*********************************************************************** - * CM_Get_Device_Interface_List_SizeA (SETUPAPI.@) - */ -CONFIGRET WINAPI CM_Get_Device_Interface_List_SizeA(PULONG len, LPGUID class, DEVINSTID_A id, - ULONG flags) -{ - return CM_Get_Device_Interface_List_Size_ExA(len, class, id, flags, NULL); -} - -/*********************************************************************** - * CM_Get_Device_Interface_List_Size_ExA (SETUPAPI.@) - */ -CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExA(PULONG len, LPGUID class, DEVINSTID_A id, - ULONG flags, HMACHINE machine) -{ - WCHAR *wid = NULL; - unsigned int slen; - CONFIGRET ret; - - TRACE("%p %s %s 0x%08lx %p\n", len, debugstr_guid(class), debugstr_a(id), flags, machine); - - if (machine) - FIXME("machine %p.\n", machine); - - if (id) - { - slen = strlen(id) + 1; - if (!(wid = malloc(slen * sizeof(*wid)))) - return CR_OUT_OF_MEMORY; - MultiByteToWideChar(CP_ACP, 0, id, slen, wid, slen); - } - ret = CM_Get_Device_Interface_List_SizeW(len, class, wid, flags); - free(wid); - return ret; -} - -/*********************************************************************** - * CM_Get_Device_Interface_List_ExA (SETUPAPI.@) - */ -CONFIGRET WINAPI CM_Get_Device_Interface_List_ExA(LPGUID class, DEVINSTID_A id, PZZSTR buffer, ULONG len, ULONG flags, - HMACHINE machine) -{ - WCHAR *wbuffer, *wid = NULL, *p; - unsigned int slen; - CONFIGRET ret; - - TRACE("%s %s %p %lu 0x%08lx %p\n", debugstr_guid(class), debugstr_a(id), buffer, len, flags, machine); - - if (machine) - FIXME("machine %p.\n", machine); - - if (!buffer || !len) - return CR_INVALID_POINTER; - - if (!(wbuffer = malloc(len * sizeof(*wbuffer)))) - return CR_OUT_OF_MEMORY; - - if (id) - { - slen = strlen(id) + 1; - if (!(wid = malloc(slen * sizeof(*wid)))) - { - free(wbuffer); - return CR_OUT_OF_MEMORY; - } - MultiByteToWideChar(CP_ACP, 0, id, slen, wid, slen); - } - - if (!(ret = CM_Get_Device_Interface_List_ExW(class, wid, wbuffer, len, flags, machine))) - { - p = wbuffer; - while (*p) - { - slen = wcslen(p) + 1; - WideCharToMultiByte(CP_ACP, 0, p, slen, buffer, slen, NULL, NULL); - p += slen; - buffer += slen; - } - *buffer = 0; - } - free(wid); - free(wbuffer); - return ret; -} - -/*********************************************************************** - * CM_Get_Device_Interface_ListA (SETUPAPI.@) - */ -CONFIGRET WINAPI CM_Get_Device_Interface_ListA(LPGUID class, DEVINSTID_A id, PZZSTR buffer, ULONG len, ULONG flags) -{ - return CM_Get_Device_Interface_List_ExA(class, id, buffer, len, flags, NULL); -} - /*********************************************************************** * SetupDiGetINFClassA (SETUPAPI.@) */ diff --git a/dlls/setupapi/setupapi.spec b/dlls/setupapi/setupapi.spec index a690d6538b3..6bfe922a1d7 100644 --- a/dlls/setupapi/setupapi.spec +++ b/dlls/setupapi/setupapi.spec @@ -93,14 +93,14 @@ @ stdcall CM_Get_Device_Interface_AliasW(wstr ptr ptr ptr long) @ stub CM_Get_Device_Interface_Alias_ExA @ stub CM_Get_Device_Interface_Alias_ExW -@ stdcall CM_Get_Device_Interface_ListA(ptr ptr ptr long long) -@ stdcall CM_Get_Device_Interface_ListW(ptr ptr ptr long long) -@ stdcall CM_Get_Device_Interface_List_ExA(ptr ptr ptr long long ptr) -@ stdcall CM_Get_Device_Interface_List_ExW(ptr ptr ptr long long ptr) -@ stdcall CM_Get_Device_Interface_List_SizeA(ptr ptr str long) -@ stdcall CM_Get_Device_Interface_List_SizeW(ptr ptr wstr long) -@ stdcall CM_Get_Device_Interface_List_Size_ExA(ptr ptr str long ptr) -@ stdcall CM_Get_Device_Interface_List_Size_ExW(ptr ptr wstr long ptr) +@ stdcall CM_Get_Device_Interface_ListA(ptr ptr ptr long long) cfgmgr32.CM_Get_Device_Interface_ListA +@ stdcall CM_Get_Device_Interface_ListW(ptr ptr ptr long long) cfgmgr32.CM_Get_Device_Interface_ListW +@ stdcall CM_Get_Device_Interface_List_ExA(ptr ptr ptr long long ptr) cfgmgr32.CM_Get_Device_Interface_List_ExA +@ stdcall CM_Get_Device_Interface_List_ExW(ptr ptr ptr long long ptr) cfgmgr32.CM_Get_Device_Interface_List_ExW +@ stdcall CM_Get_Device_Interface_List_SizeA(ptr ptr str long) cfgmgr32.CM_Get_Device_Interface_List_SizeA +@ stdcall CM_Get_Device_Interface_List_SizeW(ptr ptr wstr long) cfgmgr32.CM_Get_Device_Interface_List_SizeW +@ stdcall CM_Get_Device_Interface_List_Size_ExA(ptr ptr str long ptr) cfgmgr32.CM_Get_Device_Interface_List_Size_ExA +@ stdcall CM_Get_Device_Interface_List_Size_ExW(ptr ptr wstr long ptr) cfgmgr32.CM_Get_Device_Interface_List_Size_ExW @ stub CM_Get_First_Log_Conf @ stub CM_Get_First_Log_Conf_Ex @ stub CM_Get_Global_State -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10242