Форум программистов, компьютерный форум, киберфорум
Программирование драйверов
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование драйверов Зачем нужен драйвер и как написать простейший драйвер Хотя в интернете и есть на русском языке некоторые обяснения что такое драйвер для его програмирования считаю это довольно узко. Рускоязычные книги тоже не совсем понятно написаны. Вобщем мои рассуждения ( правильны ли они). Расссматриваю написания драйверов под виндовс. Для стабильности ОС програмисты разделиль функционирование ОС на две части - пользовательский режим и режим ядра, так как в... https://www.cyberforum.ru/ drivers-programming/ thread656538.html Программирование драйверов Написание Legacy Nt драйвера: исправить код
Здравствуйте, пишу драйвер под плату Плата генерирует прерывания с определенным интервалом, смысл их перехватить и где нибудь отобразить // init.cpp: Инициализация драйвера #include "ek.h" NTSTATUS CreateDevice(IN PDRIVER_OBJECT pdo,IN ULONG port,IN ULONG irq);//порт -330 irq 5 NTSTATUS DeviceControlRoutine( IN PDEVICE_OBJECT fdo, IN PIRP Irp );//обработчик всех 12 иоклт запросов...
Программирование драйверов Драйвер USB накопителя, шифрующий данные https://www.cyberforum.ru/ drivers-programming/ thread653137.html
Добрый день. Суть моей проблемы описана в сабже. Драйвер флешки нашел в WDK, но не могу разобраться, что именно передавать параметром в функцию шифрования. Пересмотрел исходники на несколько раз. Предполагаю, что при чтении / записи драйвер обращается к памяти, и в этот момент должно происходить (де) шифрование. Но найти этот момент не могу.
Программирование драйверов Драйвер USB флешки в WDK: обеспечить совместимость с разными ОС Добрый день. Мне нужно разработать драйвер для USB накопителя. Для этого я решил воспользоваться программой WDK, так как нужна совместимость программы и с win7, и с XP. Но я не умею пользоваться этой программой. Не могли бы вы помочь в описании инструкций ее эксплуатации (желательно, название .exe файла, который нужно запустить, как выбирать и загружать проекты, компилирование и отладка).... https://www.cyberforum.ru/ drivers-programming/ thread651482.html
Посоветуйте полезные книги касательно написания ISA Legacy драйверов Программирование драйверов
Здрасьте, посоветуйте полезные книги касательно написания именно ISA Legacy драйверов, интересует как укзаать драйверу порты ввода-вывода,требуемое прерывание и т.п., атакже эмуляция псевдореального времени с целью получения отклика в приемлимое время посредством повышения приоритета процесса. Реально трудно найти подходящую литературу,
Программирование драйверов Драйвер для завершения процессов https://www.cyberforum.ru/ drivers-programming/ thread648073.html
Здравствуйте уважаемые программисты! Мне нужно написать драйвер для завершения процессов. Я написал драйвер,но он,почему-то, не завершает процессы.При запуске драйвера должна сработать функция Go() и процесс должен завершиться,но так не получается.Подскажите,пожалуйста, в чём проблема. А вот что я написал: #include <ntddk.h> #include <string.h> #include <malloc.h> #define DEBUG #define...
Программирование драйверов Работа с устройством: NULL в CurrentStackLocation Вот дожил до того, что припёрло написать драйвер. После первой синьки в обработчике "IRP_MJ_DEVICE_CONTROL" проверил поля "Tail.Overlay.CurrentStackLocation" и "UserBuffer" - оба в нулях. Почему, ума не приложу, вроде всё делал как пишут в интернетах. Если не трудно, гляньте, может я что-то напутал. создание устр-ва: RtlInitUnicodeString(&usDevName, "\Device\<имя устр-ва>");... https://www.cyberforum.ru/ drivers-programming/ thread645524.html Программирование драйверов Как правельно настроить порты USB
Привет всем !! проблема в том что у меня постоянно вылетает модем не из за того что связь плохая а из портов USB как бут то они не видят этот модем !! сувал его и в передние порты и задние не помогает везде одинаково - может что то надо правельно настроить в биосе или еще что то !! помогите модем у меня мегафон
Программирование драйверов Устройство обработки изображения https://www.cyberforum.ru/ drivers-programming/ thread628761.html
Добрый день. Скажите, где можно прочитать про программирование "Устройство обработки изображения"->"USB - видеоустройство". То есть так звучит моя веб камера в Диспетчере устройств.
Программирование драйверов Где взять информацию по ksproxy.ax Где взять информацию по ksproxy.ax БЕСПЛАТНУЮ. Так как это драйвер включает мои лампочки на web камере, и за вкл\вкл лампочек платить нехочится. Спасибо Добавлено через 7 минут Еще вопрос такой. Если моя веб камера поставляется без драйверов. Может нет необходимости именно этот драйвер использовать для вкл\вкл лампочек, ведь для получения потока с этой же камеры можно многими... https://www.cyberforum.ru/ drivers-programming/ thread628580.html
Программирование драйверов Исправить ошибку в приведенном коде
#include "ntddk.h" NTSTATUS CompleteIrp( PIRP pIrp, NTSTATUS status, ULONG info) { pIrp->IoStatus.Status = status; // количество байтов, переданных клиенту. pIrp->IoStatus.Information = info; IoCompleteRequest( pIrp, IO_NO_INCREMENT); return status;
199 / 199 / 78
Регистрация: 10.07.2012
Сообщений: 409
30.09.2012, 18:59 0

Как перевести буквенно-цифровой режим в 40x25 - Программирование драйверов - Ответ 3504801

30.09.2012, 18:59. Показов 1425. Ответов 4
Метки (Все метки)

Ответ

Цитата Сообщение от v4567 Посмотреть сообщение
Я написал небольшую прогу и запускал её под дос в отладчике.
Очень долго я лазил в этом 10 прерывании но так и не смог уяснить то что меня интересует.
повезло мой отладчик по биосу мог ходить только через Step Into (при Step Over ругался на read-only память)
---
лазить по прерыванию может понадобиться если неизвестно что от него ожидать
в случае же с такими простыми режимами (совместимыми с VGA) есть конечный набор регистров, больше которых и знать не надо (а именно: sequencer, misc reg, crtc, actl, grdc. есть ещё палитра - но я так понимаю её трогать не надо)
если кому интересна моя автоматическая лазалка по int 10h - вот она (FASM) [хардкор + возможны глюки - снимаю запреты прерываний]:
Assembler
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
org 0x100
 
; Move stack to new location
mov  sp, NewStackEnd - 2
 
; Set dump memory block
mov  ax, word [0x0002]
mov  bx, cs
add  bx, lastbyte shr 4
sub  ax, lastbyte shr 4
mov  [LastDumpSegment], bx
mov  [DumpSegment], bx
mov  [DumpPtrSeg], bx
mov  [DumpPtrOfs], 0
add  [LastDumpSegment], ax
dec  [LastDumpSegment]
 
; Set trap handler
push ds
push 0x0000
pop  ds
mov  ax, [1 * 4 + 0]
mov  [es:OldHandler + 0], ax
mov  ax, [1 * 4 + 2]
mov  [es:OldHandler + 2], ax
mov  [1 * 4 + 0], word TrapHandler
mov  [1 * 4 + 2], cs
pop  ds
 
; Enable trap flag
pushf
pop  ax
or   ax, 0x0100
push ax
popf
 
; Switch VESA mode
;mov  ah, 0x4F
;mov  al, 0x02
;mov  bx, 0x003;0x115
;int  0x10
 
mov  ah, 0x00
mov  al, 0x03 or 0x80
int  0x10
 
;mov  ah, 0x4F
;mov  al, 0x08
;mov  bl, 0x00
;mov  bh, 0x08
;int  0x10
 
; Disable trap flag
pushf
pop  ax
and  ax, 0xFEFF
push ax
popf
 
; Restore trap handler
push ds
push 0x0000
pop  ds
mov  ax, [es:OldHandler + 0]
mov  [1 * 4 + 0], ax
mov  ax, [es:OldHandler + 2]
mov  [1 * 4 + 2], ax
pop  ds
 
; Draw something
call DrawStripes
 
; Wait for keypress
mov  ah, 0x0
int  0x16
 
; Restore videomode
mov  ah, 0x4F
mov  al, 0x02
mov  bx, 0x03
int  0x10
 
; Save dump
mov  ah, 0x3C
mov  dx, FilePath
mov  cx, 0
int  21h
 
mov  bx, ax
xor  dx, dx
xor  ecx, ecx
mov  si, [DumpSegment]
mov  edi, [DumpSize]
lb3:
cmp  edi, 0x10
jb   lb1
  mov  cx, 0x10
  sub  edi, 0x10
  jmp  lb2
lb1:
  mov  cx, di
  xor  edi, edi
lb2:
  push si
  pop  ds
  mov  ah, 0x40
  int  0x21
  jc   exit
  inc  si
  or   edi, edi
  jnz  lb3
 
; Exit
exit:
int  0x20
 
; ----------------------------------
FilePath db 'iodump.bin', 0
OldHandler rw 2
DumpSegment rw 1
LastDumpSegment rw 1
DumpPtrSeg rw 1
DumpPtrOfs rw 1
DumpSize dd 0
DumpOverflow db 0
IoType db 0
IoIP rw 1
 
SavedDS  rw 1
SavedEAX rd 1
SavedBX  rw 1
SavedCX  rw 1
SavedDX  rw 1
SavedSI  rw 1
SavedBP  rw 1
 
GuestIP  rw 1
GuestCS  rw 1
GuestFl  rw 1
 
; ----------------------------------
TrapHandler:
  mov  [cs:SavedDS], ds
  mov  [cs:SavedEAX], eax
  mov  [cs:SavedBX], bx
  mov  [cs:SavedCX], cx
  mov  [cs:SavedDX], dx
  mov  [cs:SavedSI], si
  mov  [cs:SavedBP], bp
 
  pop  [cs:GuestIP]
  pop  [cs:GuestCS]
  pop  [cs:GuestFl]
 
  cmp  [cs:DumpOverflow], 1
  je   exithandler
 
  cmp  [cs:IoType], 0
  je   NoPrevIo
    push [cs:DumpPtrSeg]
    pop  ds
    mov  si, [cs:DumpPtrOfs]
    mov  al, [cs:IoType]
    mov  [ds:si], al
    mov  dx, [cs:IoIP]
    mov  [ds:si+1], dx
    mov  dx, [cs:SavedDX]
    mov  [ds:si+3], dx
    mov  ebx, 5
    mov  ecx, [cs:SavedEAX]
    cmp  al, 0x01
    jne  @f
      add  bx, 1
      mov  [ds:si+5], cl
    @@:
    cmp  al, 0x02
    jne  @f
      add  bx, 2
      mov  [ds:si+5], cx
    @@:
    cmp  al, 0x03
    jne  @f
      add  bx, 4
      mov  [ds:si+5], ecx
    @@:
    cmp  al, 0x04
    jne  @f
      add  bx, 1
      mov  [ds:si+5], cl
    @@:
    cmp  al, 0x05
    jne  @f
      add  bx, 2
      mov  [ds:si+5], cx
    @@:
    cmp  al, 0x06
    jne  @f
      add  bx, 4
      mov  [ds:si+5], ecx
    @@:
 
    add  si, bx
    add  [cs:DumpSize], ebx
    mov  [cs:DumpPtrOfs], si
    and  [cs:DumpPtrOfs], 0x000F
    shr  si, 4
    add  [cs:DumpPtrSeg], si
 
NoPrevIo:
  mov  ds, [cs:GuestCS]
  mov  bx, [cs:GuestIP]
  mov  ax, [ds:bx]
 
  mov  [cs:IoIP], bx
  mov  [cs:IoType], 0
  cmp  al, 0xEE   ; out dx, al
  jne  @f
    mov  [cs:IoType], 1
  @@:
  cmp  al, 0xEF   ; out dx, ax
  jne  @f
    mov  [cs:IoType], 2
  @@:
  cmp  ax, 0xEF66 ; out dx, eax
  jne  @f
    mov  [cs:IoType], 3
  @@:
  cmp  al, 0xEC   ; in al, dx
  jne  @f
    mov  [cs:IoType], 4
  @@:
  cmp  al, 0xED   ; in ax, dx
  jne  @f
    mov  [cs:IoType], 5
  @@:
  cmp  ax, 0xED66 ; in eax, dx
  jne  @f
    mov  [cs:IoType], 6
  @@:
  cmp  al, 0xFA ; cli
  jne @f
    add  [cs:GuestIP], 1
  @@:
  cmp  al, 0xCD ; int X
  jne  @f
    xor  ch, ch
    mov  cl, ah
    mov  si, cx
    shl  si, 2
 
    add  [cs:GuestIP], 2
    push [cs:GuestFl]
    push [cs:GuestCS]
    push [cs:GuestIP]
 
    push 0
    pop  ds
    mov  ax, [ds:si]   ; ip
    mov  bx, [ds:si+2] ; cs
 
    mov  [cs:GuestIP], ax
    mov  [cs:GuestCS], bx
 
@@:
  mov  ax, [cs:LastDumpSegment]
  cmp  ax, [cs:DumpPtrSeg]
  jne  @f
    mov [cs:DumpOverflow], 1
  @@:
 
exithandler:
  mov  eax, [cs:SavedEAX]
  mov  bx, [cs:SavedBX]
  mov  cx, [cs:SavedCX]
  mov  dx, [cs:SavedDX]
  mov  si, [cs:SavedSI]
  mov  bp, [cs:SavedBP]
  mov  ds, [cs:SavedDS]
  push [cs:GuestFl]
  push [cs:GuestCS]
  push [cs:GuestIP]
  iret
 
; ----------------------------------
DrawStripes:
  pusha
  push es
  push 0xA000
  pop  es
  mov  bx, 5
  xor  si, si
  xor  di, di
  nextline:
    mov  cx, 640
    nextpixel:
      dec  cx
      xor  dx, dx
      mov  ax, cx
      shl  ax, 1
      div  bx
      xor  ah, ah
 
      cmp  si, 6
      jae  l1
    mov  ah, al
    xor  al, al
    stosb
    stosb
    mov  al, ah
    stosb
    xor  al, al
    stosb
    jmp  lf
      l1:
      cmp  si, 12
      jae  l2
    mov  ah, al
    xor  al, al
    stosb
    mov  al, ah
    stosb
    xor  al, al
    stosb
    stosb
    jmp  lf
      l2:
      cmp  si, 18
      jae  l3
    stosb
    xor  al, al
    stosb
    stosb
    stosb
    jmp  lf
      l3:
    stosb
    stosb
    stosb
    stosb
    jmp  lf
      lf:
 
      or  cx, cx
      jnz nextpixel
    inc si
    cmp si, 24
    jnz nextline
  pop es
  popa
  ret
 
align 16
NewStackStart rb 1024
NewStackEnd:
lastbyte:
декодер дампа I/O:
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
using System;
using System.IO;
 
namespace VesaTrapDecode
{
    class Program
    {
        static void Main(string[] args)
        {
            BinaryReader br = new BinaryReader(File.Open(
                "e:\\_Research\\Vesa\\IoDump_20_115.bin", FileMode.Open));
            for (; ; )
            {
                int recordType = br.ReadByte();
                br.ReadUInt16();
                //Console.Write("{0:X4}: ", br.ReadUInt16());
                Console.Write("{0:X4}", br.ReadUInt16());
                if (recordType == 0x01)
                    Console.WriteLine(" <- {0:X2}", br.ReadByte());
                else if (recordType == 0x02)
                    Console.WriteLine(" <- {0:X4}", br.ReadUInt16());
                else if (recordType == 0x03)
                    Console.WriteLine(" <- {0:X8}", br.ReadUInt32());
                else if (recordType == 0x04)
                    Console.WriteLine(" -> {0:X2}", br.ReadByte());
                else if (recordType == 0x05)
                    Console.WriteLine(" -> {0:X4}", br.ReadUInt16());
                else if (recordType == 0x06)
                    Console.WriteLine(" -> {0:X8}", br.ReadUInt32());
 
                if (br.BaseStream.Position == br.BaseStream.Length)
                    break;
            }
        }
    }
}
а вот то что может непосредственно понадобиться. дампер регистров:
Assembler
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
; ==============================
org  0x100
 
; set desired mode
mov  ah, 0x4F
mov  al, 0x02
mov  bx, 0x03;0x115
int  0x10
 
; unlock CRTC regs - разлочка для GeForce`ов
;mov  ax, 0x573F
;mov  dx, 0x03D4
;out  dx, ax
 
; Dump registers: CRTC
mov  cx, 0x0100
mov  bx, 0x0000
mov  dx, 0x03D4
@@:
mov  al, bl
out  dx, al
in   ax, dx
mov  [crregs + bx], ah
inc  bx
loop @b
 
; Dump registers: ACTL
mov  cx, 0x0005
mov  bx, 0x0010
mov  dx, 0x03C0
@@:
mov  al, bl
out  dx, al
in   ax, dx
mov  [actlregs + bx - 0x10], ah
inc  bx
loop @b
 
; Dump registers: SEQ
mov  cx, 0x0005
mov  bx, 0x0000
mov  dx, 0x03C4
@@:
mov  al, bl
out  dx, al
in   ax, dx
mov  [seqregs + bx], ah
inc  bx
loop @b
 
; Dump registers: GRAPH
mov  cx, 0x0009
mov  bx, 0x0000
mov  dx, 0x03CE
@@:
mov  al, bl
out  dx, al
in   ax, dx
mov  [graphregs + bx], ah
inc  bx
loop @b
 
; Dump register: MISC
mov dx, 0x3CC
in  al, dx
mov [miscreg], al
 
; wait any key
mov  ah, 0x0
int  0x16
 
; restore mode
mov  ah, 0x4F
mov  al, 0x02
mov  bx, 0x03
int  0x10
 
; save file
mov  ah, 0x3C
mov  dx, filepath
mov  cx, 0
int  21h
 
mov  bx, ax
mov  ah, 0x40
mov  dx, regsstart
mov  cx, regsend - regsstart
int  21h
 
; exit
int  0x20
 
; -----------------------------
filepath   db 'regs.bin', 0
 
regsstart:
crregs     rb 0x100
actlregs   rb 5
seqregs    rb 5
graphregs  rb 9
miscreg    rb 1
 
regsend:
; ==============================


Вернуться к обсуждению:
Как перевести буквенно-цифровой режим в 40x25 Программирование драйверов
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.09.2012, 18:59
Готовые ответы и решения:

Преобразовать дату в буквенно-цифровой код
Подскажите, если можно на примере, как преобразовать дату в буквенно-цифровой код? Например...

Цифровой энергосберегающий режим
Здравствуйте, подскажите в чём может быть дело. Проблема следующая: при попытке вывести пк из сна...

Чёрный экран (цифровой энергосберегающий режим)
Здравствуйте. Имеется какая-то нерешаемая проблема, помогите пожалуйста. Монитор LG Flatron...

Как программно перевести монитор в спящий режим?
Подскажите, как программно перевести монитор в спящий режим?

4
30.09.2012, 18:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2012, 18:59
Помогаю со студенческими работами здесь

Как перевести форму в режим добавления записи?
есть кнопочка в панели навигации по таблице - 'добавить запись' надо чтобы форма открывалась уже в...

как перевести монитор в режим 4:3 без кнопки
Всем привет, так уж сложилось, что на моем мониторе залипла кнопка &quot;4:3&quot; и отказывается работать,...

Как перевести монитор в черно белый режим в Windows ?
вот думал заработает зашел в Свойства:Экран/Параметры/Дополнительно/управление цветом там есть...

Как из командной строки перевести ОС в гибридный спящий режим и как назначить кнопку клавиатуры для этого?
Ребята, 1. Можно ли из командной строки перевести компьютер в ГИБРИДНЫЙ спящий режим? Если да то...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru