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

Ваш аккаунт

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

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

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

Надо узнать количество luns

19K
12 октября 2011 года
Mhael
54 / / 20.03.2008
Всем привет. Тема скорее сюда, чем в низкоуровневое.
Есть usb mass storage device. Он также понимает scsi команды. Требуется в определенный момент узнать количество его лунов. Т.е. на этом устройстве может быть память или карточка, ее отобразят как диск/диски в системе и её могут разбить так, что получится несколько лунов. А может быть и один..
Подозреваю, что надо открыть(createfile) какую-то шину(или само устройство) и пульнуть в нее запрос. Но какой?
p.s. хотелось бы обойтись без wmi и всяких сторонних библиотек/драйверов.
260
12 октября 2011 года
Ramon
1.1K / / 16.08.2003
IOCTL_SCSI_PASS_THROUGH и иже с ним.
19K
13 октября 2011 года
Mhael
54 / / 20.03.2008
спасибо кэп.
"Подозреваю, что надо открыть(createfile) какую-то шину(или само устройство) и пульнуть в нее запрос. Но какой?"
14
13 октября 2011 года
Phodopus
3.3K / / 19.06.2008
откуда нам знать, устройство то ваше. А с чего вы решили что
Цитата:

usb mass storage device. Он также понимает scsi команды.

19K
14 октября 2011 года
Mhael
54 / / 20.03.2008
Потому что понимает. Там контроллер и прошивка, которые поддерживают scsi и , например я могу с помощью spti общаться с устройством.
Ну вот у вас есть, например внешний винт или там какая-нить флэшка. Вы знаете, каким образом её(или шину или что угодно) спросить, чтобы в ответ получить информацию о количестве лунов устройства?
14
14 октября 2011 года
Phodopus
3.3K / / 19.06.2008
Я просто уточнить. Тогда вы сами себе ответили и вам уже ответили - SPTI. Ну а шина и различение устройств на ней опять же зависит от шины и устройства.
277
15 октября 2011 года
arrjj
1.7K / / 26.01.2011
http://www.t10.org/ftp/t10/drafts/sam3/sam3r14.pdf
Цитата:

SCSI Architecture Model - 3 (SAM-3)

4.9.3 Minimum LUN addressing requirements

All SCSI devices shall support LUN 0 (i.e., 00000000 00000000h) or the REPORT LUNS well-known logical unit. For SCSI devices that support the hierarchical addressing model the LUN 0 or the REPORT LUNS well-known logical unit shall be the logical unit that an application client addresses to determine information about the SCSI target device and the logical units contained within the SCSI target device.


т.е. любой scsi полюбому должен содеражать LUN 0 или (независимо от LUN, которому передана) поддерживать комманду Report LUNs.

19K
15 октября 2011 года
Mhael
54 / / 20.03.2008
Цитата: arrjj
http://www.t10.org/ftp/t10/drafts/sam3/sam3r14.pdf

т.е. любой scsi полюбому должен содеражать LUN 0 или (независимо от LUN, которому передана) поддерживать комманду Report LUNs.



Большое спасибо, неужели все так просто. Я сам просматривал спецификацию и команды, но небрежно, был уверен, что если есть такие команды, то мне железянщики наши скажут. Попробую в понедельник..

19K
25 декабря 2011 года
Mhael
54 / / 20.03.2008
Всем привет..К сожалению подсказка arrjj мне не поможет, т.к. устройство такую команду не поддерживает. Может быть мы сможем ее поддержать, но не факт.
Возник другой, более насущный вопрос - как заставить Windows переспросить луны у устройства?! Т.е. по спец. команде устройство создает еще один лун - надо пнуть систему, чтобы он переспросила устройство и запросило эту информацию (в usb trace это какая-то команда с названием class interface, насколько я помню). Кто может подсказать, как это сделать?
14
25 декабря 2011 года
Phodopus
3.3K / / 19.06.2008
IoInvalidateDeviceRelations это "переспрос" на одном из уровней
260
25 декабря 2011 года
Ramon
1.1K / / 16.08.2003
Цитата: Phodopus
IoInvalidateDeviceRelations это "переспрос" на одном из уровней



Сей способ подходит если у Mhael свой особенный драйвер устройства. Иначе либо инициировать переподключение устройством, либо делать количество лунок фиксированным и оповещать о вставке/изъятии медии.

14
25 декабря 2011 года
Phodopus
3.3K / / 19.06.2008
Верно, просто имея эту информацию думаю будет легче допрыгать до того, что надо потянуть у драйвера USB-шины, чтобы он, в свою очередь, дернул Invalidate. Конкретно для драйвера-порта USB тактики не знаю.
19K
25 декабря 2011 года
Mhael
54 / / 20.03.2008
Ну, пока бы мне хотелось обойтись без драйвера. Резетить девайс тоже нельзя.
Интересный вариант, насчет подключения/отключения медии. В принципе у нас только 2 луна по идее будет.
Логика тут такая - ввели пароль и в устройстве появился доп. лун, в винде появилось новое дисковое пространство у устройства, на нем один или несколько логических дисков.. Соотв., ввели пароль и запрос на скрытие - лун исчез, диски пропали. Вот что хочу сделать :)
19K
26 декабря 2011 года
Mhael
54 / / 20.03.2008
Может кто-нибудь подскажет, как сказать винде о подключение медии устройством?
Сейчас у нас 2 луна, на второй мы даем винде отлуп, мол устройство не доступно или как-то так. После того, как мы решили поднять второй диск, мы говорим на обращение к второму луну, мол все хорошо, выдаем капасити и т.п. Но винда сама совсем не рвется запрашивать какую-то информацию от второго луна :( Только, если в управлении дисками вручную вызвать обновление.
260
26 декабря 2011 года
Ramon
1.1K / / 16.08.2003
там было нечто вроде "Test Unit Ready" и диаграммы состояний. Вы им следуете?
19K
11 января 2012 года
Mhael
54 / / 20.03.2008
Эта работа меня доканает :)
При включении второго луна у нас вопрос решен с появлением нашего второго диска, более-менее нормально решен вроде. Я открываю этот второй диск как STORAGE и посылаю ему IOCTL_STORAGE_FIND_NEW_DEVICES . Ходо-бедно он появляется, иногда правда с задержкой. Но возникла проблема с отключением :)
Мы по специфической команде начинаем отключать второй диск. Девайс перестает по второму луну отвечать на команды кроме inquiry и там всяких юнит реди, я пытаюсь обновить винду с помощью IOCTL_STORAGE_FIND_NEW_DEVICES и IOCTL_DISK_UPDATE_PROPERTIES , но она не убирает диск и соот. ему логические диски. Что в принципе и понятно, диск как бы есть, просто не отвечает на основные команды.
Пытаюсь послать ему FSCTL_DISMOUNT_VOLUME. Команда вроде проходит, но результата нет. В смысле видимого пользователю - исчезновение дисков в программах. Наверное я что-то делаю не так или надо кинуть еще что-то, типа там.. IOCTL_MOUNTMGR_DELETE_POINTS что-ли? Может кто-то подсказать, что тут сделать? Задача сводиться по-видимому к удалению программно диска, его разделов и соотв. логических дисков. Или просто логических дисков, сойдет даже.. Абы видно не было.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог