Синхронные и асинхронные irp

Тема в разделе "WASM.WIN32", создана пользователем marlboro, 9 ноя 2006.

  1. marlboro

    marlboro New Member

    Публикаций:
    0
    Регистрация:
    26 июн 2005
    Сообщения:
    35
    Вообщем есть драйвер, фильтрующий irp некоторого устройства. Так вот, в обработчике я хочу вычитать предыдущее значение прежде чем позволить нижнему драйверу записать новое. Для этого и нужно построение irp какое лучше выбрать? Имеет ли значение сколько я нахожусь в самом обработчике, если по любому оригинальный обработчик будет вызван только в конце цепочки?
     
  2. marlboro

    marlboro New Member

    Публикаций:
    0
    Регистрация:
    26 июн 2005
    Сообщения:
    35
    Поясняю, irp я строю для вычитывания значения
     
  3. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Путано написано.
    Как я понял:
    сверху приходит IRP устройству, ты его отправляешь вниз, ждешь результат обработки. Пока не дождался результата, ставишь новые IRP в очередь. Потом также последовательно отправляешь Irp с результатами обратно. Оно?
     
  4. marlboro

    marlboro New Member

    Публикаций:
    0
    Регистрация:
    26 июн 2005
    Сообщения:
    35
    Да я плохо объяснил. Я хочу мониторить дисковое устройство, при записи я хочу сохранить предыдушие значение секторов в файл, хранящийся на другом диске. Для этого я заменяю оригинальный обработчик на свой, который считывает згачения секторов(для этого и нужно построение irp), а потом передает управление оригинальному обработчику.
     
  5. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    По-любому нужно в своем обработчике делать очередь и синхронно ждать возврата своего Irp снизу, потому что гарантировать нужный порядок их обработки (сначала чтение, потом запись) никто не может.

    Если работаешь на passive level (по ходу дела так и есть?) пострадать могут только приложения и драйверы, которые используют асинхронный вывод. Остальные даже не заметят.
     
  6. marlboro

    marlboro New Member

    Публикаций:
    0
    Регистрация:
    26 июн 2005
    Сообщения:
    35
    Можно считать что с этим вопросом я разобрался: я создаю ворк итем и в нем делаю все что надо, и по сути большой разницы синхронный или асинхронный пакет нету. Тогда возникает следующий вопрос, что-нибудь гарантирует то, что смещение и длина в irp.Parameters.Write, кратны сектору или нет?