Как организовать параллельное чтение/запись

Тема в разделе "WASM.NT.KERNEL", создана пользователем tapa, 21 фев 2011.

  1. tapa

    tapa New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2010
    Сообщения:
    13
    привет. есть ndis protocol драйвер с очередями пакетов и ирп запросов на чтение.
    в юзер моде отдельным потоком выполняется постоянный вызов ReadFile.
    периодически возникает потребность в вызове WriteFile, но кое какая проблема..

    если очередь принятых пакетов пуста, то я возвращаю в обработчике irp_read STATUS_PENDING и драйвер "залипает" до приёма нового пакета.
    в обработчике нового пакета просматривается очередь ИРП запросов на чтение и если такие есть, то записываю в буфер полученные данные.
    затем, наконец, происходит обработка irp_write. и вопрос - как мне организовать параллельную работу чтения/записи?
    я думал о двух вариантах:
    1. если пакетов нет, то завершаем ирп запрос. тогда пройдёт WriteFile. но смущает то, что будут постоянные запросы юзер мод-драйвер
    2. в драйвере както организовать параллельность работы при помощи создания отдельных потоков.
    какие хорошие,проверенные решения существуют?:)
     
  2. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Вообще не понял проблемы. Для того, чтобы обработать следующий запрос (т.е. Write у тебя), совершенно не обязательно завершать предыдущий (в твоём случае это Read), а если у тебя в приложении Read и Write шлются из разных потоков, то вообще не вижу никаких препятствий для параллельной работы всей схемы. Объясни проблему подробнее, пока не очень понятно.