ПАУЗА В ДРАЙВЕРЕ

Тема в разделе "WASM.NT.KERNEL", создана пользователем cou, 13 янв 2008.

  1. wasm_test

    wasm_test wasm test user

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

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Great
    Это вопрос не ко мне :)
    Человек предпочитает извращаться, мы ему помогаем, внося посильную лепту...
     
  3. cou

    cou New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    30
    угу, линковался из ntdll, после небольших исправлений установился драйвер и опять проверка диска C: D: E: F: G: :))) reboot + freese , вообщем неработает, как и c KeDelayExecutionThread.
     
  4. cou

    cou New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    30
    Должны, сеть недолжна работать, остальные тут не причем... насчет таймера интересно, код есть?
     
  5. cou

    cou New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    30
    А Вам уже скучно извращаться?) Ну прям все правильные такие... Не могу уже)
     
  6. cou

    cou New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    30
    Насчет извращений, узнал новые функции, О!
    ......
    ; invoke ZwYieldExecution
    invoke KeGetCurrentThread
    mov pkThread, eax
    invoke KeSetBasePriorityThread,pkThread,LOW_PRIORITY
    invoke KeSetPriorityThread,pkThread,LOW_PRIORITY
    DO_DELAY
    .....
    один х тормозит( увы...
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А енто как так =//

    А чо там писать то?
    Помоему тут все предельно ясно, но. Но! Я так и не понял что тебе нужно.. Опиши подробно какая именно пауза тебе нужна. При каких условиях. То есть какой IRQL, как должны обстоять дела с потоками и т.д. и т.п.

    конечно скучно:)
     
  8. cou

    cou New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    30
    Ситуация такова:
    попадает сюда пакет
    hookproc proc PacketHeader:lol: WORD, Packet:lol: WORD, PacketLength:WORD,
    RecvInterfaceIndex:WORD,SendInterfaceIndex:WORD,RecvLinkNextHop:lol: WORD,
    SendLinkNextHop:lol: WORD
    ; invoke ZwYieldExecution
    DO_DELAY
    ; invoke KeStallExecutionProcessor,500000
    mov eax,PF_PASS
    ret
    hookproc endp
    он должен пройти после небольшой задержки дальше в сеть, чтобы у меня в сети трафик растянулся...
    я делаю паузу макросом
    DO_DELAY MACRO
    mov eax, DELAY
    .while eax
    dec eax
    .endw
    ENDM
    соответственно тачка подвисает, CPU LOAD 100%
    пакет задерживается и уходит дальше, но работать то невозможно... а хочеться)
     
  9. cou

    cou New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    30
    Особо не судите о моем образе мышления, 3ий день изучаю ассемблер. :)
    Ну это конечно красиво - ассемблер, раньше delphi, c++, QBasic :)
     
  10. cou

    cou New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    30
    p.s.: но проблема Паузы в драйвере имеет место! Обыскал весь интернет, у большинства писателей CPU 50%- Пустой цикл. Но так нельзя... нужно искать выход...
     
  11. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ясно, тогда не понятно чем не устраивает обычное отправление потока в sleep - это KeDelayExecutionThread / ZwDelayExecution и другие. Поясни)
     
  12. cou

    cou New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    30
    Полный облом, виснет система( Меня конечно устраивали бы эти функции, но видимо т.к. драйвер сетевой... виснет...
    p.s. : с KeDelayExecutionThread уходит в перезагрузку... черный экран и ресет
    с ZwDelayExecution зависает , просто зависает, без BSOD'a просто мышь перестает шевелиться
     
  13. cou

    cou New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    30
    p.s. : возможно правда я параметры передаю не верно, вот посмотри, правильно?:
    Код (Text):
    1. local DelayTime:LARGE_INTEGER
    2.     mov DelayTime.HighPart, 0
    3.         or DelayTime.HighPart, -1
    4.         mov DelayTime.LowPart, -500000
    5.     invoke KeDelayExecutionThread,KernelMode,FALSE,addr DelayTime
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ну дык а IRQL то у тебя какой, товарищ? ;)
    Вот чтото печенкой чую что не пассив
     
  15. cou

    cou New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    30
    Пассив - актив, странно вы мыслите гражданин, какой же я товарищ Вам, Моисеев Вам Товарищ?(шутка)
    А где смотреть то IRQ?:)
     
  16. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Маленький эксперимент:
    Вставил KeDelayExecutionThread в свой обработчик сетевого траффика. Обработчик заведомо исправен, работает безупречно более года.
    На малых задержках (DelayTime.LowPart = -500000) никаких проблем.
    А если увеличить DelayTime.LowPart = -50000000, то получаю бсод....

    Я в сетевых делах не силён, но есть предположение: есть таймаут, в течение которого система ждёт реакции обработчика на запрос. Если обработчик может задержать обработку пакета, то необходимо дать системе знать, что запрос находится в состоянии обработки/pending. Т.е. какой-нибудь STATUS_PENDING.
    Это всего-лишь предположение...
     
  17. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    cou
    пассив это PASSIVE_LEVEL а не то, что ты подумал ;)
    KdPrint(("IRQL : 0x%x\n", KeGetCurrentIrql()));
    что-то мне кажется что больше еденицы..
     
  18. cou

    cou New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    30
    а в ассемблере как вывести ?8(
     
  19. cou

    cou New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    30
    Не работает. Говорил же...
     
  20. cou

    cou New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    30
    ууу, на работу пора, увидимся вечером, спасибо парни за помощь! Вместе веселее)