· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Передача информации драйвер -> прикладная программа

<< . 1 . 2 .

Посл.отвђт Сообщенiе


Дата: Июн 8, 2004 17:35:08

> Непойму чего то драйвер то свой или чужой?
я говорил о драйвере руссиновича

> Если свой то почему не реализовать функцию передачи логов в драйвере в самом?
и то верно, но меня спросили как перехватить DebPrint, вот я и привел код, который это делает

> И пользователь её просто будет вызывать по DeviceIoControl драйвер в указанный буфер пользователя всё что надо запишет.
это не лучший способ. дело в том, что выделять много памяти в ядре вредно для здоровья, а если мало, нет гарантий, что она неожиданно не кончится, поэтому лучше всего либо через call-back'и, либо через event'ы. вот такое мое ИМХО, хотя.. памяти сейчас много и все эти извращения уже давно не актуальны.


Дата: Июн 8, 2004 18:22:41

[ kaspersky: нет, DbgView, дизассемблерный листинг которого я приводил выше, смотри: ]

Какая это версия? В DbgView v4.20 (драйвер 4.13) никакого cr0 нет и в помине. Зато есть такое:
:00010364 Remap proc near
:00010364    push    PAGE_SIZE
:00010369    push    pfnDbgPrint
:0001036F    push    0
:00010371    call    ds:MmCreateMdl
:00010377    push    eax
:00010378    mov     pMDL, eax
:0001037D    call    ds:MmBuildMdlForNonPagedPool
:00010383    push    KernelMode
:00010385    push    pMDL
:0001038B    call    ds:MmMapLockedPages
:00010391    mov     pfnDbgPrint, eax
:00010396    xor     eax, eax
:00010398    retn
:00010398 Remap endp


:00010991    call    Remap                     ; ремапим точку входа DbgPrint
:00010996    mov     ecx, pfnDbgPrint
. . .
:000109A1    mov     word ptr [ecx], 25FFh     ; патчим джампом на свою DbgPrintHook
. . .
:000109BC    mov     ecx, pfnDbgPrint
. . .
:000109C3    mov     dword ptr [ecx+2], offset pfnDbgPrintHook


Дата: Июн 8, 2004 18:23:04

Ничего всё равно не понимаю, драйвер то свой?
Он писать то может куда угодно? Не обязательно в память ядра.
Непонятно - ему то самому эти логи нужны или нет?
А если его вызвают, то и память ядра он может "освобождать" и использовать только под незапрошенные логи. К тому же непонятная инфа что за логи, может их инфу можно бинарно закодировать кратко, а сама программа пусть расшифровывает в строки.
Потому фраза твоя непонятна - call-back то чей?
Это из 3го кольца можно нырнуть в 0 вое и потом вынурнуть а не наоборот. Или что ты понимаешь под call-back?


Дата: Июн 9, 2004 01:54:26

Непойму чего то драйвер то свой или чужой?
Если свой то почему не реализовать функцию передачи логов в драйвере в самом?


свой. но до тех пор пока драйвер вызовут, логи надо где-то хранить. А места они немало занимают. Или динамически под них выделять память в промежутке между опросами ?


Дата: Июн 9, 2004 01:57:47

Непонятно - ему то самому эти логи нужны или нет?

ему нет. Он просто висит и делает свою работу. Параллельно логирует проходящие запросы и _если_ есть приложение, которому интересно посмотреть что счас происходит, то оно (ну хотелось бы так) может "подключится" (как ?) к драйверу и начать считывать эти логи. Как надоест - сваливает. А драйвер продолжает работать...


Дата: Июн 9, 2004 05:31:54

[ infern0: А драйвер продолжает работать... ]

Это какой-то нереальный сценарий, т.к. если никто и никогда не захочет "подключится к драйверу и начать считывать эти логи", а драйвер продолжает работать... Надеюсь, мысль понятна. Какое-то разумное ограничение на размер лога должно быть.


[ infern0: А места они немало занимают. ]

Сколько?

<< . 1 . 2 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.057