Здравствуйте, Alter_, Вы писали:
A_>Честно говоря думал, что нет в природе такого способа. Ан нет
Попробуй покопать вот в такую сторону:
A_>Експортируется из ntdll.dll и как следствие, работать будет только в семействе NT (NT4/2000/XP/etc.)
A_>По крайней мере OBJECT_BASIC_INFORMATION похоже на то, что нужно.
Спасибо за помощь! Интересная идея. Хотя, в принципе, вопрос отпал, так как я уже решил как обойтись без получения информации об аттрибуте открытия файла.
А суть вообще в следующем: написал приложение, которое работает с некой базой данных. БД имеет свой формат и является набором файлов. К базе данных делаются запросы. Количество запросов — очень большое, размер — маленький (десятки байт). При сетевой работе с БД, доступ осуществляется ОЧЕНЬ медленно. В результате, было решено создать модуль для кеширования сетевых файлов. Модуль перехватывает все обращения к CreateFile, CloseHandle, ReadFile, и кеширует файлы. Кеширование необходимо было сделать только для файлов c аттрибутом GENERIC_READ. При этом, определять аттрибут надо было как в перехваченой CreateFile, так и в ReadFile. Ситуация осложняется тем, что модуль кеширования должен работать корректно, даже при присоединении к процессу инородных модулей. (Мне, например, нужно использовать VTune, для оптимизации кеширования).
В принципе, на текущий момент вопрос о получении аттрибутов файла уже не столь актуален, так как я отказался от нахождения аттрибутов открытия при перехвате ReadFile.
Благодарю за помощь!