![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 18.10.2010
Сообщений: 17
|
![]()
День добрый.
Вопрос дилетанта, если я хочу общаться с USB-накопителем своими собственными спецкомандами, для этого я сначала открываю устройство при помощи hUsbFlash = CreateFile(manamana). При этом я передаю в качестве пути к устройству название диска "\\\\.\\G:" например... Всюду в примерах в качестве пути к устройсву USB (не обязательно накопитель), передается нечеловеческая строка типа "\\\\.\\Ezusb-0", смысл которой я даже не улавливаю... После открытия файла я получаю указатель, по которому пытаюсь обращаться через DeviceIOControl(hUsbFlash, IOCTL_USB_USER_REQUEST,...) Функция, естесственно с треском проваливается (иначе я бы тут не писал). GetLastError() == ERROR_NOT_SUPPORTED (The request is not supported). Вот и думаю, то ли я не так открыл устройство для записи-чтения, то ли я что-то не так делаю в вызове DeviceIOControl(). Объясните, пожалуйста, эквивалетно ли открытие устройства через "\\\\.\\G:" и "\\\\.\\Ezusb-0"? И как правильно пользоваться функцией DeviceIOControl(...IOCTL_USB_USER_R EQUEST,...) |
![]() |
![]() |
![]() |
#2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
во-первых, самый главный вопрос: поддерживает ли это самое устройство эти спецкоманды? если нет, то нет никакого смысла всех этих действий с CreateFile
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 18.10.2010
Сообщений: 17
|
![]()
подддерживает! по-любому! аще стопудово!... с ним уже работали даже.
![]() |
![]() |
![]() |
![]() |
#4 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
при открытии "\\\\.\\G:" происходит открытие диска и обращение происходит как к одному большому файлу.
при открытии "\\\\.\\Ezusb-0" происходит обращение как к устройству. И поэтому открывать надо именно так. но опять же всё зависит от самого устройства |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 18.10.2010
Сообщений: 17
|
![]()
А если я знаю уже имя дискового устройства в виде "\\\\.\\G:", могу ли я как-то определить его имя в виде "\\\\Ezusb-0" (или еще лучше "\\\\SCSIx:")???
|
![]() |
![]() |
![]() |
#6 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
всё зависит от драйвера этого устрйоства. обычно это можно сделать только находясь в режиме ядра системы (проще говоря в другом драйвере)
есть программа WinObj (WinObjEx) через неё можно определить на какое физическое устройство ссылается имя типа "\\\\.\\G:" (смотри каталог GLOBAL??) |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хук CreateFile x64 | Alex217Vish | Win Api | 10 | 24.10.2010 15:26 |
CreateFile в Borland | sneksnek2006 | Win Api | 3 | 14.10.2010 02:47 |
ReadConsole & CreateFile | int 20h | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 20.09.2010 10:45 |
Перехват CreateFile | qwerc1 | Win Api | 6 | 29.06.2010 22:01 |
CreateFile, Delphi. | edmynt | Помощь студентам | 0 | 01.06.2010 18:23 |