Перечислить все девайсы функциями ntdll. Как это сделать?

Тема в разделе "WASM.WIN32", создана пользователем coocky, 12 дек 2007.

  1. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Собственно сабж.Нужно перечислить все устройства функциями ntdll.
    Вернее перечислить все логические диски (А: C: D: F: и т.д.).
    Нигде не могу найти
     
  2. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    NtQueryInformationProcess с классом информации ProcessDeviceMap = 0x17 = 23
     
  3. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    diamond
    Спасибо.Быстро,лаконично и доступно :)
     
  4. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Вопрос в догонку
    Делаю так
    Код (Text):
    1.         PROCESS_DEVICEMAP_INFORMATION info;
    2.         ZwQueryInformationProcess(NtCurrentProcess(),ProcessDeviceMap,&info.Query,sizeof (info.Query),NULL);
    Получаю массив.Из него видно, к примеру,что [0]=2 [2]=3 [3]=3

    Я так понял,что цифра-тип устройства, а сама буква соотвествует элементу массива [0]=A [2]=C [3]=D
    Т.е. парсить прийдется руками. А вот как узнать наличие диска из этой структуры,т.е. получить битовый флаг?
    И что такое переменая ULONG DriveMap? Она у меня равна 29;
     
  5. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Вообщем,кажется,разобрался :)
    Код (Text):
    1. for (int i = 0;  i < 26; i++)
    2.     {
    3.         if ((info.Query.DriveMap & (1 << i)))
    4.         {
    5.             CHAR disk='A'+i;
    6.         }
    7.     }
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Еще как вариант можно перечислить символические ссылки. Можно даже узнать какой девайс что представляет, сделав QueryDosDevice
     
  7. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Great
    Да так-то понятно,но мне только функции ntdll....