|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Апр 9, 2004 20:55:58 Всем привет!!! Вот после отдыха решил продолжить раскопки :) Сразу же возник следующий вопрос: из User mode, для примера, я могу вызвать MessageBoxA@16, а вот из kernel mode - фига! Всему виной отсутствие спроецированной User32.dll. Ну так как же! Что же теперь создавать EXE-шник и WinEXEc...? Полагаю, что есть и другие пути (не копатся же вечно в kernel driver mode??? собрал инфу и пора домой...). Естественно "внешнего" :) процеса user mode у меня нет, да и ессно, DeviceIoControl вообще недеспособен. Типа драйвер-одиночка. Please help!!! Заранее благодарен ---===ППС===--- |
|
|
Дата: Апр 10, 2004 16:23:08 Документированного способа вызвать MessageBox точно нет. Есть пара функций, IoRaiseInformationalHardError и IoRaiseHardError, которые то ли мессагу в журнал событий пишут, то ли действительно какой-то попап юзеру показывают. Попробуй покопать. |
|
|
Дата: Апр 10, 2004 17:43:23 Four-F Спасибо!!! попробуем IoRaiseInformationalHardError... Про MessageBoxA@16 я упомянул для примера. На самом деле, мне требуются стандартные диалоги, GetWindowText?@?? и т.д. Т.е. надо каким-то образом установить контакт с пользователем, который даже и может не подозревает о сущ-ии DRV.Особенно важна возможность двухстороннего общения Конечно же я уже начал склонятся к побуждениям иметь в user mode свой процесс. Сразу же возникнет нужда дополнительной синхронизации, скрывать этот процесс. Так вот мне и ВАЖНО знать: можно ли как-то ухотриься в kernel mode или решать эту задачу в лоб. |
|
|
Дата: Апр 11, 2004 10:26:40 Сорри, если тут чего натуплю, поскольку в ринг0 сильно не лазил.. Но не лежат ли большинство ф-ций user32/gdi32 в win32k.sys? Фень Юань говорит, win32k имеет табличку _W32pServiceTable, а там указатели на системные ф-ции с идентификаторами => 1000h, Названия этих (недокументированных) ф-ций лежат в win32k.dbg: NtGdiXX, NtUserXX. |
|
|
Дата: Апр 11, 2004 11:30:24 Вот именно, все эти функции недокументированы, и могут различаться в разных версиях, как например структуры ETHREAD и EPROCESS. |
|
|
Дата: Апр 11, 2004 12:58:55 PavPS, я думаю тебе стоит пересмотреть архитектуру своей программы, т.к. создавать в ring-0 и обрабатывать различные диалоги - некорректно по определению. Если тебе действительно нужно какое-то взаимодействие с пользователем, то для этого использую ring-3 app. Которая и будет показывать диалоги, и взаимодействовать с драйвером (либо через DeviceIOControl который придется заставить работать, либо посредством, скажем, event-ов, если необходима какая-либо нотификация..) Если все, что требуется - это вывести на экран значение парочки переменных, то для этого юзают DbgPrint() обычно. |
|
|
Дата: Апр 11, 2004 15:14:42 Всем спасибо! 2 S_T_A_S_ Только что проверил по поводу win32k: в процесс System эта штука не проецируется, там , как полагается, есть только NtServiceTable, а вот, штука в том, что меня могут вызывать N потоков, т.к. я перехватываю кучу NtCall-ов, и, ксожалению вдобавок Io??? вызовов. И для меня важно по крайней мере хать какая-то документированность, т.к. важно чтобы Call на какие-то диалоги не зациклился и небыло бы StackOverflowError. Пожалуй да, придется use-ать ring-3 App. 2 Sten Хотя быть опекуном какого-то App of ring-3 удобно, но задача такая: живет дровина N дней без меня и не у меня, потом появляется хозяин-"я" и собирает инфу (как админ в банкомате), поэтому для этого нужно какие-то средства оповещения иметь: не SoftIce же ставить и общатся. А держать постоянно включеный процесс все же страшновато. Не все же чайники... Хотя, как и сказано выше было, Предется общаться именно так. |
|
|
Дата: Апр 11, 2004 16:17:04 Так ты в файл всё пиши: выделяй кусок памяти, складывай туда инфу и периодически сбрасывай на диск используя рабочий поток (work item). Если боишься, что до файла доберутся, то вообще в памяти всё держи, если конечно инфы не много и твоя система N дней без ребута живёт. А когда придешь, шлешь своей дровине контрол (можно с паролем) и пусть она сбрасывает всё на диск или ещё как те сообщает. |
|
|
Дата: Апр 11, 2004 16:32:36 Four-F Спасибо! Вообще странно..., что же я не догадался то??? Пожалуй покруче, чем ring-3. Уже начинаю пользовать... |
|
|
Дата: Апр 12, 2004 11:26:04 · Поправил: ssx насчет IopRaiseInformationalHardError(если оно все еще нужно): This routine performs the actual pop-up. It will called from either the hard-error thread, or a APC routine in a user thread after exiting the file system. |
|
|
Дата: Апр 12, 2004 16:18:54 MSDN (или DDK, как там его) уже почитал..:), но все равно спасибо... |
|
|
Дата: Апр 12, 2004 17:15:31 · Поправил: Four-F В DDK, и тем более в MSDN, про функции с префиксом p (private) не писАли, не пишут и писАть не будут. Это комментарий к исходнику ;) |
|
|
Дата: Апр 12, 2004 23:27:43 Черт! Виноват. Не разгледел IopRaiseInformationalHardError. Имел ввиду: From DDK: IoRaiseInformationalHardError The IoRaiseInformationalHardError routine sends a popup to the user, warning about a device I/O error that indicates why a user I/O request failed. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.056 |