Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2010, 17:54   #1
chechestor
Пользователь
 
Регистрация: 18.10.2010
Сообщений: 17
Вопрос Про CreateFile

День добрый.
Вопрос дилетанта, если я хочу общаться с 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,...)
chechestor вне форума Ответить с цитированием
Старый 24.12.2010, 16:43   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от chechestor Посмотреть сообщение
если я хочу общаться с USB-накопителем своими собственными спецкомандами
во-первых, самый главный вопрос: поддерживает ли это самое устройство эти спецкоманды? если нет, то нет никакого смысла всех этих действий с CreateFile
rpy3uH вне форума Ответить с цитированием
Старый 27.12.2010, 10:54   #3
chechestor
Пользователь
 
Регистрация: 18.10.2010
Сообщений: 17
По умолчанию

подддерживает! по-любому! аще стопудово!... с ним уже работали даже.
chechestor вне форума Ответить с цитированием
Старый 27.12.2010, 13:39   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

при открытии "\\\\.\\G:" происходит открытие диска и обращение происходит как к одному большому файлу.
при открытии "\\\\.\\Ezusb-0" происходит обращение как к устройству. И поэтому открывать надо именно так.
но опять же всё зависит от самого устройства
rpy3uH вне форума Ответить с цитированием
Старый 27.12.2010, 16:54   #5
chechestor
Пользователь
 
Регистрация: 18.10.2010
Сообщений: 17
По умолчанию

А если я знаю уже имя дискового устройства в виде "\\\\.\\G:", могу ли я как-то определить его имя в виде "\\\\Ezusb-0" (или еще лучше "\\\\SCSIx:")???
chechestor вне форума Ответить с цитированием
Старый 30.12.2010, 11:59   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

всё зависит от драйвера этого устрйоства. обычно это можно сделать только находясь в режиме ядра системы (проще говоря в другом драйвере)
есть программа WinObj (WinObjEx) через неё можно определить на какое физическое устройство ссылается имя типа "\\\\.\\G:" (смотри каталог GLOBAL??)
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хук 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