|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.12.2010, 17:54 | #1 |
Пользователь
Регистрация: 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,...) |
24.12.2010, 16:43 | #2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
во-первых, самый главный вопрос: поддерживает ли это самое устройство эти спецкоманды? если нет, то нет никакого смысла всех этих действий с CreateFile
|
27.12.2010, 10:54 | #3 |
Пользователь
Регистрация: 18.10.2010
Сообщений: 17
|
подддерживает! по-любому! аще стопудово!... с ним уже работали даже.
|
27.12.2010, 13:39 | #4 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
при открытии "\\\\.\\G:" происходит открытие диска и обращение происходит как к одному большому файлу.
при открытии "\\\\.\\Ezusb-0" происходит обращение как к устройству. И поэтому открывать надо именно так. но опять же всё зависит от самого устройства |
27.12.2010, 16:54 | #5 |
Пользователь
Регистрация: 18.10.2010
Сообщений: 17
|
А если я знаю уже имя дискового устройства в виде "\\\\.\\G:", могу ли я как-то определить его имя в виде "\\\\Ezusb-0" (или еще лучше "\\\\SCSIx:")???
|
30.12.2010, 11:59 | #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 |