Форум: "WinAPI";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
ВнизСписок всех дисков (не томов, именно физических дисков). Найти похожие ветки
← →
Riply © (2007-11-27 00:56) [40]> [38] slow!alfamoon!com (26.11.07 23:36)
Спасибо.
Ну "Name" из "ArcName" получить на сложно.
А каким образом они получают SymLink ?
← →
Riply © (2007-11-27 01:13) [41]> [40] Riply © (27.11.07 00:56)
> А каким образом они получают SymLink ?
А ларчик просто открывался: NtOpenSymbolicLinkObject :)
← →
Riply © (2007-11-27 01:16) [42]>[41] Riply © (27.11.07 01:13)
Sorry.
Не ту функциюию скопипайстила :)
NtOpenSymbolicLinkObject читать как NtQuerySymbolicLinkObject
← →
Riply © (2007-11-27 04:01) [43]ArcName все же не совсем то.
В ней только "стационарные" объекты.
Во всяком случае, у меня Zip disk`а и флешек в ней нет.
Очень не плохо получается, если взять за корень \Device
и перебрать все ее содержимое (не рекурсивно), фильтруя по
OBJECT_DIRECTORY_INFORMATION.TypeName равным Directory.
Остается совсем мало объектов, среди которых
сидят и все HardDisk%d. (у меня присутствуют все).
Что и требовалось :)
А как бонус за все страдания: внутри них, на блюдечке с голубой каемочкой,
находим имена их партишенов
(сканировать с фильтром Obj.TypeName равным SymbolicLink).
P.S.
Реклама:
Летайте самолетами... Тьфу !
Пользуйтесь утилитами от Mark Russinovich.
Смотрите на систему с высоты птичьего полета ! :)
← →
slow!alfamoon!com (2007-11-27 10:34) [44]Riply,
На мой взгляд, лучше (и удобнее) использовать WinObjEx (можно взять в разделе Инструменты на wasm.ru), чем аналогичный утиль от Руссиновича. Аналогично с autoruns.. Лучше OSAM от online-solutions нежели autoruns от Руссиновича (проверял)
← →
Riply © (2007-11-27 11:53) [45]> [44] slow!alfamoon!com (27.11.07 10:34)
> Лучше OSAM от online-solutions нежели autoruns от Руссиновича
А можно аргументировать ? :)
P.S.
Я доверяю только трем известным производителям
програмного обеспечения: Microsoft, Borland и Riply :)
← →
slow!alfamoon!com (2007-11-27 16:13) [46]
>
> А можно аргументировать ? :)
>
> P.S.
> Я доверяю только трем известным производителям
> програмного обеспечения: Microsoft, Borland и Riply :)
>
Можно.
1) Количество мест автозагрузки в OSAM больше чем в autoruns
2) Доступ к реестру без использования API (как к файлу)
3) Визуально удобнее и информации больше.
← →
guav © (2007-11-27 17:05) [47]Предлагаю для решения задачи сопоставления томов и дисков использовать IOCTL_MOUNTMGR_QUERY_POINTS для сопоставления имён томов и символьных ссылок на них и IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS или IOCTL_VOLUME_LOGICAL_TO_PHYSICAL для сопоставления разделов и номеров физических дисков.
← →
slow!alfamoon!com (2007-11-27 17:11) [48]Тоже вариант
← →
Riply © (2007-11-27 17:28) [49]> [47] guav © (27.11.07 17:05)
Тебя же (если я ничего не путаю) не устраивал DeviceIoControl ?
Изменился подход к решению задачи ?
> Предлагаю для решения задачи сопоставления томов и дисков использовать IOCTL_MOUNTMGR_QUERY_POINTS
> для сопоставления имён томов и символьных ссылок на них и IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
> или IOCTL_VOLUME_LOGICAL_TO_PHYSICAL для сопоставления разделов и номеров физических дисков.
Спасибо. Пойду пробовать.
← →
guav © (2007-11-27 17:43) [50]> [49] Riply © (27.11.07 17:28)
> Изменился подход к решению задачи ?
Нет, это просто другая задача. Не будеv вдаватmся в детали :)
> Спасибо. Пойду пробовать.
Ещё, чтоб те долго не думать, чему слать IOCTL_MOUNTMGR_QUERY_POINTS - шли этому:CreateFile("\\.\MountPointManager", 0, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0)
← →
guav © (2007-11-27 18:17) [51]Проблема получения номера диска из "\Device\Ide\IdeDeviceP2T0L0-5" тоже решается через IOCTL код.
IOCTL_STORAGE_GET_DEVICE_NUMBER
← →
Riply © (2007-11-27 22:01) [52]> [50] guav © (27.11.07 17:43)
А чему равен IOCTL_MOUNTMGR_QUERY_POINTS ? 7143432 ?
Дело в том, что не очень люблю определения чего-то через "строки" типа:
#define MOUNTMGRCONTROLTYPE ((ULONG)"m")
#define IOCTL_MOUNTMGR_QUERY_POINTS \
CTL_CODE(MOUNTMGRCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
Так и до ошибки не далеко, а рядом всякие "IOCTL_MOUNTMGR_DELETE_" - ы :)
← →
guav © (2007-11-27 22:48) [53]> [52] Riply © (27.11.07 22:01)
Ой не боюсь не скажу сегодня... я как раз снёс предыдущие версии срдеств разработки MS, чтобы поставить VS 2008 Express, и застрял на сносе самой VS 2008 beta, там ошибка в анинсталле и ни туда ни сюда :(
Кстати, здесь можжно глянуть уже переведнные SetupApi, Native API, также в win32api объявление других IOCTL с раскрытым CTL_CODE, можно по аналогии сделать.
http://jedi-apilib.sourceforge.net/
PS: Почту глянь :)
← →
Riply © (2007-11-28 19:11) [54]> [47] guav © (27.11.07 17:05)
Еще раз спасибо. Теперь есть полная навигация :)
А ты сам не разбирался с IOCTL_MOUNTMGR_QUERY_POINTS ?
Может подскажешь: в MOUNTMGR_MOUNT_POINT, что они подразумевают под UniqueId ?
И размер у него какой-то странный: 12 Byte.
← →
guav © (2007-11-28 22:57) [55]Сорри, сегодня не было времени глянуть эту константу...
Про UniqueId пишут там же, в MSDN :)
http://msdn2.microsoft.com/en-us/library/ms802377.aspx
Я бы воспользовался этим:
If the input triple is empty, the mount manager returns the entire mounted device list.
и дальше бы сам прошелся по томам, анализируя другие два параметры.
Это не единственный способ перечислить разделы и их точки подключения, но похоже, что он самый удобный.
На правах рекламы: вышла новая Visual Studio, это наверное тебя не интересует, но вместе с ней вышла и новая MSDN Library http://www.microsoft.com/downloads/details.aspx?FamilyID=6ff3bc60-32c8-4c22-8591-a20bf8dff1a2&DisplayLang=en
← →
Riply © (2007-11-29 00:30) [56]> [55] guav © (28.11.07 22:57)
> Сорри, сегодня не было времени глянуть эту константу...
Да я ее уже проверила: все правильно.
> Про UniqueId пишут там же, в MSDN :)
Нашла. Спасибо.
> Я бы воспользовался этим:
> If the input triple is empty, the mount manager returns the entire mounted device list.
> и дальше бы сам прошелся по томам, анализируя другие два параметры.
Я так и делаю. Поэтому и возник вопрос про UniqueId.
> На правах рекламы: вышла новая Visual Studio, это наверное тебя не интересует,
> но вместе с ней вышла и новая MSDN Library
А чего она такая маленькая ? Всего 2 GB :)
← →
guav © (2007-11-29 11:43) [57]> А чего она такая маленькая ? Всего 2 GB :)
А разве старые больше ?
Вот за апрель 2007 такая же http://www.microsoft.com/downloads/details.aspx?FamilyID=B8704100-0127-4D88-9B5D-896B9B388313&displaylang=en а предыдущие ещё меньше.
Страницы: 1 2 вся ветка
Форум: "WinAPI";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.146 c