Цитата(DVF @ Oct 29 2009, 16:46)

Не понятно как шить в EEPROM утилитой Mprog от FTDI и не плодить порты в компе? Ведь, в самом начале по умолчанию каждой следующей будет присваиваться порт по нарастающей...
Будет! И если шить много (несколько десятков даже) еще и винды глючить начинают!
Поэтому надо переодически чистить! Вот моя функция, которая сбрасывает базу данных портов, и enum FTDI, но т.к. база сбрасывается и есть другие USB порты, могут быть конфликты!
CODE
bool ResetEnum(void)
{
HKEY hKey;
unsigned err;
DWORD len;
BYTE Buf[32];
char SubName[256];
puts("Reseting COM enum");
if (err=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control\\COM Name Arbiter",0,
KEY_ENUMERATE_SUB_KEYS | KEY_READ | KEY_SET_VALUE,&hKey)) {
printf("Error: %d Opening HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\COM Name Arbiter\n",err);
return false;
}
memset(Buf,0,32);
Buf[0]=3;
if (err=RegSetValueEx(hKey,"ComDB",0,REG_BINARY,Buf,32)) {
RegCloseKey(hKey);
printf("Error: %d",err);
return false;
}
RegCloseKey(hKey);
puts("Deleting FTDI entries");
if (err=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Enum\\FTDIBUS",0,
KEY_ENUMERATE_SUB_KEYS | KEY_READ | KEY_SET_VALUE,&hKey)) {
printf("Error: %d Opening HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\FTDIBUS\n",err);
return false;
}
while(1) {
len=256;
err=RegEnumKeyEx(hKey,0,SubName,&len,0,0,0,0);
if (err) break;
err=SHDeleteKey(hKey,SubName);
if (err) {
printf("Error: %d\n",err);
continue;
}
}
RegCloseKey(hKey);
puts("ok");
return true;
}