Для синхронных "сигналов" из драйвера в пользоваqтельский режим обычно рекомендуют LPC. Посмотрел - LPC недокументирована в Windows XP, заказчик затрахает весь мозг - почему использую недокументированный API? Подумал о Pipe. В чем может быть подводные камни Pipe для данной цели?
Да ни в чём по сути, кроме того, что они медлены по сравнению, скажем, с APC той же, ну или с секциями.
Кажется, нашел существенный недостаток в pipe (относительно LPC). Если есть несколько "писателей", будет сложно синхронизировать верный ответ от юзермодной компоненты к конкретному "писателю".
И где тут проблема? Шли данные пакетами, в каждом пакете-запросе указывай ID писателя, в каждом ответе указывай, писателю с каким ID отвечаешь. Синхронизация тут как раз сложностей не составляет при правильной реализации, проблему я вижу в скорости только.
katrus APC не желательно для применения, потенциальный способ исчерпать весь пул. x64 Попробуйте выполнять в цикле добавление апк в очередь остановленного потока. В конце концов ось рухнет, на XP в юзермоде на это уходит несколько секунд при 512M.
LPC обсуждать не интересно ибо недокументировано, плюс, если правильно помню, там ограничение на размер пакета, т.е. реально большие объёмы данных гонять проблематично будет. И непонятно вообще зачем тебе LPC при наличии кучи других (полу-)документированных возможностей?