Да я видела... не стала исправлять... сорри... Так всё-таки, то есть мне нужно писать какой-то особый экзешник... С вызывом ZwLoadDriver или ZwSetSystemInformation(SysLoadAndCallImage). Не могли бы подробнее сказать по поводу экзешника и ZwSetSystemInformation(SysLoadAndCallImage) хотя бы примерно что там надо писать... Очень смешно... тут скоро человека накроют... Тогда если получится с ZwSetSystemInformation(SysLoadAndCallImage) опробую Ваш код Mr. Great уж просто ужас как хочется посмотреть. Код (Text): // Initialization InbvAcquireDisplayOwnership( ); InbvResetDisplay( ); InbvSolidColorFill(0,0,639,479,4); // make the screen blue InbvSetTextColor(15); InbvInstallDisplayStringFilter((INBV_DISPLAY_STRING_FILTER)NULL); bDisplayStringEnabled = InbvEnableDisplayString(TRUE); // enable display string InbvSetScrollRegion(0,0,639,479); // set to use entire screen // Display string InbvDisplayString("Hello, World!");
У меня при компиляции ошибку выдаёт: driver.c(20) : error C2065: 'INBV_DISPLAY_STRING_FILTER' : undeclared identifier driver.c(20) : error C2064: term does not evaluate to a function
MARUSKA забей и напиши просто InbvInstallDisplayStringFilter(NULL); каст для красоты стоит. зы. ну попробуй.. но возврата обратно не будет) только ребут.
Не будет!!! (((((((((( Great а есть что-нибудь по поводу ZwSetSystemInformation(SysLoadAndCallImage)?
MARUSKA, я чего то тебя не понимаю. Это функция с таким параметром, загружает драйвер. Но никаким образом она тебе ничего на экран не выведет. Ну разве что кроме гипотетического БСОДа Выводить из драйвера на экран можно в момент Boot через ZwDisplayString (на таком синеньком, сереньком экранчике), либо все время через DbgPrint. А что предлагает Great есть очень круто, но к сожалению для тебя полностью не удовлетворяюще условиям, поскольку после таких извратов, чтобы дальше нормально работать, требуется reset. Интересная получиться курсовая - запустил драйвер и после него обязательно ресет надо делать. Я бы не принял ни в какую Вывести информацию из драйвера надо? Ну так, ты создай обыкновенное юзер мод приложение. Поправь свой драйвер, добавь туда IOCTL код, который будет возвращать в юзермод буфер с данными, которые тебе надо вывести. А уж в юзермоде можешь их хоть аршинными буквами вывести через весь экран. А то получается знания отсутствуют, а потребности аля давайте мне что-то типа SoftIce c его графикой.
Короче если очень хочется выводить прямо из драйвера, доставляй пользовательскую APC и делай в ней все, что душе угодно. Только не забудь буфер, который выводить соберешься, отмапировать в юзермодное АП вместе с кодом APC
При особом желании почему бы и нет. Рутковская же осилила... Вообще, я так и не услышал из уст авторши какого именно вывода информации требует курсовая. Сомневаюсь, что ей нужно сделать что-то подобное айсу. Скорее всего изначально это звучало так: "Вывести на экран информацию, возвращаемую драйвером"...
pushick усё врубила ZwDisplayString... Посмотрим....))))))))))))))))))))))))))))))))))))))))))))))))))))))
Да Great очень похоже на абраааа-кадабра ууу Да нет просто у меня такая задача, при загрузке грузится мой драйвер пользователю дают 10 секунд (обратный отсчёт) если нажмёт Esc загрузка продолжится если Enter выведет на экран юникодовскую строку. Я примерно поняла, и мне написали работу с устройством клавиатуры, а вывод на экран отсчёта и самой строки сделаешь сама. Сейчас у меня две части из трёх: Обработчик клавиатуры. Вывод строки. Как сделать обратный отсчёт?
Вот посмотрите код, нашла... Код (Text): LARGE_INTEGER i; LARGE_INTEGER iTime; UNICODE_STRING WString; iTime.QuadPart = -10000000; RtlInitUnicodeString (&WString, L"Stroka...\n"); for(i = 0; i < 10; i++) { NtDelayExecution(FALSE, &iTime); ZwDisplayString(&WString);//задержка в 1 секунду } Код выводит одну и туже строку в столбик (10 раз)... Возможно ли переделать его так чтобы выводилось в одну строчку и шли цифры с секундным интервалом?
вообщето на форме не преветствуется много жирных букв, много одинаковых знаков улыбок, это плохая манера разговора с данной функцией не не работал, но, попробуй вместо \n (переход на на новую строку) поставить \r (возврат каретки) или вообще убрать (в данном случае может будет в одну строку)
задержка слегка в другом месте ) в первой строчке Да.. выводи примерно так: Код (Text): char aBuffer[1024]; ANSI_STRING AnsiString; UNICODE_STRING UnicodeString; int i; LARGE_INTEGER Time; Time.QuadPart = -10000000; for( i=10;i>=0; i-- ) { sprintf( aBuffer, "%2d seconds remaining... \r", i ); RtlInitAnsiString( &AnsiString, aBuffer ); RtlAnsiStringToUnicodeString( &UnicodeString, &AnsiString, TRUE ); ZwDisplayString( &UnicodeString ); RtlFreeUnicodeString( &UnicodeString ); NtDelayExecution( FALSE, &Time ); }
Great счас попробую... Спасибки тебе огромное, за твои старания... Может угостить пивом? Ну и чё там делает RtlFreeUnicodeString( &UnicodeString ); которую ты так бесжалостно стёр из моего исходника?