Форум программистов, компьютерный форум, киберфорум
Программирование драйверов
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
92 / 19 / 4
Регистрация: 11.04.2015
Сообщений: 1,019
Записей в блоге: 1

Как выгрузить драйвер мыши из линукса?

08.07.2016, 19:18. Показов 2900. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Пишу драйвер мыши и дошел до стадии отладки. Для этого мне нужно выгрузить родной встроенный драйвер мыши, чтобы запустилась функция probe моего драйвера, а по окончании вставить его на место.

Как это сделать?

Добавлено через 3 минуты
Или, если вопрос некорректен, что надо сделать, чтобы при подсоединении мышки выполнилась функция probe именно моего драйвера, а не встроенного?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.07.2016, 19:18
Ответы с готовыми решениями:

Как написать драйвер мыши под Линукс
Здраствуйте. Я студент, и у меня тема курсового проекта "Написание драйвера под Линокс". В качестве устройства я выбрал мишь. Так как...

Возможно ли как-нибудь выгрузить драйвер ?
Ребят возможно ли как-нибудь убить драйвер в системе?Точнее его выгрузить?Пробывал через программы "руткит" , но не нашел стоящей

Возможно ли как-нибудь выгрузить драйвер ? - Windows 10
Ребят появился драйвер вируса после установки касперского он удалил вирус а вот драйвер остался!!Ребят помоги удалить вирус и выгрузить...

11
599 / 421 / 136
Регистрация: 02.10.2008
Сообщений: 1,796
Записей в блоге: 1
12.07.2016, 06:55
insmod, rmmod, modeprobe ...
1
92 / 19 / 4
Регистрация: 11.04.2015
Сообщений: 1,019
Записей в блоге: 1
13.07.2016, 05:56  [ТС]
То есть чтобы сработала функция probe, мне надо выполнить команду modprobe?

Я выложил свой код по этой ссылке:
https://www.cyberforum.ru/c-li... 74563.html
Код драйвера целиком и полностью взят отсюда:
https://sysplay.in/blog/linux-... b-devices/
Мне в нем непонятно, откуда должна запускаться функция probe и откуда должен передаваться указатель *interface для нее. Если можете, разьясните пожалуста. И еще: в инструкции по запуску драйвера автор пишет следующее:
Plug-in the pen drive (after making sure that*usb-storage*driver is not already loaded).
То есть предварительно надо выгрузить основной драйвер мыши? Разьясните пожалуйста эти нюансы.
0
Почетный модератор
 Аватар для Humanoid
11553 / 4348 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
13.07.2016, 08:27
Цитата Сообщение от max_sk Посмотреть сообщение
Мне в нем непонятно, откуда должна запускаться функция probe и откуда должен передаваться указатель *interface для нее.
probe вызывает ядро обычно при загрузке драйвера. Но в данном случае больше похоже, что pen_probe будет вызван при подключении устройства в USB. Аргумент interface будет передан ядром. От вас требуется только загрузить драйвер через modprobe и подключить устройство с указанными vid/pid из переменной pen_table.

Цитата Сообщение от max_sk Посмотреть сообщение
Plug-in the pen drive (after making sure that*usb-storage*driver is not already loaded).
То есть предварительно надо выгрузить основной драйвер мыши?
Почему драйвер мыши? Сомневаюсь, что usb-storage - это драйвер мыши... больше похоже на mass storage device - всякие флешки. В любом случае, модуль с таким именем существует, а значит можно выполнить rmmod usb-storage.
1
92 / 19 / 4
Регистрация: 11.04.2015
Сообщений: 1,019
Записей в блоге: 1
13.07.2016, 09:18  [ТС]
Humanoid, спасибо за ваш ответ. А где я могу посмотреть vid/pid, чтобы внести его в таблицу? Я ведь буду подключать свое устройство...
0
599 / 421 / 136
Регистрация: 02.10.2008
Сообщений: 1,796
Записей в блоге: 1
13.07.2016, 09:24
сначала dmesg после подключения девайса - увидим что именно появилось в системе.
lsusb -v - детальная инфа по USBшкам
1
92 / 19 / 4
Регистрация: 11.04.2015
Сообщений: 1,019
Записей в блоге: 1
13.07.2016, 09:41  [ТС]
drfaust, спасибо. На выходных попробую докончить свой драйвер.
0
92 / 19 / 4
Регистрация: 11.04.2015
Сообщений: 1,019
Записей в блоге: 1
15.07.2016, 11:28  [ТС]
Добрый день еще раз!

Напоминаю, что взял за основу код из сети по ссылке
https://sysplay.in/blog/linux-... b-devices/
но передедываю его не под стилус, а под мышь. Вот мой код:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/usb.h>
 
#define MIN(a,b) (((a) <= (b)) ? (a) : (b))
#define BULK_EP_OUT 0x01
#define BULK_EP_IN 0x81 // SEE CORRECT NUMBER IN /proc/bus/usb/devices in section E
#define MAX_PKT_SIZE 512
 
static struct usb_device *device;
static struct usb_class_driver class;
static unsigned char bulk_buf[MAX_PKT_SIZE];
 
static int pen_open(struct inode *i, struct file *f)
{
    return 0;
}
static int pen_close(struct inode *i, struct file *f)
{
    return 0;
}
static ssize_t pen_read(struct file *f, char __user *buf, size_t cnt, loff_t *off)
{
    int retval;
    int read_cnt;
 
    /* Read the data from the bulk endpoint */
    retval = usb_bulk_msg(device, usb_rcvbulkpipe(device, BULK_EP_IN),
            bulk_buf, MAX_PKT_SIZE, &read_cnt, 5000);
    if (retval)
    {
        printk(KERN_ERR "Bulk message returned %d\n", retval);
        return retval;
    }
    if (copy_to_user(buf, bulk_buf, MIN(cnt, read_cnt)))
    {
        return -EFAULT;
    }
 
    return MIN(cnt, read_cnt);
}
static ssize_t pen_write(struct file *f, const char __user *buf, size_t cnt,
                                    loff_t *off)
{
    int retval;
    int wrote_cnt = MIN(cnt, MAX_PKT_SIZE);
 
    if (copy_from_user(bulk_buf, buf, MIN(cnt, MAX_PKT_SIZE)))
    {
        return -EFAULT;
    }
 
    /* Write the data into the bulk endpoint */
    retval = usb_bulk_msg(device, usb_sndbulkpipe(device, BULK_EP_OUT),
            bulk_buf, MIN(cnt, MAX_PKT_SIZE), &wrote_cnt, 5000);
    if (retval)
    {
        printk(KERN_ERR "Bulk message returned %d\n", retval);
        return retval;
    }
 
    return wrote_cnt;
}
 
static struct file_operations fops =
{
    .open = pen_open,
    .release = pen_close,
    .read = pen_read,
    .write = pen_write,
};
 
static int pen_probe(struct usb_interface *interface, const struct usb_device_id *id)
{
    int retval;
 
    device = interface_to_usbdev(interface);
 
    class.name = "usb/pen%d";
    class.fops = &fops;
    if ((retval = usb_register_dev(interface, &class)) < 0)
    {
        /* Something prevented us from registering this driver */
        printk(KERN_ERR "Not able to get a minor for this device.");
    }
    else
    {
        printk(KERN_INFO "Minor obtained: %d\n", interface->minor);
    }
 
    return retval;
}
 
static void pen_disconnect(struct usb_interface *interface)
{
    usb_deregister_dev(interface, &class);
}
 
/* Table of devices that work with this driver */
static struct usb_device_id pen_table[] =
{
    { USB_DEVICE(0x058F, 0x6387) }, // This is WRONG numbers!!!
    {} /* Terminating entry */
};
MODULE_DEVICE_TABLE (usb, pen_table);
 
static struct usb_driver pen_driver =
{
    .name = "pen_driver",
    .probe = pen_probe,
    .disconnect = pen_disconnect,
    .id_table = pen_table,
};
 
static int __init pen_init(void)
{
    int result;
 
    /* Register this driver with the USB subsystem */
    if ((result = usb_register(&pen_driver)))
    {
        printk(KERN_ERR "usb_register failed. Error number %d", result);
    }
    return result;
}
 
static void __exit pen_exit(void)
{
    /* Deregister this driver with the USB subsystem */
    usb_deregister(&pen_driver);
}
 
module_init(pen_init);
module_exit(pen_exit);
 
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Anil Kumar Pugalia <email@sarika-pugs.com>");
MODULE_DESCRIPTION("USB Pen Device Driver");
В нем я изменил строку на:
C
1
#define BULK_EP_IN 0x81 // SEE CORRECT NUMBER IN /proc/bus/usb/devices in section E
, соответствующий моей мыши, а также пока неверна запись в pen-table:
C
1
2
3
4
5
6
7
/* Table of devices that work with this driver */
static struct usb_device_id pen_table[] =
{
    { USB_DEVICE(0x058F, 0x6387) }, // This is WRONG numbers!!!
    {} /* Terminating entry */
};
MODULE_DEVICE_TABLE (usb, pen_table);
Выполняю инструкцию из примера по ссылке. Автор пишет:

Build the driver (pen_driver.ko file) by running make.
Load the driver using insmod pen_driver.ko.
Plug-in the pen drive (after making sure that usb-storage driver is not already loaded).
Check for the dynamic creation of /dev/pen0. (0 being the minor number obtained – check dmesg logs for the value on your system)
Possibly try some write/read on /dev/pen0. (Though you may mostly get connection timeout and/or broken pipe errors because of non-conformant SCSI commands)
Unplug-out the pen drive and look out for gone /dev/pen0.
Unload the driver using rmmod pen_driver.
Застреваю на третьем и четвертом пунктах. Вот вывод:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@mskopin kernel_mode]# make clean
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.unsigned *.symvers *.order
[root@mskopin kernel_mode]# make
make -C /lib/modules/2.6.32-642.1.1.el6.x86_64/build M=/home/mskopin/Desktop/Mouse_Driver_project/kernel_mode modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-642.1.1.el6.x86_64'
  CC [M]  /home/mskopin/Desktop/Mouse_Driver_project/kernel_mode/mypen.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/mskopin/Desktop/Mouse_Driver_project/kernel_mode/mypen.mod.o
  LD [M]  /home/mskopin/Desktop/Mouse_Driver_project/kernel_mode/mypen.ko.unsigned
  NO SIGN [M] /home/mskopin/Desktop/Mouse_Driver_project/kernel_mode/mypen.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.32-642.1.1.el6.x86_64'
echo "bulding module for intel architecture:" 
bulding module for intel architecture:
[root@mskopin kernel_mode]# ls
cmd       modules.order   mymouse3.c  mypen.c   mypen.ko.unsigned  mypen.mod.o
Makefile  Module.symvers  mymouse.c   mypen.ko  mypen.mod.c        mypen.o
[root@mskopin kernel_mode]# insmod mypen.ko
[root@mskopin kernel_mode]# rmmod usb-storage
ERROR: Module usb_storage does not exist in /proc/modules
Bash
1
2
3
4
5
6
7
8
9
10
11
12
[root@mskopin dev]# rmmod usb-storage
ERROR: Module usb_storage does not exist in /proc/modules
[root@mskopin dev]# dmesg
usb 1-1.3: new low speed USB device number 9 using ehci_hcd
usb 1-1.3: New USB device found, idVendor=046d, idProduct=c05a
usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1.3: Product: USB Optical Mouse
usb 1-1.3: Manufacturer: Logitech
usb 1-1.3: configuration #1 chosen from 1 choice
input: Logitech USB Optical Mouse as /devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.3/1-1.3:1.0/input/input18
generic-usb 0003:046D:C05A.0005: input,hidraw0: USB HID v1.11 Mouse [Logitech USB Optical Mouse] on usb-0000:00:1d.0-1.3/input0
[root@mskopin dev]#
Как видите, драйвер "не ловится" и файл /dev/pen0 не появляется. Что я делаю не так? И где взять значения для pen-table?
0
Почетный модератор
 Аватар для Humanoid
11553 / 4348 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
17.07.2016, 13:05
В общем, вам нужно отключить драйвер мыши, т.к. именно с ней вы хотите работать. Могу предложить только usbhid выгрузить... но если у вас и клавиатура USBшная, то она тоже перестанет работать.
И я не уверен, что ваши функции смогут работать с мышью, т.к. мышь - это HID, а HID использует Interrupt endpoint. А вы работаете с Bulk'ом. Вам проще проводить эксперименты на какой-нибудь флешке. И тогда вы сможете работать по той инструкции с usb_storage.
1
92 / 19 / 4
Регистрация: 11.04.2015
Сообщений: 1,019
Записей в блоге: 1
17.07.2016, 13:23  [ТС]
Спасибо, Humanoid, за ваш ответ. В оригинале используется pen, т.е. стилус. Стилус и мышь это не одного типа устройства, не hid-устройства?

Насколько я понял host id-коннектор и device id - конектор порта USB различаются по внешнему виду и поэтому все устройства уоторые подсоединяются на hid-коннектор являются hid-устройствами. Или я не прав?

Добавлено через 1 минуту
Возможно мои сведения слишком поверхтностные, я только начинаю разбираться с этой темой...
0
Почетный модератор
 Аватар для Humanoid
11553 / 4348 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
17.07.2016, 23:20
Цитата Сообщение от max_sk Посмотреть сообщение
В оригинале используется pen, т.е. стилус
Вы уверены, что речь идёт о стилусе? У меня сложилось впечатление, что это просто название драйвера. Например,
Note that a pen drive belongs to a USB mass storage class, which expects a set of SCSI like commands to be transacted over the bulk endpoints.
К тому же, этот драйвер ничем не управляет и никаких протоколов не использует. Он просто предоставляет интерфейс для чтения/записи сырых данных в bulk-endpoint напрямую из userspace. Такой же функционал (даже более гибкий) можно получить через libusb.

Цитата Сообщение от max_sk Посмотреть сообщение
Стилус и мышь это не одного типа устройства, не hid-устройства?
Мышь - это hid. А про стилус не знаю.

Цитата Сообщение от max_sk Посмотреть сообщение
Насколько я понял host id-коннектор и device id - конектор порта USB различаются по внешнему виду и поэтому все устройства уоторые подсоединяются на hid-коннектор являются hid-устройствами.
Ничего не понял. HID - это просто стандартный протокол обмена данными по USB. Что бы под каждую мышь и клавиатуру не приходилось писать собственный драйвер были придуманы классы устройств. Например HID вначале передаёт хосту, информацию о том, что он из себя представляет и какие данные передаёт. Поэтому даже новые и современные мыши с клавиатурами без проблем работают даже на старых операционках.
Тоже самое с другим классом - Mass Storage Devices, у которого стандартизирована система команд. И все флешки работают по одному стандарту.
Все USB устройства электрически одинаковые. О своей принадлежности к тому или иному классу они сообщают хосту программным путём (в десткрипторах). Советую ознакомиться со спецификацией на USB2.0... без этого писать свой драйвер будет очень тяжко. Так же можно ознакомиться с описаниями разных классов. Там есть и про HID.

Кстати, хотя некоторые считают HID простым, лично я с этом не согласен. HID - один из наиболее сложных для понимания классов (в первую очередь из-за Usage Tables, которая делает его таким гибким).
1
92 / 19 / 4
Регистрация: 11.04.2015
Сообщений: 1,019
Записей в блоге: 1
18.07.2016, 21:17  [ТС]
Humanoid, вы советуете попробовать выгрузить usbhid, но его нет у меня в /proc/modules.
Даю вывод этого файла. Что мне именно нужно выгрузить?

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
[root@mskopin proc]# rmmod usbhid
ERROR: Module usbhid does not exist in /proc/modules
[root@mskopin proc]# cd /proc
[root@mskopin proc]# cat modules
ecb 2209 0 - Live 0xffffffffa08ba000
drbg 23248 1 - Live 0xffffffffa08b0000
ansi_cprng 4716 0 - Live 0xffffffffa08ab000
ctr 4331 2 - Live 0xffffffffa08a6000
aesni_intel 52850 4 - Live 0xffffffffa088f000
ablk_helper 3215 1 aesni_intel, Live 0xffffffffa088b000
cryptd 10040 2 aesni_intel,ablk_helper, Live 0xffffffffa0884000
lrw 4216 1 aesni_intel, Live 0xffffffffa087f000
gf128mul 7993 1 lrw, Live 0xffffffffa087a000
glue_helper 7506 1 aesni_intel, Live 0xffffffffa0875000
aes_x86_64 7837 1 aesni_intel, Live 0xffffffffa0870000
aes_generic 27609 2 aesni_intel,aes_x86_64, Live 0xffffffffa0866000
ccm 8247 2 - Live 0xffffffffa0860000
fuse 79892 0 - Live 0xffffffffa0844000
autofs4 27000 3 - Live 0xffffffffa0839000
8021q 20362 0 - Live 0xffffffffa082f000
garp 7152 1 8021q, Live 0xffffffffa0829000
stp 2218 1 garp, Live 0xffffffffa0825000
llc 5418 2 garp,stp, Live 0xffffffffa081f000
cpufreq_ondemand 10544 4 - Live 0xffffffffa0818000
acpi_cpufreq 7763 1 - Live 0xffffffffa0812000
freq_table 4936 2 cpufreq_ondemand,acpi_cpufreq, Live 0xffffffffa080d000
mperf 1557 1 acpi_cpufreq, Live 0xffffffffa0809000
iptable_filter 2793 0 - Live 0xffffffffa07ff000
ip_tables 17831 1 iptable_filter, Live 0xffffffffa07f6000
ip6t_REJECT 4340 2 - Live 0xffffffffa07f1000
nf_conntrack_ipv6 7985 3 - Live 0xffffffffa07eb000
nf_defrag_ipv6 26468 1 nf_conntrack_ipv6, Live 0xffffffffa07e0000
xt_state 1492 3 - Live 0xffffffffa07dc000
nf_conntrack 79537 2 nf_conntrack_ipv6,xt_state, Live 0xffffffffa07bd000
ip6table_filter 2889 1 - Live 0xffffffffa07b9000
ip6_tables 18732 1 ip6table_filter, Live 0xffffffffa07b0000
vfat 10584 1 - Live 0xffffffffa07aa000
fat 54992 1 vfat, Live 0xffffffffa0796000
uinput 8120 0 - Live 0xffffffffa078d000
microcode 112205 0 - Live 0xffffffffa0769000
r8169 74333 0 - Live 0xffffffffa074f000
mii 5376 1 r8169, Live 0xffffffffa074a000
bcma 45650 0 - Live 0xffffffffa0737000
iTCO_wdt 7278 0 - Live 0xffffffffa0731000
iTCO_vendor_support 3056 1 iTCO_wdt, Live 0xffffffffa072d000
sg 29318 0 - Live 0xffffffffa0720000
uvcvideo 62688 0 - Live 0xffffffffa070b000
videodev 75708 1 uvcvideo, Live 0xffffffffa06f0000
v4l2_compat_ioctl32 7110 1 videodev, Live 0xffffffffa06eb000
arc4 1475 2 - Live 0xffffffffa06e7000
rtl8192cu 61526 0 - Live 0xffffffffa06d1000
rtl8192c_common 46724 1 rtl8192cu, Live 0xffffffffa06bf000
rtl_usb 10709 1 rtl8192cu, Live 0xffffffffa06b8000
rtlwifi 67703 3 rtl8192cu,rtl8192c_common,rtl_usb, Live 0xffffffffa069f000
mac80211 703193 3 rtl8192cu,rtl_usb,rtlwifi, Live 0xffffffffa05c3000
cfg80211 698431 2 rtlwifi,mac80211, Live 0xffffffffa04e3000
rfkill 19255 2 cfg80211, Live 0xffffffffa04d9000
ipv6 336282 44 ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6,mac80211, Live 0xffffffffa0472000
shpchp 29130 0 - Live 0xffffffffa0465000
i2c_i801 12881 0 - Live 0xffffffffa045d000
snd_hda_codec_realtek 73730 1 - Live 0xffffffffa0442000
lpc_ich 13571 0 - Live 0xffffffffa0439000
snd_hda_codec_hdmi 45492 1 - Live 0xffffffffa0427000
mfd_core 1927 1 lpc_ich, Live 0xffffffffa0423000
snd_hda_codec_generic 64356 1 snd_hda_codec_realtek, Live 0xffffffffa040c000
snd_hda_intel 56602 3 - Live 0xffffffffa03f5000
snd_hda_codec 144814 4 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_intel, Live 0xffffffffa03bf000
snd_hwdep 6972 1 snd_hda_codec, Live 0xffffffffa03b9000
snd_seq 60769 0 - Live 0xffffffffa03a2000
snd_seq_device 7277 1 snd_seq, Live 0xffffffffa039c000
snd_pcm 93697 3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec, Live 0xffffffffa037a000
snd_timer 22747 2 snd_seq,snd_pcm, Live 0xffffffffa036f000
snd 73783 16 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_seq,snd_seq_device,snd_pcm,snd_timer, Live 0xffffffffa0352000
soundcore 7958 2 snd_hda_codec,snd, Live 0xffffffffa0038000
snd_page_alloc 8856 2 snd_hda_intel,snd_pcm, Live 0xffffffffa0348000
ext4 379655 3 - Live 0xffffffffa02d5000
jbd2 93252 1 ext4, Live 0xffffffffa02b3000
mbcache 8193 1 ext4, Live 0xffffffffa02ac000
sr_mod 15049 0 - Live 0xffffffffa00d4000
cdrom 39085 1 sr_mod, Live 0xffffffffa02a1000
sd_mod 37158 4 - Live 0xffffffffa00fa000
crc_t10dif 1209 1 sd_mod, Live 0xffffffffa0021000
ahci 43154 3 - Live 0xffffffffa00c2000
xhci_hcd 181217 0 - Live 0xffffffffa0273000
wmi 6287 0 - Live 0xffffffffa001b000
i915 1255694 4 - Live 0xffffffffa0109000
drm_kms_helper 127219 1 i915, Live 0xffffffffa00d9000
drm 362893 5 i915,drm_kms_helper, Live 0xffffffffa005d000
i2c_algo_bit 5711 1 i915, Live 0xffffffffa0058000
i2c_core 29132 6 videodev,i2c_i801,i915,drm_kms_helper,drm,i2c_algo_bit, Live 0xffffffffa004a000
video 21654 1 i915, Live 0xffffffffa003f000
output 2409 1 video, Live 0xffffffffa003b000
dm_mirror 14864 0 - Live 0xffffffffa0033000
dm_region_hash 12085 1 dm_mirror, Live 0xffffffffa002c000
dm_log 9930 2 dm_mirror,dm_region_hash, Live 0xffffffffa0025000
dm_mod 102467 11 dm_mirror,dm_log, Live 0xffffffffa0000000
[root@mskopin proc]#
По поводу сложности драйвера... Я делаю учебный проект и он относительно прост. В kernel mode должен быть простенький драйвер, распознающий движения мышки и передающий данные об этом именно в user space, а уже оттуда имитируются движения курсора на экране. Именно поэтому есть функция read и т.д.

Возможно мои понятия о USB-драйверах крайне примитивны и я буду только рад, если вы мне посоветуете учебную литературу про них.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.07.2016, 21:17
Помогаю со студенческими работами здесь

Как установить драйвер клавиатуры и мыши USB
Суть проблемы такова, на компьютере ни одного PS/2 нужно установить мышь и клавиатуру USB. Как это сделать? Устройство определяется выдает...

Драйвер для мыши
для мыши нужен только usb драйвер верно?? или какой то еще?

драйвер мыши G300
не могу установить родной драйвер для мыши в Windows 7 64 как HID-устройство устанавливается без проблем скрин тут

Отвалился драйвер мыши (?)
Здравствуйте, слезно прошу о помощи. Решила обновить драйвера видеокарты (Radeon 2100). Зашла на оф. сайт AMD, ввела модель,...

Драйвер клавиатуры и мыши.
Здравствуйте! Может кто-нибудь дать исходники на драйвер клавиатуры и мыши с подробным описанием строк. Или любой небольшой исходник...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru