[FAQ] Драйвера на VB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

[FAQ] Драйвера на VB

Сообщение tyomitch » 01.10.2005 (Сб) 22:19

But I have Visual Basic Professional
(Raymond Chen)

Back in 1995, I was participating in a chat room on MSN on the subject of device driver development. One of the people in the chat room asked, "Can I write a device driver in Visual Basic?"

I replied, "Windows 95 device drivers are typically written in low-level languages such as C or even assembly language."

Undaunted, the person clarified: "But I have Visual Basic Professional."


Comments

(Matt)
I have Windows XP Professional. Can I write device drivers too?


(Dan McCarty)
It would make for a pretty neat hack, though, maybe on par with writing a book without the letter e or something.


(Raymond Chen)
The question was about writing device drivers, not applications. Device drivers are written to a different API from Win32 and must observe very complex requirements. Plus you'd have to port the VB runtime library to kernel mode - the work required to do that would be greater than just writing the driver in C to begin with.

"So this is not possible with pure VB code?"

It depends on what you mean by "pure VB code". Are you referring to VB the language or VB the runtime environment?


(Rick Scott)
You probably could write one in VB6. I wrote a mouse/cursor controller in QBasic (on Win95, for an intro to computers project) using peek and poke :) I know that isn't a device driver (it just read from the driver's place in memory), but if you had access to memory directly, its not impossible(at least on non-NT systems), right?


(Justin Olbrantz (Quantam))
A while ago I saw an ad on a web page for an OCX that allowed VB programs to handle IRQs, I/O and other driver-type things. I don't think I could sleep for a week after seeing that :P


(Matthew Chaboud)
I think it would be easier for me to write a VB app that emitted the assembly for a driver than it would be for me to try and get the VB runtime environment into kernel mode.

That said, the year and change I spent working on a VB project (which integrated VB, STL, MFC, QT, and straight Win32 into one application) has still left me waking up at night. Perhaps I'm just not the right person for the job.


(GregF)
You *can* write drivers in VB (I have actually done this once) but its not really a good plan. You CAN write perfectly functional Services, though, even though Microsoft don't recommend this, it works just fine if you have taken the time to understand what a good well-behaved Service should do -- and NOT do.

It used to be perfectly normal to use little chunks of Assembler in QBASIC for hardware control. Ah, yes, the good old days.


(autist0r)
GregF, what kind of driver did you write ?! Because there is no VB compiler that generates a sys and like Raymond said, the VB API doesn't work in kernel mode... Unless you're talking about a non-kernel driver ?


(msemack)
There are toolkits that allow you to write Windows "drivers" in VB. They're user-mode drivers, though.

http://www.jungo.com/windriver_windows.html

Basically, they have a "universal" driver that runs in kernel mode. Your user-mode driver is basically a DLL which calls the kernel-mode component of WinDriver. The kernel-mode part does all of the I/O on your behalf.
Изображение

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 01.10.2005 (Сб) 23:09

Серийник "WinDriver" есть?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 02.10.2005 (Вс) 12:58

забавно =) и поучительно =)

"Можно писать дрпайвера на языках более низкого уровня, например Си или ASM"

А что, интересно, народ сказал бы о ASM вставках в VB?
ХЎ

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 02.10.2005 (Вс) 18:11

Было бы супер!

I love ASM! :D
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

AjaxVS
Постоялец
Постоялец
 
Сообщения: 506
Зарегистрирован: 01.12.2004 (Ср) 13:12
Откуда: Donetsk, Battle.Net

Сообщение AjaxVS » 05.10.2005 (Ср) 14:13

А что, интересно, народ сказал бы о ASM вставках в VB?


А вы что, не умеете? +_+
Читайте GPcH на сайте dotfix.net... Там вроде неплохо описано, но было бы лучше, если бы кто-то создал OCX для удобной работы с Асмом, чтобы каждому... эээ... "не профессионалу" не объяснять, как же вставить Асм в ВБ...

Кто возьмется за работу?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.10.2005 (Ср) 16:16

BP что-то такое уже писал... Не знаю, дописал или нет.
Изображение

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 08.10.2005 (Сб) 21:31

Кому там асмовые вставки в басик подавай? Нате, развлекайтесь:

http://www.johnchamberlain.com/ccupdates.html

Соответствующая статья была опубликована то ли в Microsoft Systems Journal, то ли в VBPJ - сейчас уже не вспомню - в ноябре 1999 года и была включена в раздел Periodicals в ближайшем выпуске MSDN (1 квартал 2000 г.). Там я ее в свое время и нашел. Разумеется, прилагавшийся к статье архив с исходниками оказался пустышкой - полная структура каталогов без единого файла. Однако, через некоторое время мне удалось найти эту статью с нормальным архивом сырцов на www.devx.com (сейчас там тоже ничего нет).

Ну а сегодня я решил таки выгуглить это дело, и вот...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 08.10.2005 (Сб) 22:09

Да мне-то чего, у меня шаровара TweakVB стоит, которая тоже асмовые вставки делать умеет. Только не пользуюсь я ей никогда ;-)
Изображение

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 08.10.2005 (Сб) 22:51

d3drm писал(а):забавно =) и поучительно =)

"Можно писать дрпайвера на языках более низкого уровня, например Си или ASM"

А что, интересно, народ сказал бы о ASM вставках в VB?


вопрос был не в том, можно ли использовать ASM с VB, на эту тему я сам постил сообщение в трепе месяца три назад. Там ASM код писался в комментариях и нормально компилировался, если не ошибаюсь, MASM'ом. Этот вопрос адресован к коментарию, указанному в кавычках. Написано, что можно создавать драйвера на ASM'e, но не на VB. Получается автор сам себе противоречит =)
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.10.2005 (Вс) 8:40

d3drm, или это у тебя плохая шутка, или ты не понял чем отличается асм-в-VB от асма-просто.
:-|
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 67

    TopList