diff --git a/reactos/include/wine/cfgmgr32.h b/reactos/include/wine/cfgmgr32.h index e29063acb1b..e7d036fc63a 100644 --- a/reactos/include/wine/cfgmgr32.h +++ b/reactos/include/wine/cfgmgr32.h @@ -36,13 +36,16 @@ typedef CHAR *DEVINSTID_A; typedef WCHAR *DEVINSTID_W; DECL_WINELIB_CFGMGR32_TYPE_AW(DEVINSTID) - #define CR_SUCCESS 0x00000000 #define CR_OUT_OF_MEMORY 0x00000002 #define CR_INVALID_DATA 0x0000001F #define CR_INVALID_MACHINENAME 0x0000002F #define CR_ACCESS_DENIED 0x00000033 +#define MAX_CLASS_NAME_LEN 32 +#define MAX_GUID_STRING_LEN 39 +#define MAX_PROFILE_LEN 80 + CONFIGRET WINAPI CM_Connect_MachineA( PCSTR, PHMACHINE ); CONFIGRET WINAPI CM_Connect_MachineW( PCWSTR, PHMACHINE ); diff --git a/reactos/lib/setupapi/devinst.c b/reactos/lib/setupapi/devinst.c index 30f8978a75f..f5778011077 100644 --- a/reactos/lib/setupapi/devinst.c +++ b/reactos/lib/setupapi/devinst.c @@ -34,6 +34,7 @@ #include "setupapi.h" #include "wine/debug.h" #include "wine/unicode.h" +#include "cfgmgr32.h" #include "initguid.h" #include "winioctl.h" #include "rpc.h" @@ -469,8 +470,24 @@ BOOL WINAPI SetupDiClassNameFromGuidExA( PCSTR MachineName, PVOID Reserved) { - FIXME("\n"); - return FALSE; + WCHAR ClassNameW[MAX_CLASS_NAME_LEN]; + LPWSTR MachineNameW = NULL; + BOOL ret; + + if (MachineName) + MachineNameW = MultiByteToUnicode(MachineName, CP_ACP); + ret = SetupDiClassNameFromGuidExW(ClassGuid, ClassNameW, MAX_CLASS_NAME_LEN, + NULL, MachineNameW, Reserved); + if (ret) + { + int len = WideCharToMultiByte(CP_ACP, 0, ClassNameW, -1, ClassName, + ClassNameSize, NULL, NULL); + + if (!ClassNameSize && RequiredSize) + *RequiredSize = len; + } + MyFree(MachineNameW); + return ret; } /*********************************************************************** @@ -859,8 +876,7 @@ static HDEVINFO SETUP_CreateSerialDeviceList(void) size *= 2; if (devices != buf) HeapFree(GetProcessHeap(), 0, devices); - devices = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, - size * sizeof(WCHAR)); + devices = HeapAlloc(GetProcessHeap(), 0, size * sizeof(WCHAR)); if (!devices) failed = TRUE; else @@ -892,7 +908,7 @@ static HDEVINFO SETUP_CreateSerialDeviceList(void) { if (!strncmpW(comW, ptr, sizeof(comW) / sizeof(comW[0]) - 1)) { - strncpyW(list->names[list->numPorts].name, ptr, + lstrcpynW(list->names[list->numPorts].name, ptr, sizeof(list->names[list->numPorts].name) / sizeof(list->names[list->numPorts].name[0])); TRACE("Adding %s to list\n", diff --git a/reactos/lib/setupapi/diskspace.c b/reactos/lib/setupapi/diskspace.c index 4bff4c66f36..c3b303e8896 100644 --- a/reactos/lib/setupapi/diskspace.c +++ b/reactos/lib/setupapi/diskspace.c @@ -58,7 +58,7 @@ HDSKSPC WINAPI SetupCreateDiskSpaceListW(PVOID Reserved1, DWORD Reserved2, UINT if (rc == 0) return NULL; - list = (LPDISKSPACELIST)HeapAlloc(GetProcessHeap(),0,sizeof(DISKSPACELIST)); + list = HeapAlloc(GetProcessHeap(),0,sizeof(DISKSPACELIST)); list->dwDriveCount = 0; diff --git a/reactos/lib/setupapi/setupcab.c b/reactos/lib/setupapi/setupcab.c index 470f8aaa933..0a00ef996f6 100644 --- a/reactos/lib/setupapi/setupcab.c +++ b/reactos/lib/setupapi/setupcab.c @@ -363,9 +363,7 @@ static INT_PTR sc_FNNOTIFY_A(FDINOTIFICATIONTYPE fdint, PFDINOTIFICATION pfdin) } else { if (mysterio[0]) { /* some easy paranoia. no such carefulness exists on the wide API IIRC */ - mysterio[SIZEOF_MYSTERIO - 1] = '\0'; - strncpy(pfdin->psz3, &(mysterio[0]), 255); - mysterio[255] = '\0'; + lstrcpynA(pfdin->psz3, &(mysterio[0]), SIZEOF_MYSTERIO); } return 0; } diff --git a/reactos/lib/setupapi/stubs.c b/reactos/lib/setupapi/stubs.c index fa0cbd8a498..f392481a362 100644 --- a/reactos/lib/setupapi/stubs.c +++ b/reactos/lib/setupapi/stubs.c @@ -99,7 +99,7 @@ BOOL WINAPI SetupCopyOEMInfA(PCSTR sourceinffile, PCSTR sourcemedialoc, DWORD destnamesize, PDWORD required, PSTR *destinfnamecomponent) { - FIXME("stub: source %s location %s ...\n",sourceinffile, sourcemedialoc); + FIXME("stub: source %s location %s ...\n",sourceinffile, sourcemedialoc); return FALSE; }