![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
WildSpy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.11.2005 Репутация: нет Всего: нет |
Такой вопрос, реально ли на VB получить низкоуровневый доступ к устройству, например винту?
И вообще, как это реализуется на любых языках? Объясните плз... |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Через драйверы. Это сообщение отредактировал(а) cardinal - 10.7.2007, 22:27 -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Что разумеется под словами "низкоуровневый доступ"?
Хочешь напрямую с портами ввода-вывода работать? пожалуйста, есть драйвер DirectIO... вот только ОС, пожалуй, обидится... можно напрямую с драйвером устройства поработать - через IOCTL или DirectIOControl, например... А вот самостоятельный драйвер устройства на VB, пожалуй, нереализуем. То есть формально это возможно, но получится сплошь инлайновый ассемблер... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
WildSpy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.11.2005 Репутация: нет Всего: нет |
Просто мне нужно считать файл не стандартной функцией, а максимально быстро. И я так думаю, что для этого нужно получить низкоуровневый доступ к винту, как это делает например антивирус.
А потом ещё разобраться как считать файл. Подскажите что-нибудь. |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
C этого места поподробнее. Задачу полностью, от самого начала. Почему максимально быстро? Один файл или то, какой файл потребуется, выбирается программно? его прогнозируемый размер? расположение (локальный, сетевой)? А то есть подозрение, что ты собрался микроскопом орехи колоть... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 3 Всего: 121 |
Это невозможно ни в каком виде при использовании компилятора VB. Самое быстрое, что тут можно придумать, помимо разбирая файловой системы, т.е. работы в RAW режиме, это самостоятельная посылка пакета в disk.sys, но в ВБ это нереализуемо. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
WildSpy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.11.2005 Репутация: нет Всего: нет |
Да нет, файл определяется пользователем. Тут не суть важно, размер неизвестен. Но в среднем не больше 10 мег.
Файл бинарный, нужно как можно быстрее загрузить его в память. и еще один вопрос, есть код:
это код переводит файл в hex, типа как это делают WinHEX и т.д. Вопрос, как этот код ускорить, а то он работает ужасно медленно. |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 3 Всего: 121 |
Покажи, что у тебя на входе и что должно быть на выходе -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
WildSpy |
|
||||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.11.2005 Репутация: нет Всего: нет |
так понятнее? Это сообщение отредактировал(а) WildSpy - 11.7.2007, 11:43 |
||||
|
|||||
mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 11 Всего: 109 |
Естественно! Ты же работаешь с текстовыми переменными для того, чтобы числа перебрасывать из одной системы в другую... Сформулируй поточнее саму задачу, а не то, как ты её решал!!! |
|||
|
||||
WildSpy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.11.2005 Репутация: нет Всего: нет |
Открыть файл и перевести его в hex, типа как это реализовано в hex-Редакторах типа WinHEX |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 3 Всего: 121 |
В Text1 поставь шрифт Courier New Это сообщение отредактировал(а) W4FhLF - 11.7.2007, 13:44 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Читать лучше через FileSystemObject.ReadAll - 10 мег всасывается мгновенно. Это не лимитирует.
Лимитирует именно конвертация - медленные строковые функции... и совершенно правильное решение ускорить процесс за счет работы с фиксированным буфером. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
WildSpy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.11.2005 Репутация: нет Всего: нет |
Огромное спасибо, работает. =)
|
|||
|
||||
WildSpy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.11.2005 Репутация: нет Всего: нет |
Ещё один маленький вопрос, код написан достаточно сложно, т.е. как можно более компактно и не совсем понятен для меня.
Так вот, такой ламерский вопрос, как избавится от пробелов на выходе? т.е. чтобы между цифрами и буквами не было пробелов? убирать их replace'ом долго, а откуда они берутся не могу найти. Это сообщение отредактировал(а) WildSpy - 11.7.2007, 14:33 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Так изначально же буфер заполняется пробелами... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
WildSpy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.11.2005 Репутация: нет Всего: нет |
||||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Откорректировать расчет размера буфера и смещений, чтобы данные ложились "впритирку"... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
WildSpy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.11.2005 Репутация: нет Всего: нет |
Блин, непонимаю как это...
можно пример? |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
WildSpy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.11.2005 Репутация: нет Всего: нет |
Спасибо, но почему то то код с "пробелами" работал быстрее, чем этот, "без пробелов"...почему так?
причем разница в скорости серьезно ощутима т.е. новый код, по скорости примерно так же, как старый с применением Replace'а... Это сообщение отредактировал(а) WildSpy - 11.7.2007, 18:22 |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 3 Всего: 121 |
У меня новый быстрее в среднем на 11%, оно и следовало предполагать. Чему там быть медленнее? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
WildSpy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.11.2005 Репутация: нет Всего: нет |
Незнаю, у меня старый код, где без убранных пробелов намного быстрее остального.
|
|||
|
||||
bom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 329 Регистрация: 22.2.2004 Где: Казахстан, Алматы Репутация: 4 Всего: 6 |
Первый код "загружает" в Textbox кусок файла размером 21 КВ, второй - 32 КВ, отсюда и разница в скорости, так как Texbox довольно тормозной контрол.
|
|||
|
||||
WildSpy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.11.2005 Репутация: нет Всего: нет |
Ага, я уже разобрался, всем спасибо.
Если можно, то последний вопрос, как загрузить файл с определенного байта (offset'а) ? Это сообщение отредактировал(а) WildSpy - 12.7.2007, 07:41 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
seek
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
__Sergey__ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 21.1.2005 Репутация: 4 Всего: 4 |
надо использовать ф-ции, работающие с файловым отображением.
Добавлено через 2 минуты и 5 секунд CreateFileMapping, MapViewOfFile ... |
|||
|
||||
WildSpy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.11.2005 Репутация: нет Всего: нет |
Спасибо, а не подскажешь, где про это почитать? |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 3 Всего: 121 |
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
![]() ![]() ![]() |
Правила форума "VB6" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB6 | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |