[Com0com-cvs] com0com/setup setup.cpp,1.1,1.2
The virtual serial port driver for Windows.
Brought to you by:
vfrolov
From: Vyacheslav F. <vf...@us...> - 2006-08-25 10:37:00
|
Update of /cvsroot/com0com/com0com/setup In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv26810 Modified Files: setup.cpp Log Message: Added C0C_PREF_PORT_NAME_A and C0C_PREF_PORT_NAME_B defines Added deleting Class subkeys Index: setup.cpp =================================================================== RCS file: /cvsroot/com0com/com0com/setup/setup.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** setup.cpp 28 Jul 2006 12:16:42 -0000 1.1 --- setup.cpp 25 Aug 2006 10:36:48 -0000 1.2 *************** *** 20,23 **** --- 20,27 ---- * * $Log$ + * Revision 1.2 2006/08/25 10:36:48 vfrolov + * Added C0C_PREF_PORT_NAME_A and C0C_PREF_PORT_NAME_B defines + * Added deleting Class subkeys + * * Revision 1.1 2006/07/28 12:16:42 vfrolov * Initial revision *************** *** 33,39 **** #include "utils.h" - #define C0C_INF_NAME "com0com.inf" #define C0C_BUS_DEVICE_ID "root\\com0com" #define C0C_PORT_DEVICE_ID "com0com\\port" #define C0C_CLASS_GUID "{df799e12-3c56-421b-b298-b6d3642bc878}" #define C0C_CLASS "CNCPorts" --- 37,46 ---- #include "utils.h" #define C0C_BUS_DEVICE_ID "root\\com0com" #define C0C_PORT_DEVICE_ID "com0com\\port" + #define C0C_PREF_PORT_NAME_A "CNCA" + #define C0C_PREF_PORT_NAME_B "CNCB" + + #define C0C_INF_NAME "com0com.inf" #define C0C_CLASS_GUID "{df799e12-3c56-421b-b298-b6d3642bc878}" #define C0C_CLASS "CNCPorts" *************** *** 55,59 **** char phPortName[20]; ! SNPRINTF(phPortName, sizeof(phPortName), "CNC%c%d", j ? 'B' : 'A', i); PortParameters portParameters(C0C_SERVICE, phPortName); --- 62,66 ---- char phPortName[20]; ! SNPRINTF(phPortName, sizeof(phPortName), "%s%d", j ? C0C_PREF_PORT_NAME_B : C0C_PREF_PORT_NAME_A, i); PortParameters portParameters(C0C_SERVICE, phPortName); *************** *** 135,139 **** pParameters = j ? pParametersB : pParametersA; ! SNPRINTF(phPortName, sizeof(phPortName), "CNC%c%d", j ? 'B' : 'A', i); PortParameters portParameters(C0C_SERVICE, phPortName); --- 142,146 ---- pParameters = j ? pParametersB : pParametersA; ! SNPRINTF(phPortName, sizeof(phPortName), "%s%d", j ? C0C_PREF_PORT_NAME_B : C0C_PREF_PORT_NAME_A, i); PortParameters portParameters(C0C_SERVICE, phPortName); *************** *** 290,293 **** --- 297,334 ---- err = RegDeleteKey(hKey, infFile.ClassGUID()); + if (err != ERROR_SUCCESS) { + HKEY hClassGuidKey; + err = RegOpenKeyEx(hKey, infFile.ClassGUID(), 0, KEY_READ, &hClassGuidKey); + + if (err == ERROR_SUCCESS) { + for (;;) { + char subKey[MAX_PATH+1]; + DWORD subKeySize = sizeof(subKey)/sizeof(subKey[0]); + + err = RegEnumKeyEx(hClassGuidKey, 0, subKey, &subKeySize, NULL, NULL, NULL, NULL); + + if (err != ERROR_SUCCESS) + break; + + err = RegDeleteKey(hClassGuidKey, subKey); + + if (err == ERROR_SUCCESS) + Trace("Deleted Class subkey %s\\%s\n", infFile.ClassGUID(), subKey); + else + if (err != ERROR_FILE_NOT_FOUND) { + ShowError(MB_OK|MB_ICONWARNING, err, "RegDeleteKey(%s\\%s)", infFile.ClassGUID(), subKey); + break; + } + } + + err = RegCloseKey(hClassGuidKey); + + if (err != ERROR_SUCCESS) + ShowError(MB_OK|MB_ICONWARNING, err, "RegCloseKey()"); + } + + err = RegDeleteKey(hKey, infFile.ClassGUID()); + } + if (err == ERROR_SUCCESS) { Trace("Deleted Class %s\n", infFile.ClassGUID()); *************** *** 360,364 **** , pProgName); Trace( ! " %s change CNCA0 EmuBR=yes,EmuOverrun=yes\n" , pProgName); --- 401,405 ---- , pProgName); Trace( ! " %s change " C0C_PREF_PORT_NAME_A "0 EmuBR=yes,EmuOverrun=yes\n" , pProgName); |