Оптимизация драйверов

Тема в разделе "WASM.NT.KERNEL", создана пользователем Ox8BFF55, 27 янв 2010.

  1. Ox8BFF55

    Ox8BFF55 New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2009
    Сообщения:
    181
    Интересует вопрос что можно посмотреть для оптимизации USB, NDIS? Может пример или варианты ускорения...

    Wdf фреймворк может тормазить? То и есть существенно?

    Общая логика:
    NDIS - постоянно вычитывает данные из USB драйвера, в отдельном потоке, то и есть крутится в цикле...
    Запись происходит стандартным способом, то и есть NDIS обращается к USB драйверу, ну а USB уже дальше по Endpoint. Да NDIS и USB связанны через фреймворк, так что может это немного тормазит??
    Так же USB каждую секунду(раз в секунду) опрашивает состояние устройства, по контрольном каналу. Но ведь Endpoint'ы независимы друг от друга, так что это наверное не влияет...


    П.С. П.С. Я уже создавал тему, но наверное не правельнно выразил свои мысли....
     
  2. Dian

    Dian Member

    Публикаций:
    0
    Регистрация:
    19 июн 2008
    Сообщения:
    222
    апстену его, апстену!

    Это уже по определению очень быстро работать не может
     
  3. Ox8BFF55

    Ox8BFF55 New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2009
    Сообщения:
    181
    Работает все на
    - Контрольный endpoint(секунду(раз в секунду) опрашивает состояние устройства) - оптимизация не нужна
    - Сетевой (in/out) endpoint.
    - Еще есть для передачи данных , но его пока не трогаю, так как оптимизация ненужна

    Так вот сетевой (NDIS) в отдельном потоке делает N(32) запросов на получения данных от USB драйвера. USB делает запросы(по запросу от NDIS) уже нижестаящему драйверу. То и есть после получения ответа происходит NdisMIndicateReceivePacket и посылается следующий запрос на получения данных.

    По поводу отправки данных, то здесь проще. NDIS получает в диспатчер запрос на отправку данных, передает USB, Ну а USB передает нижестаящему.

    - Может ли Wdf фреймворк давать серьъездные тормаза?
    - Может имеет смысл увеличить количество endpoint?

    Какие еще могут быть затаки?
    В какую область моно покапать?