Re[7]: загрузка драйвера фильтра файловой системы
От: Valerio Россия linkedin.com/in/boronin
Дата: 19.05.03 15:07
Оценка: 2 (1)
V>>Если интересует, загрузился ли скажем FAT или NTFS — просто попробуйте по имени открыть соотв. драйвер:
V>>
V>>    RtlInitUnicodeString(&uniString, L"\\Fat");
V>>    ntStatus = IoGetDeviceObjectPointer(
V>>            &uniString,
V>>            FILE_READ_ATTRIBUTES,
V>>            &fileObject,
V>>            &fatDeviceObject);
V>>


I>такой вариант имеет недостаток он дает указатель не на девайс, а на самый верхний фильтр к нему прицепленный

на XP для этого есть спец ф-ия IoGetLowerDeviceObject

I>следовательно я не могу получить список всех подобных (принадлежащих тому же драйверу) девайсов в системе

все можно, если задаться целью, опять же на XP для этого есть другая ф-я IoEnumerateDeviceObjectList

у себя мне хватило IoGetDeviceObjectPointer IoCreateDevice IoAttachDeviceToDeviceStack
имея device object всегда можно получить DriverObject — одно из полей DO

V>>список всех OS-supplied файловых драйверов в системе можно увидеть с помощью WinObj в разделе \FileSystem

I>а как можно по имени драйвера получить его DRIVER_OBJECT ?
выше вызываем IoGetDeviceObjectPointer и получаем fileObject, если хватает прав
потом fileObject->DeviceObject->DriverObject->DriverName?

V>>но если Вам все же нужен список устройств, то, в принципе, если не особо напрягаться, возьмите код из filemon и так же как там, в цикле приаттачевайтесь по букве к каждому диску (\\DosDevices\\A:, ...\\DosDevices\\Z.


I>этот вариант я имею в виду

I>и все же как получить список всех DRIVER_OBJECT в системе ?

Кстати совсем забыл, Вам можно получить список всех драйверов в системе через NtQueryInformation — подробности на сайте Сергея Васкецова вполне могут быть или в известных книгах (ссылки на них там же). Соотв. получив список загруженных драйверов, можно их опрашивать на предмет поиска в DeviceObject->DeviceType одного из значений FILE_DEVICE_XXX_FILE_SYSTEM (FILE_DEVICE_DISK_FILE_SYSTEM, FILE_DEVICE_CD_ROM_FILE_SYSTEM, etc.)

доп-но проверку по полю Characteristics можно проводить (флаг FILE_REMOTE_DEVICE для сетевых устройств например)
и таким образом получите список всех файловых драйверов
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.