Вывод текста на экран...

Тема в разделе "WASM.NT.KERNEL", создана пользователем MARUSKA, 8 авг 2007.

  1. MARUSKA

    MARUSKA New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    16
    Да я видела... не стала исправлять... сорри...
    Так всё-таки, то есть мне нужно писать какой-то особый экзешник...
    С вызывом ZwLoadDriver или ZwSetSystemInformation(SysLoadAndCallImage). Не могли бы подробнее сказать по поводу экзешника и ZwSetSystemInformation(SysLoadAndCallImage) хотя бы примерно что там надо писать...
    Очень смешно... тут скоро человека накроют...
    Тогда если получится с ZwSetSystemInformation(SysLoadAndCallImage) опробую Ваш код Mr. Great уж просто ужас как хочется посмотреть.

    Код (Text):
    1.               // Initialization
    2.         InbvAcquireDisplayOwnership( );
    3.         InbvResetDisplay( );
    4.         InbvSolidColorFill(0,0,639,479,4); // make the screen blue
    5.         InbvSetTextColor(15);
    6.         InbvInstallDisplayStringFilter((INBV_DISPLAY_STRING_FILTER)NULL);
    7.        
    8.         bDisplayStringEnabled = InbvEnableDisplayString(TRUE);     // enable display string
    9.        
    10.         InbvSetScrollRegion(0,0,639,479);  // set to use entire screen
    11.  
    12.         // Display string
    13.         InbvDisplayString("Hello, World!");
     
  2. MARUSKA

    MARUSKA New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    16
    У меня при компиляции ошибку выдаёт:

    driver.c(20) : error C2065: 'INBV_DISPLAY_STRING_FILTER' : undeclared identifier
    driver.c(20) : error C2064: term does not evaluate to a function
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    MARUSKA
    забей и напиши просто InbvInstallDisplayStringFilter(NULL);
    каст для красоты стоит.

    зы. ну попробуй.. но возврата обратно не будет) только ребут.
     
  4. MARUSKA

    MARUSKA New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    16
    Не будет!!! ((((((((((
    Great а есть что-нибудь по поводу ZwSetSystemInformation(SysLoadAndCallImage)?
     
  5. pushick

    pushick New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2007
    Сообщения:
    95
    MARUSKA, я чего то тебя не понимаю. Это функция с таким параметром, загружает драйвер. Но никаким образом она тебе ничего на экран не выведет. Ну разве что кроме гипотетического БСОДа :)

    Выводить из драйвера на экран можно в момент Boot через ZwDisplayString (на таком синеньком, сереньком экранчике), либо все время через DbgPrint. А что предлагает Great есть очень круто, но к сожалению для тебя полностью не удовлетворяюще условиям, поскольку после таких извратов, чтобы дальше нормально работать, требуется reset. Интересная получиться курсовая - запустил драйвер и после него обязательно ресет надо делать. Я бы не принял ни в какую :)

    Вывести информацию из драйвера надо? Ну так, ты создай обыкновенное юзер мод приложение. Поправь свой драйвер, добавь туда IOCTL код, который будет возвращать в юзермод буфер с данными, которые тебе надо вывести. А уж в юзермоде можешь их хоть аршинными буквами вывести через весь экран. А то получается знания отсутствуют, а потребности аля давайте мне что-то типа SoftIce c его графикой.
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Короче если очень хочется выводить прямо из драйвера, доставляй пользовательскую APC и делай в ней все, что душе угодно. Только не забудь буфер, который выводить соберешься, отмапировать в юзермодное АП вместе с кодом APC
     
  7. pushick

    pushick New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2007
    Сообщения:
    95
    Great

    Ты чего? Думаешь она это осилит? =)
     
  8. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    При особом желании почему бы и нет. Рутковская же осилила... ;)

    Вообще, я так и не услышал из уст авторши какого именно вывода информации требует курсовая. Сомневаюсь, что ей нужно сделать что-то подобное айсу. Скорее всего изначально это звучало так: "Вывести на экран информацию, возвращаемую драйвером"...
     
  9. MARUSKA

    MARUSKA New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    16
    pushick усё врубила ZwDisplayString...
    Посмотрим....))))))))))))))))))))))))))))))))))))))))))))))))))))))
     
  10. MARUSKA

    MARUSKA New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    16
    Да Great очень похоже на абраааа-кадабра ууу :)
    Да нет просто у меня такая задача, при загрузке грузится мой драйвер пользователю дают 10 секунд (обратный отсчёт) если нажмёт Esc загрузка продолжится если Enter выведет на экран юникодовскую строку.
    Я примерно поняла, и мне написали работу с устройством клавиатуры, а вывод на экран отсчёта и самой строки сделаешь сама.
    Сейчас у меня две части из трёх:
    Обработчик клавиатуры.
    Вывод строки.

    Как сделать обратный отсчёт?
     
  11. MARUSKA

    MARUSKA New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    16
    Вот посмотрите код, нашла...
    Код (Text):
    1. LARGE_INTEGER i;
    2. LARGE_INTEGER iTime;
    3. UNICODE_STRING WString;
    4.  
    5. iTime.QuadPart = -10000000;
    6. RtlInitUnicodeString (&WString, L"Stroka...\n");
    7.  
    8. for(i = 0; i < 10; i++)
    9. {
    10.       NtDelayExecution(FALSE, &iTime);
    11.       ZwDisplayString(&WString);//задержка в 1 секунду
    12. }
    Код выводит одну и туже строку в столбик (10 раз)...
    Возможно ли переделать его так чтобы выводилось в одну строчку и шли цифры с секундным интервалом?
     
  12. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    вообщето на форме не преветствуется много жирных букв, много одинаковых знаков улыбок, это плохая манера разговора
    с данной функцией не не работал, но, попробуй вместо \n (переход на на новую строку) поставить \r (возврат каретки) или вообще убрать (в данном случае может будет в одну строку)
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    задержка слегка в другом месте ) в первой строчке

    Да.. выводи примерно так:

    Код (Text):
    1. char aBuffer[1024];
    2. ANSI_STRING AnsiString;
    3. UNICODE_STRING UnicodeString;
    4. int i;
    5. LARGE_INTEGER Time;
    6.  
    7. Time.QuadPart = -10000000;
    8.  
    9. for( i=10;i>=0; i-- ) {
    10.   sprintf( aBuffer, "%2d seconds remaining...  \r", i );
    11.   RtlInitAnsiString( &AnsiString, aBuffer );
    12.   RtlAnsiStringToUnicodeString( &UnicodeString, &AnsiString, TRUE );
    13.   ZwDisplayString( &UnicodeString );
    14.   RtlFreeUnicodeString( &UnicodeString );
    15.   NtDelayExecution( FALSE, &Time );
    16. }
     
  14. MARUSKA

    MARUSKA New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    16
    Great счас попробую...
    Спасибки тебе огромное, за твои старания... Может угостить пивом?
    Ну и чё там делает RtlFreeUnicodeString( &UnicodeString ); которую ты так бесжалостно стёр из моего исходника?