Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 6

Определить в какой физический USB разъём подключена флешка

19.11.2019, 13:09. Показов 6818. Ответов 5

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Подскажите, пожалуйста, какими методами в Windows возможно определить в каком физическом разъёме находится подключенная флешка и как это можно соотнести со структурами информации о томах на ней.
Пробовал SetupAPI и WMI, но получить смог только точку монтирования и несколько ID устройства, которые никак не изменяются, при смене разъёма.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.11.2019, 13:09
Ответы с готовыми решениями:

какой USB и HDMI разъём подойдет для fujitsu lifebook AH531 и где можно купить?
Доброго времени суток! Сломались USB и HDMI разъёмы на ноутбуке fujitsu lifebook AH531. Решил его заменить, но не знаю какой нужно взять....

Подключена флешка или нет
Используя файловую систему или API как можно узнать подключена ли флешка к телефону или нет.. . Заранее спасибо! пробывал такие...

Коротит разъём под наушники и USB-разъём, что делать?
Доброго времени суток. Случилась со мной такая оказия: воткнул наушники (обычные капли) в передний разъём корпуса, после чего внезапно...

5
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
19.11.2019, 16:47
Цитата Сообщение от atsarkov Посмотреть сообщение
в каком физическом разъёме находится подключенная флешка
что это значит?
номер usb порта нужно определить?
может здесь найдёте что-нибудь
Как получить номер USB-порта, на котором "сидит" подключенное устройство
https://www.sql.ru/forum/10979... ustroystvo
1
 Аватар для COKPOWEHEU
4085 / 2683 / 432
Регистрация: 09.09.2017
Сообщений: 11,936
19.11.2019, 17:24
USB штука динамическая, кто раньше подключился, тому и первый номер на шине достанется, то есть нумерация устройств в принципе может произвольно гулять.
Конечно, это можно обойти, привязав каждый хаб и каждый его порт по какому-нибудь уникальному идентификатору, но не уверен, что в распространенных операционных системах это будет.
Цитата Сообщение от atsarkov Посмотреть сообщение
в каком физическом разъёме находится подключенная флешка
Лучше расскажите зачем это вообще надо, какую задачу вы решаете таким странным способом.
Цитата Сообщение от atsarkov Посмотреть сообщение
в каком физическом разъёме находится подключенная флешка и как это можно соотнести со структурами информации о томах на ней.
"структуры информации и тома на ней" это таблица разделов что ли? Если так, то они не связаны абсолютно никак.
.
С ходу придумывается только две задачи, где бы такое могло пригодиться: монтирование конкретного раздела в конкретную точку файловой системы (но это решается монтированием по UUID, и уж точно не по номеру порта). Либо примитивная защита вроде авторизации юзера, только когда он воткнет нужную флешку в нужный порт, но очень сомневаюсь что угадывание порта хоть немного повысит безопасность.
0
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 6
19.11.2019, 18:07  [ТС]
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Лучше расскажите зачем это вообще надо, какую задачу вы решаете таким странным способом.
Таким способом решаю задачу определения сообщения юзеру какую из подключенных флешек необходимо извлечь после записи данных, которая происходит параллельно на несколько устройств и на каждый записывается различная информация.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
"структуры информации и тома на ней" это таблица разделов что ли? Если так, то они не связаны абсолютно никак.
Вы почти угадали, требуется соответствие флешки и логических дисков системы, чтобы правильно определить на какой логический диск записывать данные.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
USB штука динамическая, кто раньше подключился, тому и первый номер на шине достанется, то есть нумерация устройств в принципе может произвольно гулять.
Получается для Windows невозможно однозначно идентифицировать USB порт?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
19.11.2019, 21:57
Цитата Сообщение от atsarkov Посмотреть сообщение
Подскажите, пожалуйста, какими методами в Windows возможно определить в каком физическом разъёме находится подключенная флешка и как это можно соотнести со структурами информации о томах на ней.
Пробовал SetupAPI и WMI, но получить смог только точку монтирования и несколько ID устройства, которые никак не изменяются, при смене разъёма.
WMI: Win32_DiskDrive.PNPDeviceID -> Win32_USBControllerDevice, CIM_LogicalDevice
Кликните здесь для просмотра всего текста

instance of Win32_DiskDrive
{
BytesPerSector = 512;
Capabilities = {3, 4, 7};
CapabilityDescriptions = {"Random Access", "Supports Writing", "Supports Removable Media"};
Caption = "Kingston DataTraveler 2.0 USB Device";
ConfigManagerErrorCode = 0;
ConfigManagerUserConfig = FALSE;
CreationClassName = "Win32_DiskDrive";
Description = "Дисковый накопитель";
DeviceID = "\\\\.\\PHYSICALDRIVE2";
FirmwareRevision = "PMAP";
Index = 2;
InterfaceType = "USB";
Manufacturer = "(Стандартные дисковые накопители)";
MediaLoaded = TRUE;
MediaType = "Removable Media";
Model = "Kingston DataTraveler 2.0 USB Device";
Name = "\\\\.\\PHYSICALDRIVE2";
Partitions = 1;
PNPDeviceID = "USBSTOR\\DISK&VEN_KINGSTON&PROD_DATATRA VELER_2.0&REV_PMAP\\001A928EED05ED602949 009F&0";
SCSIBus = 0;
SCSILogicalUnit = 0;
SCSIPort = 0;
SCSITargetId = 0;
SectorsPerTrack = 63;
SerialNumber = "0E0D16A09229";
Signature = 3585464809;
Size = "15603356160";
Status = "OK";
SystemCreationClassName = "Win32_ComputerSystem";
SystemName = "OLEG-M";
TotalCylinders = "1897";
TotalHeads = 255;
TotalSectors = "30475305";
TotalTracks = "483735";
TracksPerCylinder = 255;
};


instance of Win32_USBControllerDevice
{
Antecedent = "\\\\OLEG-M\\root\\cimv2:Win32_USBController.Devic eID="PCI\\\\VEN_8086&DEV_8C31&SUBSYS_10E E1462&REV_05\\\\3&11583659&0&A0"";
Dependent = "\\\\OLEG-M\\root\\cimv2:Win32_PnPEntity.DeviceID= "USBSTOR\\\\DISK&VEN_KINGSTON&PROD_DATAT RAVELER_2.0&REV_PMAP\\\\001A928EED05ED60 2949009F&0"";
};


Добавлено через 11 минут
Цитата Сообщение от atsarkov Посмотреть сообщение
Получается для Windows невозможно однозначно идентифицировать USB порт?
А как их вообще идентифицировать, маркером подписывать? А если внешний хаб? Win32_USBController и есть идентификатор
0
 Аватар для COKPOWEHEU
4085 / 2683 / 432
Регистрация: 09.09.2017
Сообщений: 11,936
20.11.2019, 10:34
Цитата Сообщение от atsarkov Посмотреть сообщение
Вы почти угадали, требуется соответствие флешки и логических дисков системы, чтобы правильно определить на какой логический диск записывать данные.
Для этого есть уникальные UUID разделов или в крайнем случае метки, хотя метки реже бывают уникальными и не всегда срабатывают.
Цитата Сообщение от atsarkov Посмотреть сообщение
Таким способом решаю задачу определения сообщения юзеру какую из подключенных флешек необходимо извлечь после записи данных, которая происходит параллельно на несколько устройств и на каждый записывается различная информация.
А вот тут лучше меток вряд ли что можно придумать. Просто при форматировании флешки даете ей осмысленное название вместо дефолтного, а уж в назначении флешек юзер авось не запутается. Да хоть по цвету и форме назовите. Плюс в том, что это будет работать на любой системе без всяких усилий с вашей стороны.
Цитата Сообщение от atsarkov Посмотреть сообщение
Получается для Windows невозможно однозначно идентифицировать USB порт?
Не знаю. Как-то через хитрое место может и можно, если пропинать все хабы и выяснить цепочку портов. Но сама адресация USB как одномерной "шины" этому мешает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2019, 10:34
Помогаю со студенческими работами здесь

Как узнать, что флешка подключена?
Подскажите пожалуйста, можно ли такое реализовать, и если да то как. Запушен бат файл и как только подключается флешка определяется ее...

Как определить какой у меня разъем на метеринке AGP или PCI?
Как определить какой у меня разъем на метеринке AGP или PCI? Добавлено через 33 минуты У меня в книжке написано слот PCIEX16_1 это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru