Доброго времени суток!!! Задача у меня следующая: фильтровать запросы на запись на определенный диск(т.е. сделать диск только на чтение) в связи с этим возникли кое какие вопросы: 1. Наглядный примеры для этого diskmon и filemon. На сколько я понимаю мне идеально подходит diskmon, но большинство программистов для этих целей используют именно filemon(для контроля доступа на диски) Время на уровне diskmon более критично по сравнению с filemon, в этом вся причина? Если я буду перехватывать disk.sys, не затормозит ли это существенно всю систему? Хотелось бы услышать мнение wasmа-сообщества 2. Я уже немного начал разбирать diskmon, так вот я должен перехватить IRP_MJ_WRITE и IRP_MJ_FLUSH_BUFFERS(через них идет запись). IRP_MJ_WRITE я посто завершаю Код (Text): mov (_IRP PTR [ecx]).IoStatus.Status, STATUS_MORE_PROCESSING_REQUIRED and (_IRP PTR [ecx]).IoStatus.Information, 0 fastcall IofCompleteRequest, ecx, IO_NO_INCREMENT mov eax, STATUS_MORE_PROCESSING_REQUIRED Правильно ли я завершаю? как обработать IRP_MJ_FLUSH_BUFFERS?
STATUS_MORE_PROCESSING_REQUIRED имеет смысл только в Completion Routine. http://support.microsoft.com/kb/320275 http://support.microsoft.com/kb/326315/
Попробывал - получается большая задержка перед выводом сообщения "Доступ запрещен", а с STATUS_MORE_PROCESSING_REQUIRED, сразу "не удалось, имеются дополнительные параметры" )) Почему возможна такая задержка? Что думаете по поводу других пунктов? Стоит ли подниматься по стеку драйверов еще выше?
Что бы использовать STATUS_MORE_PROCESSING_REQUIRED, мне нужно установить процедуру завершения и в ней вызывать IoFreeIrp, чтобы освободить ресурсы системы???
Нет, т.к. IRP не твой. Обработка IRP - сложный вопрос. Настоятельно рекомендую в течении недели ( не меньше ) читать: "Драйверы режима ядра: Часть 15 : Жизненный цикл IRP" http://www.wasm.ru/print.php?article=drvw2k15 Сорри за самопиар, но по-русски ничего лучшего нет. "Secrets of the Universe Revealed! - How NT Handles I/O Completion" http://www.osronline.com/article.cfm?id=83 "Proper Completion -- Resubmitting IRPs from within a Completion Routine" http://www.osronline.com/article.cfm?article=391 На osronline.com (требуется регистрация). Документаця IFS Kit: "How Windows NT Handles I/O Completion" "Different ways of handling IRPs" http://support.microsoft.com/kb/320275 http://support.microsoft.com/kb/326315/ Ну и вообще всё, что подвернётся по этой теме.
кстати давно хотел спросить, как вы обходите это: You Must Subscribe to The NT Insider To Read This Article или все кроме меня получают увесистые буки "удобные для чтения в самолетах"?
z0mailbox нормально зарегестрировался, читаю теперь Four-F - спасибо за материал По поводу filemon что скажите?