Да, при этом совсем забыл, а если обработка IRP происходит на повышенных IRQL тогда вообще придется создавать дополнительные очереди IRP, откладывать операции и выполнять их при обработке DeviceIoControl, при чем неизвестно что будет с тем кто будет ожидать.
1) Драйвер: Получил IRP
2) Драйвер: Пометил его как обрабатываемый
3) Драйвер: Сохранил в файл.
4) Драйвер: Вернул управление.
5) UserMode: взял из файла изменил и сохранил обратно.
6) UserMode: вызвал DeviceIoControl
7) Драйвер: Изменил данные отложенного IRP и передал ниже.
Наверняка не получиться