Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

список подключенных жестких дисков

50K
05 ноября 2009 года
sedoygosha
10 / / 27.10.2009
как через реестр получить список подключенных жестких дисков??????
48K
05 ноября 2009 года
Save.L
18 / / 18.09.2009
Цитата: sedoygosha
как через реестр получить список подключенных жестких дисков??????



HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IDE\название
смотрим, если там есть подветвь Control то диск подключен, если этой подветви нету - значит диск подключался ранее

50K
05 ноября 2009 года
sedoygosha
10 / / 27.10.2009
Цитата: Save.L
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IDE\название
смотрим, если там есть подветвь Control то диск подключен, если этой подветви нету - значит диск подключался ранее



Спасибо)) а как можно определить сушествует ветвь или нет?? спомошью каких функций??

48K
05 ноября 2009 года
Save.L
18 / / 18.09.2009
Цитата: sedoygosha
Спасибо)) а как можно определить сушествует ветвь или нет?? спомошью каких функций??



 
Код:
if (Reg->KeyExists("Control")){
    //ok
}



в общем у вас должно получиться что-то вроде:
Код:
TRegistry *Reg=new TRegistry;
Reg->RootKey = HKEY_LOCAL_MACHINE;

TStringList *list = new TStringList();
TStringList *list2 = new TStringList();

AnsiString put = "\\SYSTEM\\CurrentControlSet\\Enum\\IDE";
AnsiString clas = "";
  //.....
Reg->OpenKeyReadOnly(put); //открываем ветку
Reg->GetKeyNames(list);       //получаем все подветки

for(int i=0; i < list->Count; i++){ //проходимся по подветкам
  put = put+"\\"+list->Strings;
  Reg->OpenKeyReadOnly(put);
  Reg->GetKeyNames(list2);       //получаем все под-подветки

      for(int j=0; j < list2->Count; j++){
           Reg->OpenKeyReadOnly(put + "\\" + list2->Strings[j]);
           clas = Reg->ReadString("Class"); //считываем класс устройства
           if(clas == "DiskDrive")                //если это жестяк
              if (Reg->KeyExists("Control")){ //проверочка на Control
                  //АГА! Есть.
                  //получили название жестяка
                  ShowMessage(list->Strings);
              }
      }
}

Reg->CloseKey();
delete Reg;
delete list;
delete list2;

написал по памяти, не компилировал
50K
05 ноября 2009 года
sedoygosha
10 / / 27.10.2009
спасибо)))))) будем разбираться)))
50K
09 ноября 2009 года
sedoygosha
10 / / 27.10.2009
еше вопросик.... а где в реестре инфа про ком порты.. и про оперативку??
48K
09 ноября 2009 года
Save.L
18 / / 18.09.2009
Цитата: sedoygosha
еше вопросик.... а где в реестре инфа про ком порты.. и про оперативку??



не думаю что инфа об оперативке содержится в реестре!
Скорее она достается через APIшные функциии из зарезирвированной памяти устройств.

Про COM не в курсе.

1
09 ноября 2009 года
kot_
7.3K / / 20.01.2000
Цитата: Save.L
не думаю что инфа об оперативке содержится в реестре!


Информация о всех устройствах хранится в реестре. В том числе и о размере оперативной памяти, частоте процессора и т.п. И именно оттуда ряд функций возвращают указанные значение. Обращения непосредственно к устройствам в современной архитектуре ОС - достаточно затратно (и осуществляется на уровне ядра)- и поэтому данные операции стараются минимизировать. Обращения же к реестру таких затрат не требует и доступно для пользовательского уровня.
Топикстартеру - еще одно нарушение - и вы получите бан.
Тема закрыта.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог