На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
Страницы: (51) « Первая ... 15 16 [17] 18 19 ...  50 51  ( Перейти к последнему сообщению )  
> Желающим USB под ДОС , Welcome!!!
    Цитата cppasm @
    Надо как-то дать понять что устройство ReadOnly, только вот как?

    Вот наконец-то решил проблему, может кому нибудь будет интересно... Для того что-бы устройство было Read Only необходимо на запрос MODE SENSE передать структуру Mode parameter list в которой есть структура Mode parameter header и в которой необходимо правильно заполнить поле DEVICE-SPECIFIC PARAMETER
    Bit
    76543210
    WP ReservedReservedDPOFUAReservedReservedReservedReserved

    WP это и есть то что надо - write protected :yes:
      Ответа не дождался. Сделал сам :-)
      Если у кого-то возникнут такие же трудности, спрашивайте!
      Однако, всем спасибо :-)
        Здравствуйте для всех. Мот кто-нить решал проблему с получение серийного номера для УСБ карты, но не через строковый дескриптор? Например, через SCSI Inquiry. А то это есть очень большой трабл для меня: нужно получить серийник для карты памяти, которая вставлена, например, в лун 2. Через дескриптор УСБ устройства получаю серийник для кардридера. Для Inquiry написано что можно получить через EVPD (бит для получения vendor-specific data), но при этом даже не возвращается супорченные страницы (всегда стдандартный блок из 36 байт). Если кто сталкивался - направте хоть в правильное русло что ли!!!
          У меня есть какой-то драйвер, точнее архив называется usbdos.zip в нём имеются файлы
          DI1000DD.SYS
          HIMEM.SYS
          MSCDEX.EXE
          USBASPI.SYS
          USBCD.SYS
          Так вот может кому-то надо то я выложу, или если он уже обсуждался, то извините, пожалуйста...
            Катенька, большое спасибо за внимание к моему обращению. Но, к сожалению, судя по содержимому, это мне уже не поможет ;)
              У карты нет серийного номера, кроме того который ОС записывает на FS при форматировании.
              По Inquiry получается название кардридера, и серийного номера там всё равно нет.
              Есть производитель, название устройства и версия - но не карты, а кардридера.
                Спасибо. Но мне говорят обратное. Люди которые работают с картами (ведут их учет) говорят что номер автоматически получают. В подробности не вдаются. Ну да ладно. Есть выход на производителя - посмотрю что скажут они. Спасибо. :wall:
                  Было бы не плохо узнать, что это за карта такая. Как я понимаю речь не о MMC, SD или тому подобных...
                    Я не утверждаю. Жду ответа от надежного источника. А карты всех типов: CF, MMC, SD etc. :wacko:
                      Цитата torpetska @
                      Я не утверждаю. Жду ответа от надежного источника. А карты всех типов: CF, MMC, SD etc.

                      Ну если узнаеш - напиши.
                      Я собственно тоже работал с картами - драйвер писал для кардридера и флэшек под DOS.
                      По Inquiry серийный номер получить нельзя.
                      Ты бы спросил у них поточнее, потому что вполне может использоваться серийный номер тома, созданного на этой карте.
                      Т.е. это не аппаратный серийный номер, а номер который записывает ОС при форматировании (это функция от времени форматирования).
                      И конечно если переформатировать карту то этот номер изменится.
                      Если всё-таки можно получить аппаратный номер и узнаеш как - напиши :)
                        ok. в ближайшем будущем точно узнаю. :wall:
                          Предположим есть коды стандартных запросов

                          UTSC_GET_STATE = 0
                          UTSC_CLEAR_FEATURE = 1
                          UTSC_SET_FEATURE = 3
                          UTSC_SET_ADDRESS = 5
                          UTSC_GET_DESCRIPTOR = 6 ;
                          UTSC_SET_DESCRIPTOR = 7 ;
                          UTSC_GET_CONFIGURATION = 8
                          UTSC_SET_CONFIGURATION = 9
                          UTSC_GET_INTERFACE = 0Ah
                          UTSC_SET_INTERFACE = 0Bh
                          UTSC_SYNCH_FRAME = 0Ch

                          А вот теперь вопрос. Есть ряд запросов с нестандартными кодами
                          например
                          RequestFlag = 21h
                          RequestCod = FFh (еще есть
                          RequestParam = 8000h ; предположительно адрес в устройстве
                          Index = позиция в буфере данных
                          В этом запросе (судя по флагам интерфейсу ?)передается довольно большой буфер данных 3270 байт (есть и больше)
                          Может это какой-нибудь изощренный запрос репорта?

                          Вот начальные байты буфера:

                          0F3h,31h,0FCh,8Fh,18h, 9, 3, 1,0D0h, 7, 4,1Ah, 1,0,0
                          0AFh,32h, 5,8Eh,3Eh,21h,32h, 6,0C0h,3Ah, 4,8Eh,0E6h
                          73h,32h, 4,8Eh,11h,52h,8Eh,21h,0CCh,87h, 1,20h, 0,0EDh
                          0B0h,21h,36h,0C0h,0CBh,7Eh,20h,18h,0CBh,56h,20h,16h
                          2Eh,3Ch,5Eh,0CBh,0CEh, 6,0Bh,0CDh,77h,80h,2Eh,36h,0CBh
                          56h,28h, 6,0CBh,4Bh,20h, 2,0CBh,0B6h,0CDh,67h,81h,3Ah
                          50h,8Eh,0E6h,40h,0CBh,0EFh,32h,50h,8Eh,0CDh,0C0h,87h
                          21h,36h,0C0h,0CBh,7Eh,20h,11h,0CBh,56h,28h,0Dh, 6, 0
                          0CDh,77h,80h,0CDh,77h,80h,0CDh,77h,80h,0CBh,0F6h,0C3h
                          73h,86h,0E5h,21h, 3,0C0h,7Eh,0BEh,28h,0FDh,10h,0FAh
                          0E1h,0C9h,0F5h,0C5h,3Ah, 2,0C0h,4Fh,3Ah, 2,0C0h,91h
                          0FEh,10h,38h,0F8h,0C1h,0F1h,0C9h,0CBh,86h,18h,0EBh
                          0CBh,0C6h,18h,0E7h,0CBh,8Eh,18h,0E3h,0CBh,0CEh,18h

                          Какие есть идеи?
                            Если RequestType равен 2Xh это Vendor specific запрос, да и RequestCode равный FFh на это намекает! Так что передаваться по этому запросу может все что угодно. Разобрать буфер в 3КБ конечно можно, но вопрос: а оно настолько надо? Чтобы понять что посылается устройству надо, как минимум, знать зачем оно (устройство) нужно и что делает.
                              Устройство - USB Mass Storage
                              То, что это Vendor specific запрос вполне вероятно.
                              Но посмотрите, следующий запрос к интерфейсу будет ли он работать со всеми флешками и дисками (или только с некоторым набором?)

                              Direction = IN (чтение)
                              RequestFlag = 0A1h => (USB_TARGET_INTERF or USB_TYPE_SPC_CLASS or USB_DIR_IN)
                              RequestCod = FEh
                              RequestParam = 00h
                              Index = номер интерфейса
                              Данные - номер текущего логического юнита
                              конечная точка - нулевая

                              Этот и предыдущий запрос действительно связан с ограниченным набором устройств. Попытаюсь разобратся с какими

                              Добавлено
                              Вероятно вот с такими устройствами (неуверен :huh: )
                              PCI_VENDORID = 95Bh
                              PCI_PRODUCTID = 121h

                              PCI_VENDORID = 4DAh
                              PCI_PRODUCTID = 0D03h, 0D04h, 0D05h, 0D06h, 0D07h

                              Но найти производителя я не смог. Может кто подскажет :yes-sad:
                              Сообщение отредактировано: uchtinka -
                                Вот теперь понятно!!! Если это Mass Storage Class то это запросы Bulk only Mass Storage Reset (FFh) и GetMaxLun (FEh).
                                Взято из документа Universal Serial Bus Mass Storage Class Bulk-Only Transport.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (51) « Первая ... 15 16 [17] 18 19 ...  50 51


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0421 ]   [ 15 queries used ]   [ Generated: 22.07.25, 11:28 GMT ]