Здравствуйте, isolp, Вы писали:
I>Здравствуйте, Valerio, Вы писали:
V>>> RtlInitUnicodeString(&uniString, L"\\Fat"); V>>> ntStatus = IoGetDeviceObjectPointer( V>>> &uniString, V>>> FILE_READ_ATTRIBUTES, V>>> &fileObject, V>>> &fatDeviceObject);
I>а на сколько надежно использование строк типа L"\\Fat", L"\\Ntfs" и т.д. ? I>т.е. какова вероятность, что эти имена изменятся после очередного сервис пака ?
это зависит от МС конечно
но не думаю, что они будут без серьезных причин менять такие базовые вещи,
у них самих код на эти имена заточен прилично ИМХО
I>>>такой вариант имеет недостаток он дает указатель не на девайс, а на самый верхний фильтр к нему прицепленный V>>на XP для этого есть спец ф-ия IoGetLowerDeviceObject
I>>>следовательно я не могу получить список всех подобных (принадлежащих тому же драйверу) девайсов в системе V>>все можно, если задаться целью, опять же на XP для этого есть другая ф-я IoEnumerateDeviceObjectList
I>а на w2k ? I>и еще. есть ли способ получить DRIVER_OBJECT по имени драйвера ?
я же только что написал как это делается,
из IoGetDeviceObjectPointer получаете fileObject и через него
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.